Salta al contenuto

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

7 minuti di lettura
0

Ho intenzione di configurare un endpoint VPN Client di AWS. Devo specificare i server DNS utilizzati dagli utenti finali per risolvere i nomi di dominio.

Risoluzione

Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Quando crei un nuovo endpoint VPN Client, specifica l'indirizzo IP di un server DNS. Utilizza la Console di gestione AWS, il comando AWS CLI create-client-vpn-endpoint o l'operazione API o CreateClientVpnEndpoint per specificare gli indirizzi IP nel parametro "DNS Server IP address". Utilizza la console, il comando modify-client-vpn-endpoint o l'operazione API ModifyClientVpnEndpoint per modificare un endpoint esistente.

Configura il parametro relativo all'indirizzo IP del server DNS ("DNS Server IP address")

Per un' alta disponibilità, specificare l'indirizzo IP di due server DNS. Se il server DNS primario non è raggiungibile, il client tenta di inviare 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 avere esito negativo e causare problemi di connettività.

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

Se il server DNS di VPN Client è il server AmazonProvidedDNS o l'endpoint in ingresso del risolutore Amazon Route 53, segui queste linee guida:

  • Puoi risolvere i record delle risorse della zona ospitata privata di Route 53 associata ad Amazon Virtual Private Cloud (Amazon VPC).
  • Se è attivato un DNS privato, i nomi host pubblici di Amazon RDS accessibili dall'endpoint di interfaccia VPN si risolvono in un indirizzo IP privato. Questo vale anche per i nomi degli endpoint dei servizi AWS accessibili dall'endpoint di interfaccia Amazon VPC.
  • Verifica che la risoluzione DNS e i nomi host DNS siano attivati per l'Amazon VPC associato.

L'endpoint VPN Client utilizza il NAT di origine per connettersi alle risorse nell'Amazon VPC associato.

Comportamento del DNS in base al tipo di tunnel

Dopo che il dispositivo client ha stabilito il tunnel VPN Client, il parametro "DNS Server IP address" viene applicato al full-tunnel o allo split-tunnel:

  • Full-tunnel: il client aggiunge una route per tutto il traffico attraverso il tunnel VPN. Tutto il traffico viene indirizzato attraverso il tunnel, comprese le query DNS. Se Amazon VPC non ha una route verso i server DNS, le ricerche hanno esito negativo.
  • Split-tunnel: il client aggiunge solo le route della tabella di routing di VPN Client. Per indirizzare il traffico DNS attraverso la VPN, aggiungi una route per gli indirizzi IP del server DNS alla tabella di routing di VPN Client.

Gli esempi di seguito valgono sia per l'ambiente Windows che per l'ambiente Linux. Su Linux, gli esempi presuppongono che il client utilizzi un gestore di rete generico.

Scenario 1: Full-tunnel senza alcun indirizzo IP di un server DNS specificato

Esempio 1:

  • CIDR IPv4 del client dell'utente finale: 192.168.0.0/16
  • CIDR del VPC dell'endpoint VPN Client: 10.123.0.0/16
  • Indirizzo IP del server DNS locale: 192.168.1.1
  • Il parametro "DNS Server IP address" è disattivato e non è specificato alcun indirizzo IP di un server DNS

Poiché il parametro "DNS Server IP address" non è configurato, il computer host dell'utente finale utilizza il server DNS locale per risolvere i nomi di dominio.

L'endpoint VPN Client è configurato in modalità full-tunnel. Per inviare tutto il traffico sulla VPN (0/1 da utun1), il client aggiunge una route che punta all'adattatore virtuale. Tuttavia, il traffico DNS non viene inviato tramite la VPN perché l'endpoint non applica la configurazione del server DNS. Il client utilizza invece la route statica per l'indirizzo del server DNS locale (192.168.1.1/32 su en0). Dopo che il nome di dominio viene risolto localmente, il traffico dell'applicazione verso l'indirizzo IP risolto viaggia attraverso il tunnel VPN.

$ 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:

  • CIDR IPv4 del client dell'utente finale: 192.168.0.0/16
  • CIDR del VPC dell'endpoint VPN Client: 10.123.0.0/16
  • Il server DNS locale è configurato come IP pubblico (8.8.8.8)
  • Il parametro "DNS Server IP address" è disattivato e non è specificato alcun indirizzo IP di un server DNS

In questo esempio, il client utilizza il server DNS pubblico all'indirizzo 8.8.8.8. Poiché non esiste una route statica per 8.8.8.8 su en0, la richiesta DNS viaggia attraverso il tunnel VPN. Se l'endpoint VPN Client non ha accesso a Internet, il server DNS è irraggiungibile e la richiesta scade.

$ 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 "DNS Server IP address" attivato

Esempio

  • CIDR IPv4 del client: 192.168.0.0/16
  • CIDR Amazon VPC dell'endpoint VPN Client: 10.123.0.0/16
  • Il parametro "DNS Server IP address" è attivato e impostato su 10.10.1.228 e 10.10.0.43 (endpoint in ingresso del risolutore Route 53)
  • Gli endpoint del risolutore si trovano in un Amazon VPC (10.10.0.0/16) connesso da un gateway di transito
  • Amazon VPC ha una zona ospitata privata di Route 53 (esempio.locale)
  • La risoluzione DNS e i nomi host DNS sono attivi

Questo VPN Client è configurato in modalità split-tunnel. La tabella di routing di VPN Client contiene:

$ 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, il parametro "DNS Server IP address" è attivato. 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 al computer 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

Il computer client emette una query DNS che attraversa il tunnel VPN fino al VPC di VPN Client. Successivamente, la richiesta DNS viene inoltrata all'endpoint del risolutore Route 53 tramite un gateway di transito. Dopo che il nome di dominio è stato risolto in un indirizzo IP, anche il traffico dell'applicazione viaggia attraverso il tunnel VPN. Questo flusso continua finché l'indirizzo IP di destinazione risolto corrisponde a una route nella tabella di routing dell'endpoint VPN Client.

Con questa configurazione, gli utenti finali possono risolvere i nomi di dominio esterni che utilizzano una risoluzione DNS standard. Consente inoltre la risoluzione dei record in zone private ospitate associate all'Amazon VPC contenente gli endpoint in ingresso del risolutore Route 53.

$ 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)
(...)