NET: DNS: превышение времени ожидания разрешения серверов пересылки и условной пересылки

В этой статье описывается резервное поведение и время ожидания, которые существуют, когда один или несколько IP-адресов DNS-серверов настроены как серверы пересылки или условные серверы пересылки на DNS-сервере.

Исходный номер базы знаний: 2834250

Сводка

Дополнительные сведения об истечении времени ожидания разрешения DNS-клиента см. в статье NET: DNS: время ожидания разрешения DNS-клиента .

Как и в случае с DNS-клиентами, настройка DNS-серверов с несколькими серверами пересылки или условной пересылки повышает отказоустойчивость инфраструктуры DNS. Добавление нескольких DNS-серверов в качестве серверов пересылки или условной пересылки позволяет по-прежнему разрешать DNS-имена в случае сбоев только настроенного сервера, базового сетевого канала или вспомогательной сетевой инфраструктуры.

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

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

Поведение DNS-сервера по умолчанию, если в качестве серверов пересылки настроено более двух DNS-серверов

Чтобы понять, как это работает, ключевые переменные:

  • RecursionTimeout — время ожидания, пока система доменных имен (DNS) ожидает ответа удаленных серверов на рекурсивный клиентский запрос, прежде чем завершать поиск.

    Он сохраняется в реестре в разделе HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\**RecursionTimeoutи настраивается via dnscmd /config /RecursionTimeout <value>.

    Значение по умолчанию:

    • 15 секунд в Windows Server 2003

    • 8 секунд в Windows Server 2008, 2008 R2 и 2012

      RecursionTimeout определяется на уровне DNS-сервера и не зависит от конкретной запрашиваемой зоны.

  • ForwardingTimeout — время, в течение которых система доменных имен (DNS) ожидает ответа на запрос каждого сервера в списке в переадресовщиках.

    Он сохраняется в реестре HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\**ForwardingTimeout и настраивается с помощью dnscmd /config /ForwardingTimeout <value>.

    Значение по умолчанию:

    • 5 секунд в Windows Server 2003

    • 3 секунды в Windows Server 2008, 2008R2 и 2012

      Параметр ForwardingTimeout определяется на уровне DNS-сервера и не зависит от конкретной запрашиваемой зоны.

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

Время (в секундах с момента запуска) Действие
0 Клиент запрашивает DNS-сервер. DNS-сервер немедленно перенаправит запрос в свой первый сервер пересылки.
<forwarding_timeout> Через <forwarding_timeout> секунд, если первое средство пересылки не ответило, DNS-сервер запросит второе средство пересылки.
2 * <forwarding_timeout> +1 После <forwarding_timeout> +1 секунды, если второй сервер пересылки не ответил, DNS-сервер запросит третье средство пересылки.
... ...
N * <forwarding_timeout> +(N-1) После <forwarding_timeout> + 1 секунды, если N-й сервер пересылки не ответил, DNS-сервер запросит (N+1)-й сервер пересылки.

Примечание.

В дополнение к настроенной задержке может быть дополнительная половина секунды задержки из-за накладных расходов на систему.

Алгоритм останавливается, когда затраченное время превышает значение RecursionTimeout.

Если срок действия RecursionTimeout истек, DNS-сервер ответит клиенту с ошибкой сервера.

Примечание.

Сбой сервера отправляется не сразу после истечения срока действия RecursionTimeout, но только в том случае, если на есть время попробовать следующий сервер пересылки.

Если серверу удастся связаться со всеми серверами пересылки до истечения срока действия RecursionTimeout без получения ответов, он будет пытаться использовать корневые указания для разрешения имен (параметр по умолчанию, если рекурсия не была отключена на уровне сервера).

Это означает, что с параметрами по умолчанию сервер 2008R2 сможет запрашивать не более 3 серверов пересылки. Не будет достаточно времени, чтобы прибыть, чтобы использовать четвертый сервер пересылки. Фактически, с параметрами по умолчанию для 2008R2 сервер будет:

  • Запрос к первому серверу пересылки через 0 секунд
  • Запрос второго сервера пересылки через 3,5 секунды
  • Запрос третьего сервера пересылки через 3,5 + 4 = 7,5 секунды

В восьмой секунде истекает срок действия RecursionTimeout , поэтому мы не дойдем до точки, где запрашивается четвертое средство пересылки (что произошло бы через 3,5 + 4 + 4 = 11,5 секунды).

Затем мы отправим ответ на сбой сервера через 11,5 секунды.

Пример:

DNS-сервер с IP-адресом 192.168.0.1 настроен с пятью серверами пересылки (10.0.0.1-10.0.0.5).

Клиент имеет IP-адрес 10.0.0.31 и запрашивает Microsoft.com

При отслеживании сети мы увидим следующие выходные данные сетевого монитора (примечание 10.0.0.4 и 10.0.0.5 никогда не запрашивали):

Сведения о назначении источника time offset timeDelta
6:33:51.7507293 0.2731738 0.000000 10.0.0.31 192.168.0.1 DNS:QueryId = 0xF03, QUERY (стандартный запрос), Query for of microsoft.com type Host Addr on class Internet
6:33:51.7510021 0.2734466 0.0002728 192.168.0.1 1 10.0.0.1 DNS:QueryId = 0xBD57, QUERY (стандартный запрос), Query for of microsoft.com type Host Addr on class Internet
6:33:55.2997074 3.8221519 3.5487053 192.168.0.1 10.0.0.2 DNS:QueryId = 0xBD57, QUERY (стандартный запрос), Query for of microsoft.com type Host Addr on class Internet
6:33:59.2931644 7.8156089 3.9934570 192.168.0.1 10.0.0.3 DNS:QueryId = 0xBD57, QUERY (стандартный запрос), Запрос для microsoft.com типа Надстройка узла в классе Internet
6:34:03.3112753 11.8337198 4.0181109 192.168.0.1 10.0.0.31 DNS:QueryId = 0xF03, QUERY (стандартный запрос), Ответ — сбой сервера

Поведение DNS-сервера по умолчанию, если более двух DNS-серверов настроены в качестве условных серверов пересылки

Как и в случае с серверами пересылки, для условных переадресаторов есть две ключевые переменные. У нас по-прежнему есть RecursionTimeout (который работает на уровне сервера), но в этом сценарии мы используем ForwarderTimeout вместо ForwardingTimeout. В частности, обратите внимание, что ForwarderTimeout работает на основе зоны и имеет различные значения по умолчанию:

  • RecursionTimeout — время ожидания, пока система доменных имен (DNS) ожидает ответа удаленных серверов на рекурсивный клиентский запрос, прежде чем завершать поиск.

    Он сохраняется в реестре в разделе HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\RecursionTimeout

    Его можно настроить с помощью dnscmd /config /RecursionTimeout <value>.

    Значение по умолчанию:

    • 15 секунд в Windows Server 2003

    • 8 секунд в Windows Server 2008 и 2008R2

      RecursionTimeout определяется на уровне DNS-сервера и не зависит от конкретной запрашиваемой зоны.

  • ForwarderTimeout — сколько времени система доменных имен (DNS) ожидает ответа на запрос каждого сервера в списке условных серверов пересылки.

    Так как условные серверы пересылки настроены для определенных зон, ForwarderTimeout также зависит от зоны.

    Он сохраняется в реестре в разделе HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DNS Server\Zones\ <zone_name>\ForwarderTimeout.

    Значение по умолчанию — 5 секунд в Windows Server 2003, 2008, 2008R2 и 2012.

    Этот параметр также можно увидеть в графическом интерфейсе условной пересылки.

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

Время (в секундах с момента запуска) Действие
0 Клиент запрашивает DNS-сервер. DNS-сервер немедленно перенаправит запрос в свой первый условный сервер пересылки.
<forwarder_timeout> Через <forwarder_timeout> секунд, если первое средство условной пересылки не ответило, DNS-сервер запрашивает второе условное средство пересылки.
2 * <forwarder_timeout> +1 Через <forwarder_timeout> +1 секунд, если второй условный сервер пересылки не ответил, DNS-сервер запросит третье условное средство пересылки.
... ...
N * <forwarder_timeout> +(N-1) После <forwarder_timeout> +1 секунды, если N-й условный сервер пересылки не ответил, DNS-сервер запрашивает (N+1)-й условный сервер пересылки.

Примечание.

В дополнение к настроенной задержке может быть дополнительная половина секунды задержки из-за системных издержек

Алгоритм останавливается, когда затраченное время превышает значение RecursionTimeout.

Если срок действия RecursionTimeout истек, DNS-сервер ответит клиенту с ошибкой сервера.

Примечание.

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

Это означает, что при использовании параметров по умолчанию сервер 2008 R2 сможет запрашивать не более двух условных серверов пересылки. Для использования третьего условного сервера пересылки не будет достаточно времени. Фактически, с параметрами по умолчанию для 2008R2 сервер будет:

  • Запрос к первому серверу пересылки через 0 секунд
  • Запрос второго сервера пересылки через 5,5 секунды

В восьмой секунде истекает срок действия RecursionTimeout , поэтому мы не дойдем до точки запроса третьего условного сервера пересылки (что произошло бы через 5,5 + 6 = 11,5 секунды).

Затем мы отправим ответ на сбой сервера через 11,5 секунды.

Пример:

DNS-сервер с IP-адресом 192.168.0.1 настроен с пятью условными серверами пересылки (10.0.0.1-10.0.0.5) для зоны Microsoft.com.

Клиент имеет IP-адрес 10.0.0.31 и запрашивает Microsoft.com.

В сетевом захвате мы увидим следующие выходные данные сетевого монитора (примечание 10.0.0.3, 10.0.0.4 и 10.0.0.5 никогда не запрашивал):

Сведения о назначении источника time offset timeDelta
6:50:32.5481816 0.4306857 0.000000 10.0.33 192.168.0.1 DNS:QueryId = 0x245A, QUERY (стандартный запрос), Запрос для microsoft.com типа Надстройка узла в классе Internet
6:50:32.5484341 0.4309382 0.0002525 192.168.0.1 10.0.0.1 DNS:QueryId = 0x252B, QUERY (стандартный запрос), Query for of microsoft.com type Host Addr on class Internet
6:50:38.1695163 6.0520204 5.6210822 192.168.0.1 10.0.0.2 DNS:QueryId = 0x252B, QUERY (стандартный запрос), Query for of microsoft.com type Host Addr on class Internet
6:50:44.1856567 12.0681608 6.0161404 192.168.0.1 10.0.0.33 DNS:QueryId = 0x245A, QUERY (стандартный запрос), Ответ — сбой сервера

Ссылки