Как правильно получить список DNS-серверов, отвечающих за определенный хост? - PullRequest
0 голосов
/ 29 апреля 2011

Я использую следующие шаги:

  1. Запрос записей для хоста, некоторые серверы возвращают записи NS в разделе полномочий, поэтому я извлекаю их из этого раздела, если таковые имеются.
  2. Запрос записей NS, извлечение их из раздела ответов.

Проблема с «поддоменами» (CNAME), например:

> dig www.microsoft.com A

;; ANSWER SECTION:
www.microsoft.com.      696     IN      CNAME   toggle.www.ms.akadns.net.
toggle.www.ms.akadns.net. 119   IN      CNAME   g.www.ms.akadns.net.
g.www.ms.akadns.net.    263     IN      CNAME   lb1.www.ms.akadns.net.
lb1.www.ms.akadns.net.  31      IN      A       65.55.12.249

> dig www.microsoft.com NS

;; ANSWER SECTION:
www.microsoft.com.      619     IN      CNAME   toggle.www.ms.akadns.net.
toggle.www.ms.akadns.net. 42    IN      CNAME   g.www.ms.akadns.net.
g.www.ms.akadns.net.    186     IN      CNAME   lb1.www.ms.akadns.net.

;; AUTHORITY SECTION:
akadns.net.             174     IN      SOA     internal.akadns.net. hostmaster.akamai.com. 1304057105 90000 90000 90000 180

> dig lb1.www.ms.akadns.net A

;; ANSWER SECTION:
lb1.www.ms.akadns.net.  79      IN      A       65.55.12.249

> dig lb1.www.ms.akadns.net NS

;; AUTHORITY SECTION:
akadns.net.             176     IN      SOA     internal.akadns.net. hostmaster.akamai.com. 1304057402 90000 90000 90000 180

Как вы видите, никаких записей NS не возвращено. Как преодолеть эту проблему?

1 Ответ

1 голос
/ 17 мая 2011

Ваш алгоритм неверен.Вот правильный.

Для каждого последовательно более короткого супердомена S целевого доменного имени T, начиная с самого T:

  1. Выполните поиск NSна S.Если ответ не является непустым набором записей ресурсов, перейдите к шагу 3. В противном случае у вас есть набор промежуточных доменных имен D[].
  2. Выполнение поиска A и AAAA для каждого имени вD[].Это даст вам набор IP-адресов.У тебя есть ответ. END .
  3. При желании можно выполнить поиск SOA на S.Если ответ является непустым набором записей ресурсов, вы собираетесь пересечь административную границу, не обнаружив к настоящему моменту непустых наборов записей ресурсов NS.В зависимости от того, что вы пытаетесь выяснить, вы можете выбрать ABEND .

Помните, что вы должны отправлять запросы на собственный разрешающий прокси-сервер DNS., а не на внешние DNS-серверы контента, так что вы получите полный ответ , а не частичный.Также помните, что вы должны следовать CNAME цепям при проверке ответов.Например, ответ на ваш запрос dig www.microsoft.com. NS, приведенный выше, представляет собой цепочку CNAME, ведущую к пустой NS записи ресурса, установленной для lb1.www.ms.akadns.net..

...