Czy rekordy CNAME powodują drugie wyszukiwanie DNS?

19

Załóżmy, że mamy subdomenę o nazwie www.foo.com, która ma rekord CNAME wskazujący na foo.bar.cc. Z kolei Foo.bar.cc ma rekord A wskazujący na adres IP 1.2.3.4.

Teraz, jeśli przeprowadzę wyszukiwanie DNS na stronie www.foo.com, otrzymam odpowiedź w następujący sposób:

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

Moje pytanie brzmi: na jakim etapie foo.bar.cc jest rozwiązany? Czy robi to rekursywny serwer DNS, zanim odpowiedź zostanie odesłana z powrotem do klienta? A może klient wysyła drugie żądanie do serwera DNS, tym razem do foo.bar.cc? A może zależy to od tego, czy serwer DNS ma już wpis w pamięci podręcznej dla foo.bar.cc?

Pytam, ponieważ jeden konkretny rekurencyjny serwer DNS zwraca tylko pierwszą linię, tzn. Nie rozpoznaje CNAME. Jednak po około 20 sekundach kolejne żądania dotyczące tego samego hosta będą wówczas obejmować obie linie.

Jaskółka oknówka
źródło

Odpowiedzi:

16

2 rekordy są zwracane razem w tym samym żądaniu. Możesz to sprawdzić za pomocą następującego polecenia

dig +trace www.foo.com

Na przykład moja domena photoblog.com ma nazwę dla www, więc ostatnie 2 żądania z serwera nazw photoblog do mnie wyglądają

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

Jak widać, zapytanie pyta ns1 / ns2, jaki jest adres IP witryny www.photoblog.com, i zwraca dobrze, że jest to nazwa domeny photoblog.com, a oto adres IP tego rekordu A.

Mikrofon
źródło
W przykładzie operacyjnym, w którym zwrócił tylko CNAME, serwer DNS prawdopodobnie miał trudności z podążeniem za CNAME, a zatem podał klientowi wszelkie posiadane informacje. W końcu zakończyło się po CNAME i było w stanie udzielić pełnej odpowiedzi.
David Schwartz
Tak - jeśli serwer DNS ma więcej informacji, zwróci je w ADDITIONALsekcji odpowiedzi. Czasami, gdy nie zwraca, oznacza to, że moduł rekurencyjny nie miał go w swojej pamięci podręcznej - potencjalnie dlatego, CNAMEże Arekord i rekord wskazuje, że ma różne autorytatywne serwery (więc początkowe żądanie modułu rekurencyjnego nie otrzymało CNAMEdodatkowej Aodpowiedzi, tylko CNAME).
Shane Madden
@Mike: więc jaki jest wniosek? Czy rekordy CNAME powodują drugie wyszukiwanie DNS, czy nie? Jeśli nie, to dlaczego wielu sugeruje zwiększenie TTL rekordu CNAME?
Marco Demaio
10
tak długo, jak rekord A znajduje się na tym samym autorytatywnym serwerze co CNAME, tak samo wygląda
Mike