Wie funktioniert DNS und wie behebe ich teilweise oder zeitweise auftretende DNS-Fehler?

Lesedauer: 7 Minute
0

Wie funktioniert DNS und wie behebe ich teilweise oder zeitweise auftretende DNS-Fehler?

Behebung

Überblick über DNS

DNS leitet Benutzer zu Internetanwendungen weiter, indem leicht zu merkende Namen (z. B. www.example.com) in numerische IP-Adressen wie 192.0.2.1 übersetzt werden. Dieser Vorgang wird als „DNS-Auflösung“ bezeichnet. Ein autoritativer Nameserver löst einen Domain-Namen in eine IP-Adresse oder mehrere IP-Adressen auf und leitet die IP-Adresse über die Kette von DNS-Resolvern an den Client weiter (z. B. den Computer einer Person, die eine Website aufrufen möchte). Der Client verwendet dann diese IP-Adresse, um eine Verbindung zu dem Server herzustellen, auf dem die Website gehostet wird. Wenn DNS nicht richtig funktioniert, können DNS-Server Domain-Namen nicht auflösen. Die DNS-Server können den Kunden also nicht die IP-Adresse des Servers zur Verfügung stellen, auf dem die Website gehostet wird. Dies bedeutet, dass auf diese Websites nicht über das Internet zugegriffen werden kann.

Weitere Informationen finden Sie unter Was ist DNS?

Teilweise, temporäre oder intermittierende DNS-Ausfallszenarien

In einigen Fällen leidet ein Client für kurze Zeit oder zeitweise unter DNS-Ausfällen. Die folgenden Szenarien können häufig zu einem teilweisen DNS-Ausfall führen:

Szenario 1: Falsch konfigurierte Nameserver beim Registrar

Manchmal sind ein oder mehrere Nameserver auf dem Registrar falsch konfiguriert. Eine „Whois“-Suche liefert die Nameserver, die auf dem Registrar der Domain konfiguriert sind. In diesem Fall gibt der lokale Resolver während der DNS-Auflösung eine SERVFAIL-Meldung zurück, wenn registrierte Nameserver nicht oder mit unerwarteten Informationen antworten. In einigen Fällen können lokale Resolver die Anfrage jedoch mit einem anderen Nameserver versuchen und das Ergebnis zurückgeben.

Außerdem können die lokalen Resolver die falschen Nameserver für die TTL-Zeit zwischenspeichern und die nächste Anfrage an den falsch konfigurierten Nameserver senden.

Szenario 2: Geänderte Nameserver in der gehosteten Zone

Ein weiterer Grund für einen teilweisen DNS-Ausfall ist, wenn der NS-Eintrag für eine Domain in der gehosteten Zone falsch konfiguriert ist. In diesem Fall wurden entweder die vorhandenen Nameserver aktualisiert oder dem Wert des NS-Eintrags wurden einige zusätzliche Nameserver hinzugefügt.

In diesem Fall kann es bei einigen Clients zu teilweisen DNS-Fehlern kommen, wenn der Resolver versucht, die Domain mithilfe des falschen Nameservers aufzulösen.

Szenario 3: Der DNS-Resolver des Kunden kann die Domain nicht auflösen

Manchmal legen Clients benutzerdefinierte oder falsche Resolver in der Resolver-Konfigurationsdatei fest, wie z. B. resolv.conf unter Linux. Wenn dies der Fall ist und Sie die Domain von einer Amazon Elastic Compute Cloud (Amazon EC2)-Instance in einer Amazon Virtual Private Cloud (Amazon VPC) aus auflösen, verwendet die EC2-Instance die in resolv.conf definierten Nameserver.

Szenario 4: Von Amazon bereitgestellter DNS-Server, der die DNS-Abfragen drosselt

Von Amazon bereitgestellte DNS-Server sind auf einen Grenzwert von 1024 Paketen pro Sekunde pro elastischer Netzwerkschnittstelle beschränkt. Von Amazon bereitgestellte DNS-Server lehnen jeglichen Datenverkehr ab, der diesen Grenzwert überschreitet. Aufgrund der DNS-Drosselung kommt es gelegentlich zu DNS-Timeouts. Sie können das Caching auf der Instance aktivieren oder den DNS-Wiederholungs-Timer in der Anwendung erhöhen, um dieses Problem zu beheben.

Szenario 5: Die Domain-URL wird aus dem Internet aufgelöst, aber nicht aus der EC2-Instance

DNS-Abfragen für Ihre Domain werden immer von der privat gehosteten Zone aus gelöst, wenn Sie Folgendes getan haben:

Wenn der abgefragte Datensatz für Ihre Domain nicht in der privat gehosteten Zone vorhanden ist, schlägt die DNS-Abfrage fehl und wird nicht an die öffentliche Domain weitergeleitet. Da der DNS-Eintrag in der öffentlichen Domain-Zone vorhanden ist, wird er aus dem Internet aufgelöst.

Beheben Sie DNS-Fehler auf Linux-basierten Betriebssystemen

Verwenden Sie den Befehl dig, um eine Suche auf dem Client-DNS-Server durchzuführen, der in der Datei /etc/resolv.conf des Hosts konfiguriert ist.

$ dig www.amazon.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.49.amzn1 <<>> www.amazon.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13150
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.amazon.com.    IN    A

;; ANSWER SECTION:
www.amazon.com.        41    IN    A    54.239.17.6

;; Query time: 1 msec
;; SERVER: 10.108.0.2#53(10.108.0.2)
;; WHEN: Fri Oct 21 21:43:11 2016
;; MSG SIZE rcvd: 48

Im vorherigen Beispiel zeigt der Antwortabschnitt, dass 54.239.17.6 die IP-Adresse des HTTP-Servers für www.amazon.com ist.

Wenn Sie die Variable +trace hinzufügen, kann der Befehl dig auch eine rekursive Suche nach einem DNS-Eintrag durchführen, wie im folgenden Beispiel gezeigt:

$ dig +trace www.amazon.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.49.amzn1 <<>> +trace www.amazon.com
;; global options: +cmd
.        518400    IN    NS    J.ROOT-SERVERS.NET.
.        518400    IN    NS    K.ROOT-SERVERS.NET.
.        518400    IN    NS    L.ROOT-SERVERS.NET.
…
;; Received 508 bytes from 10.108.0.2#53(10.108.0.2) in 31 ms

com.        172800    IN    NS    a.gtld-servers.net.
com.        172800    IN    NS    b.gtld-servers.net.
com.        172800    IN    NS    c.gtld-servers.net.
…
;; Received 492 bytes from 193.0.14.129#53(193.0.14.129) in 93 ms
amazon.com.        172800    IN    NS    pdns1.ultradns.net.
amazon.com.        172800    IN    NS    pdns6.ultradns.co.uk.
…
;; Received 289 bytes from 192.33.14.30#53(192.33.14.30) in 201 ms
www.amazon.com.    900    IN    NS    ns-1019.awsdns-63.net.
www.amazon.com.    900    IN    NS    ns-1568.awsdns-04.co.uk.
www.amazon.com.    900    IN    NS    ns-277.awsdns-34.com.
…
;; Received 170 bytes from 204.74.108.1#53(204.74.108.1) in 87 ms

www.amazon.com.    60     IN    A    54.239.26.128
www.amazon.com.    1800   IN    NS   ns-1019.awsdns-63.net.
www.amazon.com.    1800   IN    NS   ns-1178.awsdns-19.org.
…
;; Received 186 bytes from 205.251.195.251#53(205.251.195.251) in 7 ms

Sie können auch eine Abfrage ausführen, die nur die Nameserver zurückgibt, wie im folgenden Beispiel gezeigt:

$ dig -t NS www.amazon.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.49.amzn1 <<>> -t NS www.amazon.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48631
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.amazon.com.        IN    NS

;; ANSWER SECTION:
www.amazon.com.        490    IN    NS    ns-1019.awsdns-63.net.
www.amazon.com.        490    IN    NS    ns-1178.awsdns-19.org.
www.amazon.com.        490    IN    NS    ns-1568.awsdns-04.co.uk.
www.amazon.com.        490    IN    NS    ns-277.awsdns-34.com.

;; Query time: 0 msec
;; SERVER: 10.108.0.2#53(10.108.0.2)
;; WHEN: Fri Oct 21 21:48:20 2016
;; MSG SIZE rcvd: 170

Im vorherigen Beispiel hat www.amazon.com die folgenden vier autoritativen Nameserver:

  • ns-1019.awsdns-63.net.
  • ns-1178.awsdns-19.org.
  • ns-1568.awsdns-04.co.uk.
  • ns-277.awsdns-34.com.

Jeder dieser vier Server kann Fragen zum Hostnamen www.amazon.com autoritativ beantworten. Verwenden Sie den Befehl dig, um direkt auf einen bestimmten Nameserver abzuzielen. Überprüfen Sie, ob jeder autoritative Nameserver für eine bestimmte Domain korrekt antwortet.

Das Folgende ist eine Beispielausgabe für eine Abfrage an www.amazon.com an einen seiner autoritativen Nameserver (ns-1019.awsdns-63.net). Aus der Serverantwort geht hervor, dass www.amazon.com unter 54.239.25.192 verfügbar ist:

$ dig www.amazon.com @ns-1019.awsdns-63.net.
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.49.amzn1 <<>> www.amazon.com @ns-1019.awsdns-63.net.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31712
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;www.amazon.com.    IN    A

;; ANSWER SECTION:
www.amazon.com.        60    IN    A    54.239.25.192

;; AUTHORITY SECTION:
www.amazon.com.        1800    IN    NS    ns-1019.awsdns-63.net.
www.amazon.com.        1800    IN    NS    ns-1178.awsdns-19.org.
www.amazon.com.        1800    IN    NS    ns-1568.awsdns-04.co.uk.
…

;; Query time: 7 msec
;; SERVER: 205.251.195.251#53(205.251.195.251)
;; WHEN: Fri Oct 21 21:50:00 2016
;; MSG SIZE rcvd: 186

Die folgende Zeile zeigt, dass ns-576.awsdns-08.net ein autoritativer Nameserver für amazon.com ist:

;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 0

Das Vorhandensein der aa-Flag weist darauf hin, dass der Nameserver ns-1019.awsdns-63.net uns eine verbindliche Antwort für den Ressourceneintrag www.amazon.com gegeben hat.

Beheben Sie DNS-Fehler auf Windows-basierten Betriebssystemen

Verwenden Sie das Hilfsprogramm nslookup, um die einem Hostnamen zugeordnete IP-Adresse zurückzugeben, wie im folgenden Beispiel gezeigt:

C:\>nslookup www.amazon.com
Server:     ip-10-20-0-2.ec2.internal
Address:    10.20.0.2

Non-authoritative answer:
Name:       www.amazon.com
Address:    54.239.25.192

Um die autoritativen Nameserver für einen Hostnamen mithilfe des Dienstprogramms nslookup zu ermitteln, verwenden Sie das Flag -type=NS:

C:\>nslookup -type=NS www.amazon.com
Server:     ip-10-20-0-2.ec2.internal
Address:    10.20.0.2

Non-authoritative answer:
www.amazon.com    nameserver = ns-277.awsdns-34.com
www.amazon.com    nameserver = ns-1019.awsdns-63.net
www.amazon.com    nameserver = ns-1178.awsdns-19.org
…

Verwenden Sie die folgende Syntax, um zu überprüfen, ob ns-277.awsdns-34.com für www.amazon.com korrekt auf eine Anfrage für www.amazon.com reagiert:

C:\>nslookup www.amazon.com ns-277.awsdns-34.com
Server:     UnKnown
Address:    205.251.193.21

Name:       www.amazon.com
Address:    54.239.25.200