Назад | Перейти на главную страницу

Приводят ли записи CNAME ко второму поиску DNS?

Допустим, у нас есть поддомен www.foo.com, в котором запись CNAME указывает на foo.bar.cc. Foo.bar.cc, в свою очередь, имеет запись A, указывающую на IP-адрес 1.2.3.4.

Теперь, если я выполню поиск в DNS на сайте www.foo.com, я получу такой ответ:

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

У меня вопрос, на каком этапе разрешается foo.bar.cc? Выполняется ли это рекурсивным DNS-сервером до того, как ответ будет отправлен обратно клиенту? Или клиент отправляет второй запрос на DNS-сервер, на этот раз для foo.bar.cc? Или это зависит от того, есть ли на DNS-сервере кешированная запись для foo.bar.cc?

Я спрашиваю, потому что один конкретный рекурсивный DNS-сервер возвращает только первую строку, то есть не разрешает CNAME. Однако примерно через 20 секунд последующие запросы для того же хоста будут включать обе строки.

Две записи возвращаются вместе в одном запросе. Вы можете узнать это с помощью следующей команды

dig +trace www.foo.com

Например, мой домен photoblog.com имеет cname для www, поэтому последние 2 запроса от сервера имен фотоблога мне выглядят так:

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

Как вы можете видеть, запрос спрашивает ns1 / ns2, какой IP для www.photoblog.com, и он хорошо возвращает это cname для photoblog.com, а вот IP для этой записи A.