Führen CNAME-Einträge zu einer zweiten DNS-Suche?


19

Nehmen wir an, wir haben eine Subdomain mit dem Namen www.foo.com, deren CNAME-Eintrag auf foo.bar.cc verweist. Foo.bar.cc wiederum hat einen A-Eintrag, der auf die IP-Adresse 1.2.3.4 zeigt.

Wenn ich jetzt einen DNS-Lookup von www.foo.com durchführe, erhalte ich eine Antwort, die so aussieht:

www.foo.com. IN CNAME foo.bar.cc.
foo.bar.cc. IN A 1.2.3.4

Meine Frage ist, in welchem ​​Stadium ist foo.bar.cc gelöst? Wird dies vom rekursiven DNS-Server durchgeführt, bevor die Antwort an den Client zurückgesendet wird? Oder sendet der Client eine zweite Anfrage an den DNS-Server, diesmal für foo.bar.cc? Oder hängt es davon ab, ob der DNS-Server bereits einen zwischengespeicherten Eintrag für foo.bar.cc hat?

Ich frage, weil ein bestimmter rekursiver DNS-Server nur die erste Zeile zurückgibt, dh den CNAME nicht auflöst. Nach etwa 20 Sekunden enthalten nachfolgende Anforderungen für denselben Host jedoch beide Zeilen.

Antworten:


16

Die beiden Datensätze werden in derselben Anforderung zusammen zurückgegeben. Sie können dies mit dem folgenden Befehl herausfinden

dig +trace www.foo.com

Zum Beispiel hat meine Domain photoblog.com einen C-Namen für www, so dass die letzten 2 Anfragen vom Nameserver von photoblog für mich so aussehen

photoblog.com.      172800  IN  NS  ns1.photoblog.com.
photoblog.com.      172800  IN  NS  ns2.photoblog.com.
;; Received 103 bytes from 192.43.172.30#53(i.gtld-servers.net) in 196 ms

www.photoblog.com.  600 IN  CNAME   photoblog.com.
photoblog.com.      600 IN  A   74.52.128.18
photoblog.com.      60  IN  NS  ns2.photoblog.com.
photoblog.com.      60  IN  NS  ns1.photoblog.com.
;; Received 133 bytes from 74.52.128.18#53(ns2.photoblog.com) in 59 ms

Wie Sie sehen können, fragt die Anfrage ns1 / ns2 nach der IP-Adresse für www.photoblog.com und gibt diese zurück. Es ist ein C-Name für photoblog.com und hier ist die IP-Adresse für diesen A-Datensatz.


In den OPs Ihres Beispiels, in denen nur der CNAME zurückgegeben wurde, hatte der DNS-Server wahrscheinlich Schwierigkeiten, dem CNAME zu folgen, und gab dem Client alle Informationen, die er hatte. Schließlich wurde es nach dem CNAME beendet und konnte so eine vollständige Antwort geben.
— David Schwartz

Ja - wenn der DNS-Server mehr Informationen hat, gibt er diese im ADDITIONALAbschnitt der Antwort zurück. Gelegenheiten, in denen es nicht zurückgegeben wird, bedeuten, dass der Rekursor es nicht im Cache hatte - möglicherweise, weil der Rekursor CNAMEund der ADatensatz darauf hinweisen, dass er unterschiedliche autorisierende Server hat (die ursprüngliche Anfrage des Rekursors hat also nicht die positive CNAMEzusätzliche AAntwort erhalten, nur die CNAME).
— Shane Madden

@ Mike: Also, was ist die Schlussfolgerung? Führen die CNAME-Einträge zu einer zweiten DNS-Suche oder nicht? Wenn nicht, warum schlagen viele vor, die TTL für CNAME-Datensätze zu erhöhen?
— Marco Demaio

10
Solange sich der A-Datensatz auf demselben autorisierenden Server wie der CNAME befindet, ist es die gleiche Suche
— Mike
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.