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

Корневая запись DNS жестко запрограммирована, тогда почему у нее есть ttl?

Я размещаю рекурсивный сервер имен локально, поэтому мне не нужен поставщик услуг или другой общедоступный DNS-сервер для разрешения имен. Хотя IP-адреса корневого сервера имен жестко прописаны в файле конфигурации (в папке Bind /etc/bind/db.root файл), когда я запускаю несколько последовательных nslookup команды для корневого сервера имен для . , то поле TTL все равно уменьшается.

Почему TTL уменьшится, если это задано в файле конфигурации?
И зачем вообще нужен TTL на корневом уровне, когда он закодирован?

Обычно вы должны явно настроить корневые серверы DNS, как показано в приведенном ниже фрагменте:

zone "." {
  type hint;
  file "/etc/bind/db.root";
};

Если вы заметили, что тип зоны не является обычным master ни slave но особый тип зоны называется hint.

Когда сервер имен запускается, он использует только корневые ссылки для поиска отвечающего корневого сервера имен и затем получает оттуда текущий список корневых серверов имен. Это корневые серверы, которые будут фактически использоваться во время работы.

Поскольку они кэшируются, им потребуется TTL, и, как вы заметили, этот TTL будет уменьшаться, как и любая другая кешированная запись DNS.

Если для класса IN не указана зона подсказок, сервер использует скомпилированный по умолчанию набор подсказок корневых серверов. Источник: The Bind Справочное руководство администратора.

Как объяснил Брайан в своем ответе, корневая зона действительно изменяется, и пока хотя бы один сервер имен остается действующим, зона подсказок допускает такие изменения в корневых серверах имен, не требуя от всех существующих серверов имен обновлять свои статические файлы конфигурации.

Они не жестко запрограммированы на постоянной основе - файл корневой зоны со временем меняется, поэтому записи, передаваемые в резолверы, нельзя настроить на вечную жизнь.

Например, текущий последний раз обновлялся в 2014 году, как показано по началу файла. Вот:

;       This file holds the information on root name servers needed to
;       initialize cache of Internet domain name servers
;       (e.g. reference this file in the "cache  .  <file>"
;       configuration file of BIND domain name servers).
;
;       This file is made available by InterNIC 
;       under anonymous FTP as
;           file                /domain/named.cache
;           on server           FTP.INTERNIC.NET
;       -OR-                    RS.INTERNIC.NET
;
;       last update:    November 05, 2014
;       related version of root zone:   2014110501
;
; formerly NS.INTERNIC.NET
;
.                        3600000      NS    A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:ba3e::2:30

db.root используется только как часть процесса запуска DNS-сервера для поиска настоящих текущих корневых серверов. Затем они обновляются в соответствии с TTL.