Я проверил, что/etc/bind/db.root текстовый файл и весь корневой дюйм/с сервера имен являются текущими (я проверил дюйм/с один за другим). Таким образом, BIND9 читает этот файл и знает, как найти корневые серверы.
Вывод dig . ns
команда показывает мне это. Почему я не вижу в выводе фактических IP-адресов? Это нормально?
;; ANSWER SECTION:
. 13309 IN NS i.root-servers.net.
. 13309 IN NS e.root-servers.net.
. 13309 IN NS g.root-servers.net.
. 13309 IN NS d.root-servers.net.
. 13309 IN NS b.root-servers.net.
. 13309 IN NS a.root-servers.net.
. 13309 IN NS m.root-servers.net.
. 13309 IN NS l.root-servers.net.
. 13309 IN NS k.root-servers.net.
. 13309 IN NS j.root-servers.net.
. 13309 IN NS f.root-servers.net.
. 13309 IN NS c.root-servers.net.
. 13309 IN NS h.root-servers.net.
Затем, почему некоторые люди включают это в свои конфигурационные файлы?
zone "." {
type hint;
file "root.hints";
};
ИЛИ:
zone "." {
type hint;
file "db.root";
};
Вы не видите IP-адреса в разделе ответов вашей команды dig
, потому что IP-адреса корневых серверов не являются частью авторитетного ответа на предоставленный вами запрос. Если вы зададите один из корневых серверов тот же вопрос, вы получите ответ, включающий IP-адреса корневых серверов в «дополнительном» разделе ответа, но это потому, что эта информация: in bailiwick "по этому вопросу. Когда вы запрашиваете эту информацию у своего локального рекурсивного преобразователя, она выходит из-под контроля, и поэтому вы не получаете эту информацию.
Что касается того, почему люди включают файл корневых подсказок, это потому, что без этого DNS-сервер не знаю, с чего начать поиск. Поскольку это зона типа «подсказка», ее содержимое никогда не используется для ответа на запрос, а просто для того, чтобы предоставить преобразователю некоторую внутреннюю информацию для «начальной загрузки». Как только от самих корневых серверов будет получена более свежая информация, распознаватель забывает, что было в зоне подсказок, и вместо этого использует обновленную информацию.
BIND9 имеет по умолчанию скомпилированные в нем корневые подсказки, которые используются при отсутствии конкретной конфигурационной директивы.
При запуске BIND посылает "прайминг-запрос" серверам имён корней, чтобы заменить загруженные корневые подсказки текущим списком (и попробует другие серверы имён корней, если выбранный не ответит).
Серверы имён корней возвращают список IP-адресов, потому что список является необходимым "клеем" для этого запроса. Некоторые рекурсивные серверы могут возвращать его, другие нет. [Я только что проверил, и один из моих возвращает, а другой нет - я еще не выяснил почему]
.