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.

Martin
quelle

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.

Mike
quelle
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