Dies ist offensichtlich ein inszeniertes Q & A, aber das verwirrt die Leute oft und ich kann keine kanonische Frage zum Thema finden.
dig +trace
ist ein großartiges Diagnosetool, aber ein Aspekt des Designs wird häufig missverstanden: Die IP-Adresse jedes Servers, der abgefragt wird, wird von Ihrer Resolver-Bibliothek abgerufen . Dies wird sehr leicht übersehen und wird oft erst dann zum Problem, wenn Ihr lokaler Cache die falsche Antwort für einen zwischengespeicherten Nameserver hat.
Detaillierte Analyse
Dies ist leichter mit einem Beispiel der Ausgabe zu zerlegen; Ich werde alles nach der ersten NS-Delegation weglassen.
; <<>> DiG 9.7.3 <<>> +trace +additional serverfault.com
;; global options: +cmd
. 121459 IN NS d.root-servers.net.
. 121459 IN NS e.root-servers.net.
. 121459 IN NS f.root-servers.net.
. 121459 IN NS g.root-servers.net.
. 121459 IN NS h.root-servers.net.
. 121459 IN NS i.root-servers.net.
. 121459 IN NS j.root-servers.net.
. 121459 IN NS k.root-servers.net.
. 121459 IN NS l.root-servers.net.
. 121459 IN NS m.root-servers.net.
. 121459 IN NS a.root-servers.net.
. 121459 IN NS b.root-servers.net.
. 121459 IN NS c.root-servers.net.
e.root-servers.net. 354907 IN A 192.203.230.10
f.root-servers.net. 100300 IN A 192.5.5.241
f.root-servers.net. 123073 IN AAAA 2001:500:2f::f
g.root-servers.net. 354527 IN A 192.112.36.4
h.root-servers.net. 354295 IN A 128.63.2.53
h.root-servers.net. 108245 IN AAAA 2001:500:1::803f:235
i.root-servers.net. 355208 IN A 192.36.148.17
i.root-servers.net. 542090 IN AAAA 2001:7fe::53
j.root-servers.net. 354526 IN A 192.58.128.30
j.root-servers.net. 488036 IN AAAA 2001:503:c27::2:30
k.root-servers.net. 354968 IN A 193.0.14.129
k.root-servers.net. 431621 IN AAAA 2001:7fd::1
l.root-servers.net. 354295 IN A 199.7.83.42
;; Received 496 bytes from 75.75.75.75#53(75.75.75.75) in 10 ms
com. 172800 IN NS m.gtld-servers.net.
com. 172800 IN NS k.gtld-servers.net.
com. 172800 IN NS f.gtld-servers.net.
com. 172800 IN NS g.gtld-servers.net.
com. 172800 IN NS b.gtld-servers.net.
com. 172800 IN NS e.gtld-servers.net.
com. 172800 IN NS j.gtld-servers.net.
com. 172800 IN NS c.gtld-servers.net.
com. 172800 IN NS l.gtld-servers.net.
com. 172800 IN NS d.gtld-servers.net.
com. 172800 IN NS i.gtld-servers.net.
com. 172800 IN NS h.gtld-servers.net.
com. 172800 IN NS a.gtld-servers.net.
a.gtld-servers.net. 172800 IN A 192.5.6.30
a.gtld-servers.net. 172800 IN AAAA 2001:503:a83e::2:30
b.gtld-servers.net. 172800 IN A 192.33.14.30
b.gtld-servers.net. 172800 IN AAAA 2001:503:231d::2:30
c.gtld-servers.net. 172800 IN A 192.26.92.30
d.gtld-servers.net. 172800 IN A 192.31.80.30
e.gtld-servers.net. 172800 IN A 192.12.94.30
f.gtld-servers.net. 172800 IN A 192.35.51.30
g.gtld-servers.net. 172800 IN A 192.42.93.30
h.gtld-servers.net. 172800 IN A 192.54.112.30
i.gtld-servers.net. 172800 IN A 192.43.172.30
j.gtld-servers.net. 172800 IN A 192.48.79.30
k.gtld-servers.net. 172800 IN A 192.52.178.30
l.gtld-servers.net. 172800 IN A 192.41.162.30
;; Received 505 bytes from 192.203.230.10#53(e.root-servers.net) in 13 ms
- Die anfängliche Abfrage für
. IN NS
(Root-Nameserver) trifft auf den lokalen Resolver, in diesem Fall auf Comcast. ( 75.75.75.75
) Dies ist leicht zu erkennen.
- Die nächste Abfrage ist für
serverfault.com. IN A
und läuft gegen e.root-servers.net.
, zufällig ausgewählt aus der Liste der Root-Nameserver, die wir gerade erhalten haben. Es hat eine IP-Adresse von 192.203.230.10
, und seitdem wir es +additional
aktiviert haben, scheint es vom Kleber zu kommen.
- Da es für serverfault.com nicht maßgeblich ist, wird es an die
com.
TLD-Nameserver delegiert .
- Was aus der Ausgabe hier nicht ersichtlich ist, ist, dass
dig
die IP-Adresse nicht e.root-servers.net.
aus dem Klebstoff abgeleitet wurde.
Im Hintergrund ist Folgendes passiert:
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
02:03:43.301022 IP 192.0.2.1.59900 > 75.75.75.75.53: 63418 NS? . (17)
02:03:43.327327 IP 75.75.75.75.53 > 192.0.2.1.59900: 63418 13/0/14 NS k.root-servers.net., NS l.root-servers.net., NS m.root-servers.net., NS a.root-servers.net., NS b.root-servers.net., NS c.root-servers.net., NS d.root-servers.net., NS e.root-servers.net., NS f.root-servers.net., NS g.root-servers.net., NS h.root-servers.net., NS i.root-servers.net., NS j.root-servers.net. (512)
02:03:43.333047 IP 192.0.2.1.33120 > 75.75.75.75.53: 41110+ A? e.root-servers.net. (36)
02:03:43.333096 IP 192.0.2.1.33120 > 75.75.75.75.53: 5696+ AAAA? e.root-servers.net. (36)
02:03:43.344301 IP 75.75.75.75.53 > 192.0.2.1.33120: 41110 1/0/0 A 192.203.230.10 (52)
02:03:43.344348 IP 75.75.75.75.53 > 192.0.2.1.33120: 5696 0/1/0 (96)
02:03:43.344723 IP 192.0.2.1.37085 > 192.203.230.10.53: 28583 A? serverfault.com. (33)
02:03:43.423299 IP 192.203.230.10.53 > 192.0.2.1.37085: 28583- 0/13/14 (493)
+trace
betrogen und konsultierte den lokalen Resolver, um die IP-Adresse des Nameservers des nächsten Hops zu erhalten, anstatt den Klebstoff zu konsultieren. Hinterhältig!
Dies ist in der Regel "gut genug" und wird für die meisten Menschen kein Problem darstellen. Leider gibt es Randfälle. Wenn Ihr DNS-Cache auf dem Upstream-Server aus irgendeinem Grund die falsche Antwort für den Nameserver liefert, bricht dieses Modell vollständig zusammen.
Beispiel aus der Praxis:
- Domain läuft ab
- Der Kleber wird bei Nameservern mit Registrar-Umleitung neu eingesetzt
- Schein-IPs werden für ns1 und ns2.yourdomain.com zwischengespeichert
- Domain wird mit restauriertem Leim erneuert
- Caches mit gefälschten Nameserver-IPs senden weiterhin Personen zu einer Website, auf der angegeben ist, dass die Domain zum Verkauf steht
In dem oben genannten Fall +trace
wird darauf hingewiesen, dass die Nameserver des Domaininhabers die Ursache des Problems sind und Sie nur einen Anruf davon entfernt sind, einem Kunden fälschlicherweise mitzuteilen, dass seine Server falsch konfiguriert sind. Ob es etwas ist, gegen das Sie etwas tun können (oder wollen), ist eine andere Geschichte, aber es ist wichtig, die richtigen Informationen zu haben.
dig +trace
ist ein großartiges Tool, aber wie bei jedem Tool müssen Sie wissen, was es tut und was nicht und wie Sie das Problem manuell beheben, wenn es sich als unzureichend herausstellt.
Bearbeiten:
Es sollte auch beachtet werden, dass Sie dig +trace
nicht vor NS
Datensätzen gewarnt werden , die auf CNAME
Aliase verweisen . Dies ist eine RFC-Verletzung, die ISC BIND (und möglicherweise auch andere) nicht zu korrigieren versucht. Gerne nimmt BIND +trace
den A
Datensatz an, den es von Ihrem lokal konfigurierten Nameserver erhält, während BIND bei einer vollständigen Rekursion die gesamte Zone mit einem SERVFAIL ablehnt.
Dies kann schwierig sein, wenn Klebstoff vorhanden ist. Dies funktioniert einwandfrei, bis die NS-Datensätze aktualisiert sind , und bricht dann plötzlich ab. Leimlose Delegationen unterbrechen immer die Rekursion von BIND, wenn ein NS
Datensatz auf einen Alias verweist.
+nssearch
?