Время ожидания для перенаправления и условных переадресаторов
В этой статье описывается резервное и время ожидания, которое существует при настройке одного или нескольких IP-адресов DNS-серверов в качестве серверов пересылки или условных серверов пересылки на DNS-сервере.
Исходный номер базы знаний: 2834250
Итоги
Аналогично DNS-клиентам, настройка DNS-серверов с несколькими серверами пересылки или условным переадресатором добавляет дополнительную отказоустойчивость в инфраструктуру DNS. Добавление нескольких DNS-серверов в качестве серверов пересылки или условных серверов пересылки позволяет dns-именам продолжать разрешаться в случае сбоев только настроенного сервера, базового сетевого канала или вспомогательной сетевой инфраструктуры.
Однако добавление отказоустойчивости на серверах еще более важно, так как существует потенциально транзитивная операция, которую некоторые сервер выполняет от имени множественности клиентов, которые в настоящее время зависают. Затем ресурсы используются для добавочного времени.
Не забудьте правильно настроить параметры, если вы хотите использовать три или более серверов пересылки или условных пересылки, так как параметры по умолчанию могут быть не оптимизированы для этого большого количества серверов.
Что такое поведение DNS-сервера по умолчанию, если в качестве переадресаторов настроено более двух DNS-серверов.
Чтобы понять, как это работает, ключевые переменные:
RecursionTimeout — как долго система доменных имен (DNS) ожидает ответа на рекурсивный клиентский запрос перед завершением поиска.
Он сохраняется в реестре
HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\RecursionTimeout
в разделе и настраивается с помощьюdnscmd /config /RecursionTimeout <value>
. Это можно проверить с помощью командлетаGet-DnsServerRecursion
PowerShell.Значение по умолчанию — 8 секунд в Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019 и Windows Server 2022.
RecursionTimeout определяется на уровне DNS-сервера и не зависит от конкретной зоны, запрошенной.
ForwardingTimeout — время ожидания системы доменных имен (DNS) для каждого сервера в списке в переадресации для ответа на запрос.
Он сохраняется в реестре
HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\ForwardingTimeout
и настраивается с помощьюdnscmd /config /ForwardingTimeout <value>
. Это также можно проверить с помощью командлетаGet-DnsServerForwarder
PowerShell.Значение по умолчанию — 3 секунды в Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019 и Windows Server 2022.
Функция 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 секунд, если сервер пересылки Nth не ответил, DNS-сервер запрашивает сервер пересылки (N+1)th пересылки. |
Примечание.
В дополнение к настроенной задержке может быть дополнительная половина секунды задержки из-за затрат на систему.
Алгоритм останавливается, когда истекшее время превысило значение RecursionTimeout
Если срок действия recursionTimeout истекает, DNS-сервер ответит клиенту с ошибкой сервера.
Примечание.
Мы не отправляем сбой сервера сразу после истечения срока действия recursionTimeout , но только когда время попробовать следующий сервер пересылки.
Если сервер управляется контактом со всеми серверами пересылки до истечения срока действия RecursionTimeout без получения ответов, он попытается использовать корневые подсказки для разрешения имен (параметр по умолчанию, если рекурсия не была отключена на уровне сервера).
Это означает, что при использовании параметров по умолчанию DNS-сервер Windows сможет запрашивать не более трех серверов пересылки. Не будет достаточно времени, чтобы прибыть, чтобы использовать четвертый переадресатор. На самом деле с параметрами по умолчанию DNS-сервер Windows будет:
- Запрос первого средства пересылки через 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 никогда не запрашивается):
Сведения о назначении временного смещения времени Для источника
6:33:51.7507293 0.2731738 0.0000000 10.0.0.31 192.168.0.1 DNS:QueryId = 0xF03, QUERY (стандартный запрос), запрос дляmicrosoft.com
типа Надстройка узла в классе Internet Internet
6:33:51.7510021 0.2734466 0.0002728 192.168.0.1 10.0.0.1 DNS:QueryId = 0xBD57, QUERY (стандартный запрос), запрос дляmicrosoft.com
добавления узла типа в классе Internet Internet
6:33:55.2997074 3.8221519 3.5487053 192.168.0.1 10.0.0.2 DNS:QueryId = 0xBD57, QUERY (стандартный запрос), запрос дляmicrosoft.com
типа Надстройка узла в классе Интернет
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.018109 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>
.Значение по умолчанию — 8 секунд в Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019 и Windows Server 2022.
RecursionTimeout определяется на уровне DNS-сервера и не зависит от конкретной зоны, запрошенной.
ForwarderTimeout — время ожидания системы доменных имен (DNS) для каждого сервера в списке условных пересылки для ответа на запрос.
Так как условные пересылки настроены для определенных зон, функция ForwarderTimeout также зависит от зоны.
Он сохраняется в реестре в разделе
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DNS Server\Zones\ <zone_name>\ForwarderTimeout
.Значение по умолчанию — 5 секунд в Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019 и Windows Server 2022.
Это также параметр, который можно увидеть в графическом интерфейсе условных пересылки.
Когда 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 секунд, если условный сервер пересылки Nth не ответил, DNS-сервер запрашивает условный сервер пересылки (N+1)th. |
Примечание.
В дополнение к настроенной задержке может быть дополнительная половина секунды задержки из-за затрат на систему.
Алгоритм останавливается, когда истекшее время превысило значение RecursionTimeout
Если срок действия recursionTimeout истекает, DNS-сервер ответит клиенту с ошибкой сервера.
Примечание.
Мы не отправляем сбой сервера сразу после истечения срока действия recursionTimeout , но только в том случае, если это время для проверки следующего условного пересылки.
Это означает, что с параметрами по умолчанию DNS-сервер Windows сможет запрашивать не более двух условных пересылки. Не будет достаточно времени, чтобы прибыть к использованию третьего условного пересылки. На самом деле с параметрами по умолчанию DNS-сервер Windows будет:
- Запрос первого средства пересылки через 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 никогда не запрашивается):
Сведения о назначении временного смещения времени Для источника
6:50:32.5481816 0.4306857 0.0000000 10.0.0.33 192.168.0.1 DNS:QueryId = 0x245A, QUERY (стандартный запрос), запрос дляmicrosoft.com
типа Надстройка узла в классе Интернет
6:50:32.5484341 0.4309382 0.0002525 192.168.0.1 10.0.0.1 DNS:QueryId = 0x252B, QUERY (стандартный запрос), запрос кmicrosoft.com
надстройке узла типа в классе Internet Internet
6:50:38.1695163 6.0520204 5.6210822 192.168.0.1 10.0.0.2 DNS:QueryId = 0x252B, QUERY (стандартный запрос), запрос дляmicrosoft.com
добавления узла типа в классе Internet Internet
6:50:44.1856567 12.0681608 6.0161404 192.168.0.1 10.0.0.33 DNS:QueryId = 0x245A, QUERY (стандартный запрос), ответ — сбой сервера