Direkt zum Inhalt

Wie funktioniert DNS mit meinem Endpunkt im AWS Client VPN?

Lesedauer: 6 Minute
0

Ich habe vor, einen AWS-Client-VPN-Endpunkt einzurichten. Ich muss die DNS-Server angeben, die Endbenutzer zum Auflösen von Domainnamen verwenden.

Behebung

Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI-Version verwendest.

Wenn du einen neuen Client-VPN-Endpunkt erstellst, gib eine DNS-Server-IP-Adresse an. Verwende die AWS-Managementkonsole, den AWS-CLI-Befehl create-client-vpn-endpoint oder die API-Operation CreateClientVpnEndpoint, um die IP-Adressen im Parameter „DNS Server IP address“ (DNS-Server-IP-Adresse) anzugeben. Verwende die Konsole, den Befehl modify-client-vpn-endpoint oder die API-Operation ModifyClientVpnEndpoint, um einen vorhandenen Endpunkt zu ändern.

Konfiguriere den Parameter „DNS Server IP address“

Gib für hohe Verfügbarkeit zwei DNS-Server-IP-Adressen an. Wenn der primäre DNS-Server nicht erreichbar ist, versucht der Client, die Abfrage erneut an den sekundären DNS-Server zu senden.

Hinweis: Wenn der primäre DNS-Server mit SERVFAIL antwortet, wird die DNS-Anfrage nicht erneut an den sekundären DNS-Server gesendet.

Stelle sicher, dass Endbenutzer beide angegebenen DNS-Server erreichen können, nachdem die Endbenutzer eine Verbindung zum Client-VPN-Endpunkt hergestellt haben. Wenn die DNS-Server nicht erreichbar sind, schlagen DNS-Anforderungen möglicherweise fehl und führen zu Konnektivitätsproblemen.

Der Parameter „DNS Server IP address“ ist optional. Wenn kein DNS-Server angegeben ist, wird die auf dem Gerät des Endbenutzers konfigurierte DNS-IP-Adresse zur Lösung von DNS-Abfragen verwendet.

Wenn dein Client-VPN-DNS-Server der von AmazonProvidedDNS oder Amazon Route 53 Resolver eingehende Endpunkt ist, beachte Folgendes:

  • Du kannst die Ressourcen-Datensätze der privaten gehosteten Zone Route 53 auflösen, die mit der Amazon Virtual Private Cloud (Amazon VPC) verknüpft ist.
  • Wenn „Privates DNS“ aktiviert ist, werden öffentliche Amazon-RDS-Hostnamen, auf die über die VPN-Schnittstelle zugegriffen werden kann, zu einer privaten IP-Adresse aufgelöst. Dies gilt auch für AWS-Serviceendpunktnamen, auf die vom Amazon VPC-Schnittstellenendpunkt aus zugegriffen werden kann.
  • Vergewissere dich, dass DNS-Auflösung und DNS-Hostnamen für die zugehörige Amazon VPC aktiviert sind.

Der Client-VPN-Endpunkt verwendet die Quell-NAT, um eine Verbindung zu Ressourcen in der zugehörigen VPC herzustellen.

DNS-Verhalten nach Tunneltyp

Nachdem das Client-Gerät den Client-VPN-Tunnel eingerichtet hat, wird der Parameter „DNS Server IP address“ auf den Voll- oder Split-Tunnel angewendet:

  • Volltunnel: Der Client fügt eine Route für den gesamten Datenverkehr durch den VPN-Tunnel hinzu. Der gesamte Datenverkehr, einschließlich DNS-Abfragen, wird durch den Tunnel geleitet. Wenn die Amazon VPC keine Route zu den DNS-Servern hat, schlagen Suchvorgänge fehl.
  • Split-Tunnel: Der Client fügt nur Routen aus der Client-VPN-Routing-Tabelle hinzu. Um den DNS-Datenverkehr durch das VPN zu leiten, füge der Client-VPN-Routing-Tabelle eine Route für die DNS-Server-IP-Adressen hinzu.

Die folgenden Beispiele gelten sowohl für Windows- als auch für Linux-Umgebungen. Unter Linux gehen die Beispiele davon aus, dass der Client einen generischen Netzwerkmanager verwendet.

Szenario 1: Volltunnel ohne angegebene DNS-Server-IP-Adressen

Beispiel 1:

  • IPv4-CIDR des Endbenutzer-Clients: 192.168.0.0/16
  • CIDR der Client-VPN-Endpunkt-VPC: 10.123.0.0/16
  • Lokale DNS-Server-IP-Adressen: 192.168.1.1
  • Der Parameter für die DNS-Server-IP-Adresse ist deaktiviert, und es sind keine DNS-Server-IP-Adressen angegeben

Da der Parameter für die IP-Adresse des DNS-Servers nicht konfiguriert ist, verwendet der Host-Computer des Endbenutzers den lokalen DNS-Server, um Domainnamen aufzulösen.

Dieser Client-VPN-Endpunkt ist im Volltunnelmodus konfiguriert. Um den gesamten Datenverkehr über das VPN zu senden (0/1 von utun1), fügt der Client eine Route hinzu, die auf den virtuellen Adapter zeigt. Der DNS-Datenverkehr wird jedoch nicht über das VPN gesendet, da der Endpunkt die DNS-Serverkonfiguration nicht mithilfe von Push überträgt. Stattdessen verwendet der Client die statische Route für die lokale DNS-Serveradresse (192.168.1.1/32 über en0). Nachdem der Domainname lokal aufgelöst wurde, durchläuft der Anwendungsdatenverkehr zur aufgelösten IP-Adresse den VPN-Tunnel.

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

Beispiel 2:

  • IPv4-CIDR des Endbenutzer-Clients: 192.168.0.0/16
  • CIDR der Client-VPN-Endpunkt-VPC: 10.123.0.0/16
  • Der lokale DNS-Server ist als öffentliche IP konfiguriert (8.8.8.8)
  • Der Parameter „DNS Server IP address“ ist deaktiviert, und es sind keine DNS-Server-IP-Adressen angegeben

In diesem Beispiel verwendet der Client den öffentlichen DNS-Server unter 8.8.8.8. Da es für 8.8.8.8 über en0 keine statische Route gibt, durchläuft die DNS-Anforderung den VPN-Tunnel. Wenn der Client-VPN-Endpunkt keinen Internetzugang hat, ist der DNS-Server nicht erreichbar und die Abfrage läuft ab.

$ 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

Szenario 2: Split-Tunnel mit aktiviertem Parameter „DNS Server IP address“

Beispiel

  • IPv4-CIDR des Client: 192.168.0.0/16
  • Amazon VPC-CIDR des Client-VPN-Endpunkts: 10.123.0.0/16
  • Der Parameter „DNS Server IP address“ ist aktiviert und auf 10.10.1.228 und 10.10.0.43 (Endpunkte des eingehenden Datenverkehrs von Route 53 Resolver) festgelegt.
  • Resolver-Endpunkte befinden sich in einer Amazon VPC (10.10.0.0/16), die über ein Transit-Gateway verbunden ist
  • Die Amazon VPC hat eine private gehostete Zone Route 53 (example.local)
  • DNS-Auflösung und DNS-Hostnamen sind aktiv

Dieses Client-VPN ist im Split-Tunnel-Modus konfiguriert. Die Client-VPN-Routing-Tabelle enthält:

$ 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 diesem Beispiel ist der Parameter „DNS Server IP address“ aktiviert. 10.10.1.228 und 10.10.0.43 sind als DNS-Server konfiguriert. Wenn der Client den VPN-Tunnel einrichtet, werden die DNS-Serverparameter an den Host-Computer des Endbenutzers mithilfe von Push übertragen.

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

Eine vom Client-Computer ausgegebene DNS-Abfrage wird über den VPN-Tunnel zur Client-VPN-VPC übertragen. Die DNS-Anforderung wird dann über ein Transit-Gateway an den eingehenden Route 53 Resolver-Endpunkt weitergeleitet. Nachdem der Domainname in eine IP-Adresse aufgelöst wurde, durchläuft der Anwendungsdatenverkehr auch den VPN-Tunnel. Dieser Datenfluss wird fortgesetzt, solange die aufgelöste Ziel-IP-Adresse mit einer Route in der Client-VPN-Endpunkt-Routing-Tabelle übereinstimmt.

Mit dieser Konfiguration können Endbenutzer externe Domainnamen mithilfe der Standard-DNS-Auflösung auflösen. Sie ermöglicht auch die Auflösung von Datensätzen in privat gehosteten Zonen, die mit der Amazon VPC verknüpft sind, die die Route 53 Resolver-Endpunkte des eingehenden Datenverkehrs enthält.

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