Wie kann ich Probleme mit der DNS-Auflösung in meiner privaten gehosteten Route-53-Zone beheben?

Lesedauer: 9 Minute
0

Ich möchte Probleme mit der DNS-Auflösung in meiner privaten gehosteten Amazon-Route-53-Zone beheben.

Lösung

Hinweis: Wenn Sie beim Ausführen von Befehlen der AWS Command Line Interface (AWS CLI) Fehler erhalten, stellen Sie sicher, dass Sie die neueste AWS CLI-Version verwenden.

Bestätigen Sie, dass Sie die DNS-Unterstützung in der Virtual Private Cloud (VPC) aktiviert haben

Um die Auflösung von Datensätzen in privaten gehosteten Zonen zuzulassen, müssen Sie die DNS-Unterstützung in Ihrer Virtual Private Cloud (VPC) aktivieren. Stellen Sie sicher, dass DNSSupport und DNSHostnames in Ihrer VPC auf True gesetzt sind.

Vergewissern Sie sich, dass die richtige VPC-ID mit der privaten gehosteten Zone verknüpft ist

Wenn Sie eine private gehostete Zone mit einer VPC verknüpfen, erstellt Route 53 Resolver eine automatisch definierte Regel und verknüpft sie mit der VPC. Ressourcen in dieser VPC können den Resolver abfragen, um DNS-Einträge in der privaten gehosteten Zone aufzulösen.

Vergewissern Sie sich, dass die richtige VPC-ID mit Ihrer privaten gehosteten Zone verknüpft ist. Stellen Sie zudem sicher, dass Sie die Ressourceneinträge der Domain von derselben VPC aus abfragen.

Um eine Liste der VPCs abzurufen, die einer gehosteten Zone zugeordnet sind, führen Sie folgenden Befehl in der AWS-CLI aus:

aws route53  list-hosted-zones-by-vpc --vpc-id VPC_ID --vpc-region REGION_ID

Hinweis: Ersetzen Sie ** VPC_ID ** und ** REGION_ID ** durch Ihre relevanten Werte.

Um eine Liste der privaten gehosteten Zonen abzurufen, die bestimmten VPCs zugeordnet sind, führen Sie folgenden Befehl in der AWS-CLI aus:

aws route53 get-hosted-zone --id VPC_ID

Hinweis: Ersetzen Sie VPC_ID durch Ihren entsprechenden Wert.

Bestätigen Sie, dass Sie die Weiterleitungsregeln für Domains von privaten gehosteten Zonen auf benutzerdefinierten DNS-Servern an den von Amazon bereitgestellten DNS-Server (CIDR+2) konfiguriert haben.

Wenn Sie in den DHCP-Optionen für DNS in Ihrer VPC benutzerdefinierte DNS-Server oder Active Directory-Server konfiguriert haben, überprüfen Sie folgende Konfigurationen:

  • Bestätigen Sie in der Weiterleitungsregel, dass Ihre Server private Domain-DNS-Abfragen an die IP-Adresse der von Amazon bereitgestellten DNS-Server Ihrer VPC weiterleiten. Wenn der primäre CIDR-Bereich für Ihre VPC beispielsweise 172.31.0.0/16 ist, dann lautet die IP-Adresse des VPC-DNS-Servers 172.31.0.2. Die IP-Adresse ist der VPC-Netzwerkbereich plus zwei.
  • Vergewissern Sie sich, dass sich die Domain, die Sie auf den benutzerdefinierten Servern konfiguriert haben, von Ihrer privaten gehosteten Zone unterscheidet. Wenn die Domain mit Ihrer privaten gehosteten Zone übereinstimmt, ist der Server für diese Domain autoritativ. In diesem Fall kontaktiert der Server den von Amazon bereitgestellten DNS-Server für Domains der privaten gehosteten Zone nicht.

Überprüfen Sie die benutzerdefinierten Einstellungen in resolv.conf

Wenn es zu intermittierenden DNS-Auflösungen oder -Antworten kommt, überprüfen Sie die Konfigurationseinstellungen Ihrer Quell-Instance in resolv.conf.

Sie konfigurieren beispielsweise die Option Rotieren in resolv.conf, um die Last der DNS-Abfragen zwischen dem Amazon DNS-Server und dem öffentlichen Google-Resolver-Server (8.8.8.8) aufzuteilen. In diesem Fall sind dies die resolv.conf-Einstellungen:

options rotate; generated by /usr/sbin/dhclient-script
nameserver 8.8.8.8
nameserver 172.31.0.2

Bei Ihrer ersten Abfrage an den öffentlichen Google-Resolver (8.8.8.8) erhalten Sie die erwartete NXDOMAIN-Antwort. Sie erhalten diese Antwort, weil der Resolver versucht, die Antwort in der öffentlich gehosteten Zone statt in der privaten gehosteten Zone zu finden:

Private hosted Zone Record - resolvconf.local\[ec2-user@ip-172-31-253-89 etc\]$ curl -vks http://resolvconf.local
\* Rebuilt URL to: http://resolvconf.local/
\* Could not resolve host: resolvconf.local

15:24:58.553320 IP ip-172-31-253-89.ap-southeast-2.compute.internal.40043 > dns.google.domain: 65053+ A? resolvconf.local. (34)
15:24:58.554814 IP dns.google.domain > ip-172-31-253-89.ap-southeast-2.compute.internal.40043: 65053 NXDomain 0/1/0 (109)

Die zweite Abfrage wurde jedoch erfolgreich aufgelöst. Die zweite Abfrage ist erfolgreich, weil sie den VPC-DNS-Resolver erreicht, der Ihrer privaten gehosteten Zone zugeordnet ist:

[ec2-user@ip-172-31-253-89 etc]$ curl -vks http://resolvconf.local* Rebuilt URL to: http://resolvconf.local/
*   Trying 1.1.1.1...
* TCP_NODELAY set
* Connected to resolvconf.local (1.1.1.1) port 80 (#0)

15:25:00.224761 IP ip-172-31-253-89.ap-southeast-2.compute.internal.51578 > 172.31.0.2.domain: 7806+ A? resolvconf.local. (34)
15:25:00.226527 IP 172.31.0.2.domain > ip-172-31-253-89.ap-southeast-2.compute.internal.51578: 7806 1/0/0 A 1.1.1.1 (50)

Vergewissern Sie sich, dass privat gehostete Zonen keine überlappenden Namespaces haben

Wenn mehrere Zonen überlappende Namespaces haben (z. B. example.com und test.example.com), leitet der Resolver den Datenverkehr auf der Grundlage der genauesten Übereinstimmung an die gehostete Zone weiter. Wenn es eine passende Zone gibt, jedoch keinen Datensatz, der dem Domainnamen und dem Typ der Anfrage entspricht, leitet der Resolver die Anfrage nicht weiter. Stattdessen gibt der Resolver NXDOMAIN (nicht existierende Domäne) an den Client zurück.

Stellen Sie sicher, dass der richtige Datensatz in der spezifischsten privaten gehosteten Zone konfiguriert ist, um eine erfolgreiche DNS-Auflösung zu gewährleisten.

Nehmen wir beispielsweise an, Sie haben zwei private gehostete Zonen mit den folgenden Datensätzen:

Private gehostete ZoneName des DatensatzesWert
lokaloverlap.privatevpc.local60.1.1.1
privatevpc.lokaloverlap.privatevpc.local50.1.1.1

Die Abfrage erhält die folgende Antwort von der spezifischsten privaten gehosteten Zone:

[ec2-user@IAD-BAS-INSTANCE ~]$ dig overlap.privatevpc.local +short50.1.1.1

Vergewissern Sie sich, dass in der privaten gehosteten Zone keine Zonendelegierung konfiguriert ist

Private gehostete Zonen unterstützen keine Zonendelegierung. Wenn die Delegierung konfiguriert ist, erhält der Client den Antwortcode „Servfail“ vom VPC-Resolver.

Verwenden Sie die AWS-CLI, um zu bestätigen, dass die Zonendelegierung in der privaten gehosteten Zone nicht konfiguriert ist, wie im folgenden Beispiel gezeigt:

Privat gehostete Zone: abc.com; Delegierungs-Nameserver-Datensatz für: kc.abc.com Ressourcendatensatz: test.kc.abc.com

[ec2-user@ip-172-31-0-8 ~]$ dig test.kc.abc.com;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 63414
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;test.kc.abc.com        IN      A
;; Query time: 15 msec
;; SERVER: 172.31.0.2#53(172.31.0.2)
;; WHEN: Fri Apr 16 15:57:37 2021
;; MSG SIZE  rcvd: 48

Stellen Sie sicher, dass die Routing-Richtlinie des Ressourceneintrags in privaten gehosteten Zonen unterstützt wird.

Vergewissern Sie sich, dass Sie in Ihrem Ressourceneintrag eine Routing-Richtlinie konfiguriert haben, die von einer privaten gehosteten Zone unterstützt wird:

  • Einfaches Routing
  • Failover-Routing
  • Mehrwertiges Antwort-Routing
  • Gewichtetes Routing
  • Latenzbasiertes Routing
  • Geolocation-Routing

Stellen Sie sicher, dass die Resolver-Regel und der zugehörige eingehende Endpunkt für unterschiedliche VPCs aufgelöst werden

Wenn der ausgehende Endpunkt in einer Resolver-Regel auf einen eingehenden Endpunkt verweist, der sich eine VPC mit der Regel teilt, ist das Ergebnis eine Schleife. In dieser Schleife wird die Abfrage kontinuierlich zwischen den eingehenden und ausgehenden Endpunkten weitergeleitet.

Sie können die Weiterleitungsregel weiterhin mit weiteren VPCs verknüpfen, die mit anderen Konten geteilt werden. Verwenden Sie dazu den AWS Resource Access Manager (AWS RAM). Für private gehostete Zonen, die dem Hub oder einer zentralen VPC zugeordnet sind, erfolgt die Auflösung anhand von Abfragen an eingehende Endpunkte. Eine Weiterleitungs-Resolver-Regel ändert diese Auflösung nicht, wie im folgenden Beispiel gezeigt:

Hub-VPC: VPC A – CIDR 172.31.0.0/16 Spoke-VPC: VPC B – CIDR 172.32.0.0/16 Eingehende IP-Adresse: 172.31.253.100 und 172.31.2.100 Ziel-IP-Adressen in der Weiterleitungsregel: 172.31.253.100 und 172.31.2.100 Mit VPCs verknüpfte Regel: VPC A- und VPC B-Client: 172-32-254-37

ubuntu@ip-172-32-254-37:~$ dig overlap.privatevpc.local;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 9007
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; QUESTION SECTION:
;overlap.privatevpc.local. IN A
;; Query time: 2941 msec
;; SERVER: 172.32.0.2#53(172.32.0.2)

In dieser Ausgabe springt die DNS-Anfrage kontinuierlich zwischen den ausgehenden und eingehenden Endpunkten. Die Anfrage überprüft die Regel, die VPC A zugeordnet ist, und sendet die Abfrage zurück an den ausgehenden Endpunkt. Nach mehreren Versuchen tritt bei der Abfrage ein Timeout auf und sie antwortet mit einem Servfail-Antwortcode.

Um dieses Problem zu beheben und die Schleife zu unterbrechen, entfernen Sie die Hub-VPC-Zuordnung (VPC A) mit der Regel. Dann erhalten Sie eine erfolgreiche Antwort von der privaten gehosteten Zone:

ubuntu@ip-172-32-254-37:~$ dig overlap.privatevpc.local;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58606
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;overlap.privatevpc.local. IN A
;; ANSWER SECTION:
overlap.privatevpc.local. 0 IN A 50.1.1.1
;; Query time: 5 msec
;; SERVER: 172.32.0.2#53(172.32.0.2)

Bestätigen Sie, dass der lokale Resolver eine rekursive Anfrage sendet

Wenn Sie Abfragen von lokalen Servern an den Route 53-Resolver verwenden, können Sie DNS-Abfragen von Resolvern in Ihrem Netzwerk an einen VPC-Resolver weiterleiten. Verwenden Sie dazu den Resolver-Endpunkt für eingehende Anrufe. Mit dieser Aktion können Sie Domainnamen für AWS-Ressourcen, beispielsweise Datensätze in einer privaten gehosteten Zone, auflösen.

In einigen Fällen stellen Sie unter Umständen fest, dass die private gehostete Zone vom lokalen Resolver aus nicht erfolgreich aufgelöst wird. Dieses Verhalten tritt auf, weil der lokale Resolver eine iterative Abfrage statt einer rekursiven Anfrage sendet. Der eingehende Endpunkt unterstützt rekursive Abfragen für erfolgreiche DNS-Auflösungen.

Um den Auflösungstyp zu überprüfen, verwenden Sie eine Paketerfassung auf dem DNS-Resolver (On-Premises). Überprüfen Sie dann die DNS-Flags (Rekursion erwünscht  = 0). Sie können die Auflösung auch testen, indem Sie eine iterative Anfrage mit +norecurse mit dem dig-Befehl senden oder norecurse mit nslookup festlegen:

IP-Adresse des eingehenden Endpunkts: 172.31.253.150

IP-Adresse des On-Premises-Resolvers: 10.0.4.210

Eine fehlgeschlagene iterative Abfrage der eingehenden IP-Adresse führt zur folgenden Ausgabe:

[ec2-user@IAD-BAS-INSTANCE ~]$ dig @172.31.253.150 overlap.privatevpc.local +norecurse; <<>> DiG 9.11.0rc1 <<>> @172.31.253.150 overlap.privatevpc.local +norecurse
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached

Eine erfolgreiche rekursive Abfrage führt zur folgenden Ausgabe:

[ec2-user@IAD-BAS-INSTANCE ~]$ dig @172.31.253.150 overlap.privatevpc.local;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19051
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;overlap.privatevpc.local.      IN      A
;; ANSWER SECTION:
overlap.privatevpc.local. 0     IN      A       50.1.1.1
;; Query time: 200 msec
;; SERVER: 172.31.253.150#53(172.31.253.150)

Vergewissern Sie sich, dass Sie die richtigen Regelprioritäten für das von Amazon bereitgestellte DNS konfiguriert haben

Wenn die Client-Instance eine Anfrage an den Resolver (von AWS bereitgestellter DNS-Server) sendet, überprüft der Resolver die Regeln der Instanz, um zu ermitteln, wohin die Anfrage weitergeleitet werden soll.

Im Allgemeinen hat die spezifischste Regel Vorrang. Wenn es eine Resolver-Regel test.example.com und eine private gehostete Zone longest.test.example.com gibt, stimmt die Suche nach der Domain longest.test.example.com mit der privaten gehosteten Zone überein.

Wenn sich die Regeln auf derselben Domain-Ebene befinden, haben sie folgende Priorität:

  1. Resolver-Regel
  2. Regel für private gehostete Zone
  3. Interne Regel

Wenn es z. B. eine Resolver-Regel test.example.com und eine private gehostete Zone test.example.com gibt, hat die Resolver-Regel Priorität. Die Abfrage wird an die Server oder Ziel-IP-Adressen weitergeleitet, die in der Regel konfiguriert sind.

Ähnliche Informationen

Arbeiten mit privaten gehosteten Zonen

Welche Amazon VPC-Optionen muss ich aktivieren, um meine private gehostete Zone nutzen zu können?

Vermeiden von Schleifenkonfigurationen mit Resolver-Endpunkten

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 10 Monaten