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

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

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

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

решение1

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

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

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

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

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

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

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

решение2

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

Например, текущий файл последний раз обновлялся в 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

решение3

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

Связанный контент