Tempos limite de resolução de encaminhadores e encaminhadores condicionais
Este artigo descreve o comportamento de fallback e tempo limite que existe quando um ou mais IPs de servidores DNS são configurados como encaminhadores ou encaminhadores condicionais em um servidor DNS.
Número original do KB: 2834250
Resumo
Da mesma forma que os clientes DNS, a configuração de servidores DNS com mais de um encaminhador ou encaminhador condicional adiciona tolerância a falhas adicional à sua infraestrutura DNS. A adição de vários servidores DNS como encaminhadores ou encaminhadores condicionais permite que os nomes DNS continuem a ser resolvidos em caso de falhas do único servidor configurado, do link de rede subjacente ou da infraestrutura de rede de suporte.
No entanto, adicionar tolerância a falhas em servidores é ainda mais crítico porque há potencialmente uma operação transitiva que algum servidor está fazendo em nome de uma pluralidade de clientes que agora estão travando. Os recursos estão sendo consumidos por tempos cada vez mais longos.
Certifique-se de ajustar corretamente os parâmetros se quiser usar três ou mais encaminhadores/encaminhadores condicionais, pois as configurações padrão podem não ser otimizadas para essa grande quantidade de servidores.
Qual é o comportamento padrão de um servidor DNS quando mais de dois servidores DNS são configurados como encaminhadores
Para entender como isso funciona, as principais variáveis são:
RecursionTimeout - quanto tempo o DNS (Sistema de Nomes de Domínio) aguarda que os servidores remotos respondam a uma consulta recursiva do cliente antes de encerrar a pesquisa.
Ele é salvo no registro em
HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\RecursionTimeout
e pode ser configurado viadnscmd /config /RecursionTimeout <value>
. Isso pode ser verificado por meio do cmdletGet-DnsServerRecursion
do PowerShell .O valor padrão é de 8 segundos no Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019 e Windows Server 2022.
O RecursionTimeout é definido no nível do servidor DNS e é independente da zona específica consultada.
ForwardingTimeout - quanto tempo o DNS (Sistema de Nomes de Domínio) aguarda para que cada servidor na lista em Encaminhadores responda a uma consulta.
Ele é salvo no registro e
HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\ForwardingTimeout
configurável viadnscmd /config /ForwardingTimeout <value>
. Isso também pode ser verificado por meio do cmdletGet-DnsServerForwarder
do PowerShell .O valor padrão é de 3 segundos no Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019 e Windows Server 2022.
O ForwardingTimeout é definido no nível do servidor DNS e é independente da zona específica consultada.
Quando o servidor DNS recebe uma consulta para um registro em uma zona para a qual ele não é autoritativo e precisa usar encaminhadores, o comportamento padrão é o seguinte:
Tempo (segundos desde o início) | Action |
---|---|
0 | O cliente consulta o servidor DNS. O servidor DNS encaminha imediatamente a consulta para seu primeiro encaminhador. |
<forwarding_timeout> | Após <forwarding_timeout> segundos, se o primeiro encaminhador não responder, o servidor DNS consultará o segundo encaminhador. |
2 * <forwarding_timeout> +1 | Após <mais forwarding_timeout> +1 segundos, se o segundo encaminhador não responder, o servidor DNS consultará o terceiro encaminhador. |
... | ... |
N * <forwarding_timeout> + (N-1) | Após <mais forwarding_timeout> + 1 segundos, se o enésimo encaminhador não responder, o servidor DNS consultará o (N+1)ésimo encaminhador. |
Observação
Além do atraso configurado, pode haver um atraso adicional de meio segundo devido à sobrecarga do sistema.
O algoritmo é interrompido quando o tempo decorrido excede o valor RecursionTimeout
Se o RecursionTimeout expirar, o servidor DNS responderá ao cliente com uma falha do servidor.
Observação
Não enviamos a falha do servidor imediatamente após a expiração do RecursionTimeout , mas apenas quando é hora de tentar o próximo encaminhador.
Se o servidor conseguir entrar em contato com todos os encaminhadores antes que o RecursionTimeout expire sem obter respostas, ele tentará usar as dicas de raiz para a resolução de nomes (configuração padrão, a menos que a recursão tenha sido desabilitada no nível do servidor).
Isso significa que, com as configurações padrão, um servidor DNS do Windows poderá consultar no máximo três encaminhadores. Não haverá tempo suficiente para chegar para usar o quarto forwarder. Na verdade, com as configurações padrão, o servidor DNS do Windows irá:
- Consultar o primeiro encaminhador após 0 segundos
- Consultar o segundo encaminhador após 3,5 segundos
- Consultar o terceiro encaminhador após 3,5 + 4 = 7,5 segundos
No oitavo segundo, RecursionTimeout expira, portanto, não chegaremos ao ponto em que o quarto encaminhador é consultado (o que teria acontecido após 3,5 + 4 + 4 = 11,5 segundos).
Enviaremos a resposta de falha do servidor após 11,5 segundos.
Exemplo:
O servidor DNS com endereço IP 192.168.0.1 é configurado com cinco encaminhadores (10.0.0.1-10.0.0.5).
O cliente tem o endereço IP 10.0.0.31 e está consultando .Microsoft.com
Em uma captura de rede, veríamos a seguinte saída do Monitor de Rede (observe que 10.0.0.4 e 10.0.0.5 nunca foram consultados):
Detalhes do destino de origem TimeDelta
6:33:51.7507293 0.2731738 0.0000000 10.0.0.31 192.168.0.1 DNS:QueryId = 0xF03, QUERY (consulta padrão), Consulta domicrosoft.com
tipo Host Addr na classe Internet
6:33:51.7510021 0.2734466 0.0002728 192.168.0.1 10.0.0.1 DNS:QueryId = 0xBD57, QUERY (consulta padrão), Consulta domicrosoft.com
tipo Host Addr na classe Internet
6:33:55.2997074 3.8221519 3.5487053 192.168.0.1 10.0.0.2 DNS:QueryId = 0xBD57, QUERY (consulta padrão), Consulta domicrosoft.com
tipo Host Addr na classe Internet
6:33:59.2931644 7.8156089 3.9934570 192.168.0.1 10.0.0.3 DNS:QueryId = 0xBD57, QUERY (consulta padrão), Consulta domicrosoft.com
tipo Host Addr na classe Internet
6:34:03.3112753 11.8337198 4.0181109 192.168.0.1 10.0.0.31 DNS:QueryId = 0xF03, QUERY (consulta padrão), Resposta - Falha do servidor
Qual é o comportamento padrão de um servidor DNS quando mais de dois servidores DNS são configurados como encaminhadores condicionais
Semelhante aos encaminhadores, há duas variáveis principais para encaminhadores condicionais. Ainda temos RecursionTimeout (que está operando no nível do servidor), mas neste cenário estamos usando ForwarderTimeout em vez de ForwardingTimeout. Observe especificamente que ForwarderTimeout está operando em uma base de zona e tem valores padrão diferentes:
RecursionTimeout - quanto tempo o DNS (Sistema de Nomes de Domínio) aguarda que os servidores remotos respondam a uma consulta recursiva do cliente antes de encerrar a pesquisa.
Ele é salvo no registro em
HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\RecursionTimeout
.É configurável via
dnscmd /config /RecursionTimeout <value>
.O valor padrão é de 8 segundos no Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019 e Windows Server 2022.
O RecursionTimeout é definido no nível do servidor DNS e é independente da zona específica consultada.
ForwarderTimeout - quanto tempo o DNS (Sistema de Nomes de Domínio) aguarda para que cada servidor na lista de Encaminhadores Condicionais responda a uma consulta.
Como os encaminhadores condicionais são configurados para zonas específicas, o ForwarderTimeout também depende da zona.
Ele é salvo no registro em
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DNS Server\Zones\ <zone_name>\ForwarderTimeout
.O valor padrão é de 5 segundos no Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019 e Windows Server 2022.
Essa também é a configuração que você pode ver na GUI dos encaminhadores condicionais.
Quando o servidor DNS recebe uma consulta para um registro em uma zona para a qual ele não é autoritativo e está configurado para usar encaminhadores condicionais para ele, o comportamento padrão é o seguinte:
Tempo (segundos desde o início) | Action |
---|---|
0 | O cliente consulta o servidor DNS. O servidor DNS encaminha imediatamente a consulta para seu primeiro encaminhador condicional. |
<forwarder_timeout> | Após <forwarder_timeout> segundos, se o primeiro encaminhador condicional não responder, o servidor DNS consultará o segundo encaminhador condicional. |
2 * <forwarder_timeout> +1 | Após <forwarder_timeout> +1 segundos, se o segundo encaminhador condicional não responder, o servidor DNS consultará o terceiro encaminhador condicional. |
... | ... |
N * <forwarder_timeout> + (N-1) | Após <mais forwarder_timeout> +1 segundos, se o enésimo encaminhador condicional não responder, o servidor DNS consultará o (N+1)ésimo encaminhador condicional. |
Observação
Além do atraso configurado, pode haver um atraso adicional de meio segundo devido à sobrecarga do sistema.
O algoritmo é interrompido quando o tempo decorrido excede o valor RecursionTimeout
Se o RecursionTimeout expirar, o servidor DNS responderá ao cliente com uma falha do servidor.
Observação
Não enviamos a Falha do Servidor imediatamente após a expiração do RecursionTimeout , mas apenas quando é a hora de tentar o próximo encaminhador condicional.
Isso significa que, com as configurações padrão, um servidor DNS do Windows poderá consultar no máximo dois encaminhadores condicionais. Não haverá tempo suficiente para chegar para usar o terceiro encaminhador condicional. Na verdade, com as configurações padrão, o servidor DNS do Windows irá:
- Consultar o primeiro encaminhador após 0 segundos
- Consultar o segundo encaminhador após 5,5 segundos
No oitavo segundo, RecursionTimeout expira, portanto, não chegaremos ao ponto em que o terceiro encaminhador condicional é consultado (o que teria acontecido após 5,5 + 6 = 11,5 segundos).
Enviaremos a resposta de falha do servidor após 11,5 segundos.
Exemplo:
O servidor DNS com endereço IP 192.168.0.1 está configurado com cinco encaminhadores condicionais (10.0.0.1-10.0.0.5) para a zona Microsoft.com
.
O cliente tem o endereço IP 10.0.0.31 e está consultando .Microsoft.com
Em uma captura de rede, veríamos a seguinte saída do Monitor de Rede (observe que 10.0.0.3, 10.0.0.4 e 10.0.0.5 nunca foram consultados):
Detalhes do destino de origem TimeDelta
6:50:32.5481816 0.4306857 0.0000000 10.0.0.33 192.168.0.1 DNS:QueryId = 0x245A, QUERY (consulta padrão), Consulta domicrosoft.com
tipo Host Addr na classe Internet
6:50:32.5484341 0.4309382 0.0002525 192.168.0.1 10.0.0.1 DNS:QueryId = 0x252B, QUERY (consulta padrão), Consulta domicrosoft.com
tipo Host Addr na classe Internet
6:50:38.1695163 6.0520204 5.6210822 192.168.0.1 10.0.0.2 DNS:QueryId = 0x252B, QUERY (consulta padrão), Consulta domicrosoft.com
tipo Host Addr na classe Internet
6:50:44.1856567 12.0681608 6.0161404 192.168.0.1 10.0.0.33 DNS:QueryId = 0x245A, QUERY (consulta padrão), Resposta - Falha do servidor