Что запускает использование отрицательного времени для значения записи DNS SOA?

8

Я читаю следующий учебник DNS и в нем есть этот пример:

domain.com.  IN SOA ns1.domain.com. admin.domain.com. (
                                        12083   ; serial number
                                        3h      ; refresh interval
                                        30m     ; retry interval
                                        3w      ; expiry period
                                        1h      ; negative TTL
)

Описание negative TTLзначения говорит об этом:

1 ч. Это время, в течение которого сервер имен будет кэшировать ошибку имени, если он не сможет найти запрошенное имя в этом файле.

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

Ole
источник

Ответы:

11

Отрицательный интервал кэширования SOAвступает в действие, когда официальный сервер указывает, что запрошенная запись не существует. Конкретные случаи:

  • Ответы с кодом ответа NXDOMAIN.
  • Отвечает с NODATAсинтетическим состоянием, но только в тех формах, где присутствует SOAзапись. ( NOERRORкод, 0 ответов, 1 SOAзапись в разделе полномочий + необязательные NSзаписи)

Для серверного программного обеспечения характерно применение локально настроенного максимума для этого значения, поэтому даже если у вас отрицательный TTL 86400небытия, не обязательно будет долго кэшироваться удаленными рекурсивными серверами.

Случаи охватываются разделом RFC 2308, если вы хотите читать дальше. Прочитайте раздел 2 как учебник для начинающих, затем 5-6.

Андрей Б
источник
IIUC, если я запрашиваю "not.available.example.com" с авторитетного сервера, то он кэшируется на отрицательное время жизни?
Оле
Правильный. Полностью рекурсивные серверы будут надежно кэшировать несуществование, но поведение обработчиков заглушек (таких как библиотеки распознавателей ОС) будет отличаться. Windows делает, например. Вы найдете «Имя не существует». на выходе ipconfig /displaydns, который представляет NXDOMAIN. В этом выводе вы также найдете экземпляры «Нет записей типа X», что соответствует NODATA. Большинство систем на основе UNIX этого не делают , потому что они вообще не кэшируются без дополнительной настройки. ( nscdс включенным кэшированием, локальным рекурсивным сервером и использованием 127.0.0.1 для поиска DNS и т. д.)
Эндрю Б
Так что, если я правильно представляю цель, можно ли дважды проверить, что «not.available.example.com» действительно не был доступен в соответствии с полным рекурсивным сервером? Другими словами, если я не получаю IP-адрес, я могу запросить у сервера что-то вроде конечной точки / displaydns, и результат должен содержать подтверждение, что адрес действительно не существует?
Оле
ipconfig /displaydnsсуществует, чтобы сообщить вам содержимое локального кеша-преобразователя заглушек. Не больше, не меньше. То, что администраторы могут захотеть сделать с этой информацией, открыто.
Андрей B
@Ole Цель состоит в том, чтобы предотвратить повторные запросы для имени, когда сервер уже сказал решателю, что оно не существует. Как и любое другое кеширование.
Бармар