Come funziona il DNS con il mio endpoint VPN Client di AWS?

8 minuti di lettura
0

Sto creando un endpoint VPN Client di AWS. Devo specificare i server DNS che i miei utenti finali devono richiedere per la risoluzione dei nomi di dominio.

Risoluzione

Nota: se ricevi errori durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), assicurati di utilizzare la versione più recente di AWS CLI.

Puoi specificare gli indirizzi IP dei server DNS quando crei un nuovo endpoint Client VPN. Utilizza la Console di gestione AWS, il comando AWS CLI create-client-vpn-endpoint o l'API o CreateClientVpnEndpoint per specificare gli indirizzi IP nel parametro "Indirizzo IP del server DNS". Oppure, modifica un endpoint Client VPN esistente. Utilizza la Console di gestione AWS, il comando AWS CLI modify-client-vpn-endpoint o l'API ModifyClientVpnEndpoint per modificare il parametro "Indirizzo IP del server DNS".

Configurare il parametro "Indirizzo IP del server DNS"

Per un'elevata disponibilità, è consigliabile specificare due server DNS. Se il server DNS primario diventa irraggiungibile, il dispositivo dell'utente finale invia nuovamente la query al server DNS secondario.

Nota: se il server DNS primario risponde con SERVFAIL, la richiesta DNS non viene inviata nuovamente al server DNS secondario.

Verifica che gli utenti finali possano raggiungere entrambi i server DNS specificati dopo la connessione all'endpoint Client VPN. Se i server DNS non sono raggiungibili, le richieste DNS potrebbero fallire e causare problemi di connettività.

Il parametro "Indirizzo IP del server DNS" è facoltativo. Se non è specificato alcun server DNS, l'indirizzo IP DNS configurato sul dispositivo dell'utente finale viene utilizzato per risolvere le query DNS.

Se il tuo server DNS Client VPN è l'endpoint in entrata AmazonProvidedDNS o Amazon Route 53 Resolver, segui queste linee guida:

  • È possibile risolvere i record di risorse della zona ospitata privata di Route 53 associata al cloud privato virtuale (VPC).
  • Se il "DNS privato" è attivato, i nomi host pubblici di Amazon RDS accessibili dall'appuntamento dell'interfaccia VPN vengono risolti in un indirizzo IP privato. Questo vale anche per i nomi degli endpoint dei servizi AWS accessibili dall'endpoint dell'interfaccia VPC.
    Nota: assicurati che "Risoluzione DNS" e "Nomi host DNS" siano abilitati per il VPC associato.

Ricorda che l'endpoint Client VPN utilizza il NAT di origine per connettersi alle risorse nei VPC associati.

Dopo che il dispositivo client ha stabilito il tunnel Client VPN, viene applicato il parametro "Indirizzo IP del server DNS". Si applica sia che si tratti di full-tunnel o split-tunnel:

  • Full-tunnel: dopo che il dispositivo client ha stabilito il tunnel, alla tabella di routing del dispositivo dell'utente finale viene aggiunta una route per tutto il traffico attraverso il tunnel VPN. Questo fa sì che tutto il traffico (incluso il traffico DNS) venga indirizzato attraverso il tunnel Client VPN. Se il VPC associato non dispone di una route per raggiungere i server DNS, la ricerca ha esito negativo.
  • Split-tunnel: quando viene creato il tunnel Client VPN, le route nella tabella di routing di Client VPN vengono aggiunte alla tabella di routing del dispositivo dell'utente finale. Se riesci a raggiungere il server DNS tramite il VPC associato, aggiungi la route degli indirizzi IP del server DNS nella tabella di routing di Client VPN.

Gli esempi seguenti dimostrano come funziona il DNS in alcuni scenari comuni. Questi esempi si applicano agli ambienti Windows e Linux. Tuttavia, in un ambiente Linux, gli esempi funzionano come descritto solo se la macchina host dell'utente finale utilizza l'impostazione di rete generica.

Scenario 1: Full-tunnel con il parametro "Indirizzo IP del server DNS" disabilitato

Esempio 1 di configurazione:

  • CIDR IPv4 del client dell'utente finale = 192.168.0.0/16.
  • CIDR VPC dell'endpoint Client VPN = 10.123.0.0/16.
  • Indirizzo IP del server DNS locale = 192.168.1.1.
  • Il parametro "Indirizzo IP del server DNS" è disabilitato. Non sono stati specificati indirizzi IP del server DNS.

Poiché il parametro "Indirizzo IP del server DNS" è disabilitato, la macchina host dell'utente finale utilizza il server DNS locale per risolvere le query DNS.

Questo Client VPN è configurato in modalità full-tunnel. Viene aggiunto un percorso che punta all'adattatore virtuale per inviare tutto il traffico sulla VPN (destinazione 0/1 su utun1). Tuttavia, il traffico DNS continua a non passare attraverso la VPN, poiché il parametro "Indirizzo IP del server DNS" non è configurato. Il traffico DNS tra il client e il server DNS rimane locale. La macchina client ha già una route statica preferita verso l'IP del server DNS locale (dest. 192.168.1.1/32 su en0) per rendere raggiungibile il resolver DNS. Dopo che il nome di dominio è stato risolto sul rispettivo IP, il traffico dell'applicazione verso l'IP risolto viaggia attraverso il tunnel VPN.

Frammento di esempio:

$ cat /etc/resolv.conf | grep nameservernameserver 192.168.1.1

$ netstat -nr -f inet | grep -E 'utun1|192.168.1.1'0/1                192.168.0.1        UGSc           16        0   utun1
192.168.1.1/32     link#4             UCS             1        0     en0
(...)

$ dig amazon.com;; ANSWER SECTION:
amazon.com.        32    IN    A    176.32.98.166
;; SERVER: 192.168.1.1#53(192.168.1.1)
(...)

Esempio 2 di configurazione:

  • CIDR IPv4 del client dell'utente finale = 192.168.0.0/16.
  • CIDR VPC dell'endpoint Client VPN = 10.123.0.0/16.
  • L'indirizzo IP del server DNS locale è impostato su IP pubblico = 8.8.8.8.
  • Il parametro "Indirizzo IP del server DNS" è disabilitato. Non sono stati specificati indirizzi IP del server DNS.

In questo esempio, invece di utilizzare il server DNS locale su 198.168.1.1., il client utilizza l'indirizzo DNS pubblico su 8.8.8.8. Poiché non esiste una route statica per 8.8.8.8 che utilizza en0, questo traffico viaggia attraverso il tunnel Client VPN. Se l'endpoint Client VPN non è configurato per accedere a Internet, il DNS pubblico (8.8.8.8) non è raggiungibile. Quindi, le richieste di query scadono.

$ cat /etc/resolv.conf | grep nameservernameserver 8.8.8.8

$ netstat -nr -f inet | grep -E 'utun1|8.8.8.8'0/1                192.168.0.1      UGSc            5        0   utun1

$ dig amazon.com(...)
;; connection timed out; no servers could be reached

Scenario 2: Split-tunnel con il parametro "Indirizzo IP del server DNS" abilitato

Esempio di configurazione:

  • CIDR IPv4 del client dell'utente finale = 192.168.0.0/16.
  • CIDR VPC dell'endpoint Client VPN = 10.123.0.0/16.
  • Il parametro "Indirizzo IP del server DNS" è abilitato e impostato su 10.10.1.228 e 10.10.0.43. Questi indirizzi IP rappresentano gli indirizzi IP degli endpoint in ingresso del Route 53 Resolver che si trovano in un altro VPC (10.10.0.0/16). Gli indirizzi IP si connettono agli endpoint Client VPN associati al VPC con un gateway di transito.
  • Il VPC associato ha "Nomi host DNS" e "Supporto DNS" abilitati e ha una zona ospitata privata Route 53 associata (example.local).

Questo Client VPN è configurato in modalità split-tunnel. Le route nella tabella di routing di Client VPN vengono aggiunte alla tabella di routing della macchina host dell'utente finale:

$ netstat -nr -f inet | grep utun1(...)
10.10/16           192.168.0.1        UGSc            2        0   utun1 # Route 53 Resolver inbound endpoints VPC CIDR
10.123/16          192.168.0.1        UGSc            0        0   utun1 # Client VPN VPC CIDR
(...)

In questo esempio, viene attivato il parametro "Indirizzo IP del server DNS". 10.10.1.228 e 10.10.0.43 sono configurati come server DNS. Quando il client stabilisce il tunnel VPN, i parametri del server DNS vengono inviati alla macchina host dell'utente finale.

$ cat /etc/resolv.conf | grep nameservernameserver 10.10.1.228 # Primary DNS server
nameserver 10.10.0.43 # Secondary DNS server

Una query DNS emessa dalla macchina client attraversa il tunnel VPN fino al VPC del Client VPN. Successivamente, la richiesta DNS viene inoltrata all'endpoint Route 53 Resolver tramite un gateway di transito. Dopo che il dominio è stato risolto in un indirizzo IP, anche il traffico dell'applicazione attraversa il tunnel VPN stabilito. Ciò si verifica a condizione che l'indirizzo IP di destinazione risolto corrisponda a una route della tabella di routing degli endpoint di Client VPN.

Con questa configurazione, gli utenti finali possono risolvere i nomi di dominio esterni che utilizzano una risoluzione DNS standard. Questa configurazione risolve anche i record delle zone ospitate private associate al VPC di Route 53 Resolver. Risolve anche i nomi DNS degli endpoint di interfaccia e i nomi host DNS pubblici EC2.

$ dig amazon.com;; ANSWER SECTION:
amazon.com.        8    IN    A    176.32.103.205
;; SERVER: 10.10.1.228#53(10.10.1.228)
(...)

$ dig test.example.local # Route 53 private hosted zone record ;; ANSWER SECTION:
test.example.local. 10 IN A 10.123.2.1
;; SERVER: 10.10.1.228#53(10.10.1.228)
(...)

$ dig ec2.ap-southeast-2.amazonaws.com # VPC interface endpoint to EC2 service in Route 53 Resolver VPC;; ANSWER SECTION:
ec2.ap-southeast-2.amazonaws.com. 60 IN    A    10.10.0.33
;; SERVER: 10.10.1.228#53(10.10.1.228)
(...)

$ dig ec2-13-211-254-134.ap-southeast-2.compute.amazonaws.com # EC2 instance public DNS hostname running in Route 53 Resolver VPC;; ANSWER SECTION:
ec2-13-211-254-134.ap-southeast-2.compute.amazonaws.com. 20 IN A 10.10.1.11
;; SERVER: 10.10.1.228#53(10.10.1.228)
(...)
AWS UFFICIALE
AWS UFFICIALEAggiornata 8 mesi fa