Как долго тайм-аут DNS кэшируется?

Если ни один из серверов для всей зоны не может быть установлен, как долго этот факт будет кэшироваться?

4 ответа

Решение

Согласно 1998-03 rfc2308#section-7.1, если разрешение не является успешным, и приводит к SERVFAIL (например, из тайм-аута), тогда он МОЖЕТ быть кэширован, но если это так, он НЕ ДОЛЖЕН кэшироваться дольше 5 минут.

На практике кажется, что он часто вообще не кэшируется или, если кэшируется, кэшируется в течение чисто символического промежутка времени, например одной секунды.


  • До появления BIND 9.9.6-S1 (выпущенного в 2014 году), по-видимому, SERVFAIL не был кеширован вообще.

    Это было введено с коммитом a878301 (2014-09-04).

    Например, во время этого вопроса и во всех версиях BIND, выпущенных до 2014 года, рекурсивный преобразователь BIND НЕ кэшировал SERVFAIL, если верить вышеуказанному коммиту и документации о первом введении в 9.9.6-S1.

  • В последней версии BIND по умолчанию servfail-ttl настройка была установлена ​​на 1s с 2015 года (по состоянию на 2016 год), и был жестко закодирован до 30s (вместо RFC-обязательного потолка 300s).

    Смотрите коммит 90174e6 (2015-10-17).

    В течение 2014/2015 по умолчанию было 10s и потолок был 300s, но согласно приведенным ниже цитатам, более высокие цифры оказались необоснованно пессимистичными.


Примечательные ссылки (с соответствующими цитатами) включают в себя:

  • https://kb.isc.org/article/AA-01178/ (2014 / 2016-01-07)

    Результат кэширования ответов SERVFAIL включал в себя некоторые ситуации, в которых он был признан вредным для клиента, особенно когда причины представления SERVFAIL клиенту были временными и в сценарии, где немедленная повторная попытка запроса была бы более подходящее действие.


  • http://cr.yp.to/djbdns/third-party.html (2003-01-11)

    Вторая тактика состоит в том, чтобы утверждать, что широко распространенные клиенты DNS будут делать что-то особенно плохое, когда они не могут получить доступ ко всем серверам DNS. Проблема с этим аргументом заключается в том, что утверждение является ложным. Любой такой клиент явно глючит и не сможет выжить на рынке: подумайте, что произойдет, если маршрутизаторы клиента ненадолго выйдут из строя, или если сеть клиента будет временно затоплена.


В итоге, SERVFAIL маловероятно, что он будет кэширован, но даже если он будет кэширован, это будет максимум двузначное или даже однозначное число секунд.

В BIND 9.11, SERVFAIL Ответ по умолчанию кэшируется на 1 секунду.

Из Справочного руководства администратора BIND:

SERVFAIL-ТТЛ

Устанавливает количество секунд для кеширования SERVFAIL ответ из-за сбоя проверки DNSSEC или другого общего сбоя сервера. Если установлено в 0, SERVFAIL кеширование отключено. SERVFAIL кеш не используется, если запрос имеет CD (Проверка отключена) бит установлен; это позволяет повторить запрос, который не удался из-за проверки DNSSEC, не дожидаясь SERVFAIL TTL истекает.

Максимальное значение составляет 30 секунд; любое более высокое значение будет тихо уменьшено. По умолчанию это 1 секунда.

Это реализовано в соответствии с RFC 2308, хотя на практике максимальные значения времени ожидания, указанные в нем, были признаны проблематичными, поэтому и существует текущее значение по умолчанию.

Согласно http://cr.yp.to/djbdns/third-party.html

RFC 2182 утверждает, что сбои DNS не кэшируются; это утверждение является ложным.

Тайм-аут не будет кэширован. У него еще нет TTL.

Другие вопросы по тегам