Почему dig + trace игнорирует связующие записи DNS?

Вот мои вопросы:

  • Почему dig + trace игнорирует Glue Records?
  • Это поведение характерно для dig или dig + trace , или же рекурсивный сервер имен также «вручную проверяет» полученные связующие записи?

Вот более подробное объяснение:

Это полный захват транзакции DNS, которая вызвала их вопросы.

Я использую dig + trace для отслеживания процесса DNS для простого разрешения записи A для www.pizza.com . Как и ожидалось, первый запрос был адресован моему DNS-серверу в поисках корневых серверов имен (пакет №1). Затем мой DNS-сервер отвечает списком всех 13 серверов имен (пакет № 2):

packets 1 and 2

Обратите внимание, что в пакете № 2 нет дополнительных записей. Что побуждает моего клиента искать запись A для каждого из предоставленных корневых серверов имен. Что происходит в пакетах с 3 по 28:

packets 3 - 28

Пока это ожидается. Но дальше становится интересно.

Пакет 29 - это мой клиент, который делает запрос к 192.5.5.241 (f.root-servers.net) в поисках записи A для www.pizza.com. Очевидно, корневой NS не знает A-запись, поэтому вместо этого предоставляет полные доменные имена серверов доменных имен TLD .com (a.gtld-servers.net, b.gtld-servers.net и т. Д.).Обратите внимание, что F Root NS также предоставляет «Дополнительные записи», которые представляют собой записи A, соответствующие каждому из полных доменных имен сервера имен TLD .com:

Packets 29-30

Далее следует то, вокруг чего вращается мой вопрос. Несмотря на то, что мой клиент получил записи A, относящиеся к серверам имен TLD .com. Он все же решил сделать запросы записи A для каждого из серверов имен TLD .com (пакеты 31-56):

Packets 31-56

То же самое происходит чуть ниже (пакеты 57-66), когда мой клиент запрашивает .com Серверы имен TLD для записи A для www.pizza.com и получают авторитетные записи NS для домена Pizza.com. Серверы имен TLD .com предоставляют связующие записи, но мой клиент по-прежнему выходит и вручную разрешает A-запись каждого NS-сервера.

У меня следующие вопросы:

  • Почему dig + trace игнорирует Glue Records?
  • Является ли это поведение характерным для dig или dig + trace , или же рекурсивный сервер имен также «вручную проверяет» полученные связующие записи?

Я использую эту версию Dig:
DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5. 1

И выполнил эту команду:
$ dig www.pizza.com + trace -4


Edit 1: Также добавлены вопросы вверху, чтобы было легче понять, о чем я спрашиваю


Edit 2 : Этот вопрос похож на мой, но не совсем то же самое. В этом вопросе @Andrew B подтверждает то же поведение, которое я наблюдаю:

+ trace обманули и проконсультировались с локальным преобразователем, чтобы получить IP-адрес сервера имен следующего прыжка вместо консультации с клеем.

Но мой вопрос конкретно , почему делает это dig + trace ? Какая польза? Что он пытается предоставить? Кажется, это просто больше работы, которая иногда может даже вызвать неточность в том, как dig разрешает адрес и как фактический DNS разрешает адрес (как указано в другом вопросе).

Другой вопрос, кажется, действительно отвечает на мой второй вопрос. Похоже, что такое поведение игнорирования клейких записей характерно для копания, а не того, как будет действовать «нормальный» рекурсивный сервер имен.

3
задан 13 April 2017 в 15:13
1 ответ

В официальной документации сказано, что dig может использовать связующие записи для последующих запросов, но может вернуться к рекурсивным запросам, если связующие записи не предоставлены [1]:

dig все еще может отправлять запросы на серверы, перечисленные в /etc/resolv.conf при использовании + trace При итеративном выполнении делегирования, как указано с опцией + trace, dig будет начинаться с запроса NS-записей для серверов, авторитетных для root (".").Они могут быть, а могут и не быть поставляется с клеем - это записи A и AAAA, которые можно использовать для следующие запросы, которые должен отправить dig. Когда нет клея, либо при первоначальном запросе для корневых серверов имен, либо позже, когда после делегирования dig вернется к рекурсивному запросу серверы, перечисленные в /etc/resolv.conf, чтобы получить необходимые наборы A / AAAA RRset.

Указание @server не меняет этого поведения - сервер указанные таким образом, будут запрашиваться только записи NS для серверы, авторитетные для root (".").

Это может быть неправильная документация или ошибка в раскопках.

[1] https://kb.isc.org/docs/aa-00208

0
ответ дан 22 January 2020 в 14:46

Теги

Похожие вопросы