Я размещаю рекурсивный сервер имен локально, поэтому мне не нужен мой поставщик услуг или другой публичный 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.