Encaminhamento de DNS no Windows Server

O encaminhamento DNS é um processo de resolução de nomes no qual um servidor DNS envia uma consulta recursiva para outro servidor DNS que atua como encaminhador. O servidor DNS pode usar encaminhadores em nível de servidor para resolução geral de nomes e encaminhadores condicionais para espaços de nomes DNS selecionados. Entender como o encaminhamento interage com delegações, dicas de servidor raiz e tempos limite ajuda a prever qual servidor recebe uma consulta e quando a resolução pode continuar por outro caminho.

Este artigo explica como o servidor DNS seleciona entre dados disponíveis localmente, encaminhadores condicionais, delegações, encaminhadores no nível do servidor e dicas de raiz ao processar consultas recursivas de clientes. Também explica como as configurações de timeout e de fallback afetam se a resolução continua ou retorna uma falha.

Como o Servidor DNS seleciona um caminho de resolução

Quando o Servidor DNS recebe uma consulta recursiva de um cliente, ele avalia os dados disponíveis localmente e então seleciona um caminho de resolução aplicável. O caminho depende das zonas hospedadas pelo servidor DNS e de sua configuração de encaminhador condicional, delegação, encaminhador em nível de servidor e dica de raiz.

A distinção entre resposta terminal e nenhuma resposta é central nesse processo de seleção. Uma resposta DNS como NXDOMAIN ou NODATA é uma resposta válida e terminal e normalmente não aciona o fallback. O fallback geralmente ocorre quando um servidor configurado não responde ou quando o Servidor DNS classifica um resultado como passível de nova tentativa.

Essa ordem de resolução se aplica quando você desativa ForwardDelegations. Políticas DNS e outros recursos de DNS podem afetar o caminho para uma consulta específica.

  1. Verifique os dados DNS disponíveis localmente. O servidor avalia as zonas de autoridade que hospeda e seu cache. Se uma zona autorizada hospedada cobre a consulta, essa zona determina o resultado. Se dados autoritativos ou cache fornecerem um resultado de terminal, o servidor o retorna.

  2. Use um encaminhador condicional correspondente. Se o nome da consulta corresponder a uma zona de encaminhamento condicional, o servidor envia a consulta para os servidores DNS de destino configurados dessa zona. Se esses servidores não responderem ou retornarem um resultado que o servidor DNS classifica como retentável, a configuração Use recursion do encaminhador condicional determina se o servidor pode tentar outros caminhos de resolução recursiva.

  3. Use uma delegação apropriada. Se uma delegação correspondente indicar os próximos servidores autoritativos, o servidor enviará consultas iterativas aos servidores de nomes da delegação. Com ForwardDelegations desativado, os encaminhadores em nível de servidor não controlam uma consulta, enquanto uma delegação aplicável controla sua resolução.

  4. Use forwarders em nível de servidor. Se nenhum encaminhador condicional ou delegação aplicável se aplicar à consulta, o servidor usará seus encaminhadores configurados no nível do servidor, na ordem ativa e sujeitos aos limites de tempo configurados.

  5. Use dicas de raiz quando a configuração permitir. Se o servidor esgotar seus forwarders no nível do servidor, ele poderá recorrer às dicas de raiz se a configuração do servidor habilitar a recursão e o retorno às dicas de raiz, e se o tempo limite geral da recursão ainda não tiver expirado. Se o servidor não tiver encaminhadores configurados no nível do servidor, as dicas de raiz poderão fornecer o ponto de partida para a resolução iterativa.

  6. Retorne o resultado ou uma falha. O servidor retorna o resultado do caminho selecionado. Se a configuração do servidor desativar a recursão, o servidor normalmente retorna REFUSED para uma consulta que requer recursão. Se o processamento recursivo não for concluído, o servidor retorna SERVFAIL.

Note

Um encaminhador não responsivo não garante que o servidor alcance o retorno de root hint. O servidor deve esgotar os encaminhadores aplicáveis antes que RecursionTimeout expire. Se o tempo limite total da recursão expirar primeiro, a consulta falha sem alcançar as pistas raiz.

Fluxo de resolução e fallback do encaminhador do servidor DNS

O fluxograma a seguir mostra o caminho comum de decisão a partir de dados localmente disponíveis por métodos de resolução progressivamente mais amplos. Uma resposta terminal encerra o processamento em qualquer etapa. Um servidor que não responde ou um resultado passível de nova tentativa pode levar a outro caminho somente quando a configuração permitir o fallback e houver tempo restante em RecursionTimeout. A descrição do texto identifica cada ramificação e resultado.

Fluxograma da resolução de consultas no servidor DNS usando dados locais, encaminhadores condicionais, delegações, encaminhadores no nível do servidor e dicas de raiz.

Encaminhadores no nível do servidor no DNS Server

Encaminhadores em nível de servidor lidam com consultas não resolvidas quando nem uma zona autorizada hospedada, nem uma zona condicional correspondente, nem uma delegação aplicável controlam a consulta. O servidor DNS envia uma consulta recursiva para um encaminhador, que se torna responsável por completar a resolução de nomes.

Centralizar consultas externas por meio de forwarders pode reduzir a exposição direta à internet, consolidar respostas em cache, simplificar o monitoramento e o controle de acesso, e reduzir consultas externas repetidas. Se você não configurar encaminhadores no nível do servidor, o Servidor DNS usará dicas de raiz para nomes não solucionados quando você habilitar a recursão e houver dados de dicas de raiz utilizáveis disponíveis.

Permita consultas recursivas apenas de clientes e redes confiáveis, e não exponha serviços DNS recursivos a redes não confiáveis. Use recaminhadores confiáveis e regras de firewall para impor os limites do tráfego DNS.

Seleção e ordenação de encaminhadores em nível de servidor

Você configura os endereços IP do encaminhador em uma ordem preferencial. Por padrão, o Reordenamento Dinâmico do Encaminhador mantém uma ordem ativa baseada nos tempos de resposta e redefine a lista para a ordem configurada aproximadamente a cada 15 minutos.

  • Para cada consulta, o servidor DNS seleciona encaminhadores da lista ativa.
  • Se um encaminhador demora mais de um segundo para responder, o servidor considera a resposta lenta para fins de reordenação.
  • Após três respostas lentas consecutivas ou tempos de espera, o servidor pode mover esse encaminhador para o final da lista ativa.
  • O servidor DNS não determina se um encaminhador não responsivo está offline ou lento. Monitore a saúde do encaminhador separadamente.

Note

No Windows Server 2022 e posteriores, se nenhum dos encaminhadores responder, o DNS Server usa apenas o primeiro servidor da lista dinâmica para consultas subsequentes até que o serviço DNS Server seja reiniciado. Para fazer o servidor passar por todos os encaminhadores configurados, como nas versões anteriores, desative a reordenação dinâmica com Set-DnsServerForwarder -EnableReordering $false.

Recurso de encaminhamento em nível de servidor para dicas de raiz

Após o servidor DNS esgotar os encaminhadores aplicáveis no nível do servidor, ele tenta, por padrão, a recursão padrão se os encaminhadores não responderem ou retornarem apenas resultados que o Servidor DNS classifica como passíveis de nova tentativa. A recursão convencional usa consultas iterativas que começam com os servidores listados nas dicas de raiz. Esse recurso requer todas as seguintes condições:

  • O servidor esgota os encaminhadores aplicáveis antes que RecursionTimeout expire.
  • O servidor permite recursão.
  • A configuração UseRootHint é $true, que você configura com Set-DnsServerForwarder -UseRootHint $true.
  • O servidor possui dados de root hint utilizáveis e acesso à rede aos servidores DNS necessários.

Defina UseRootHint como $false quando o servidor precisar restringir consultas não resolvidas aos servidores de encaminhamento na configuração. Com essa configuração, o servidor não tenta resolução iterativa quando os encaminhadores falham.

Encaminhadores condicionais em servidor DNS

Um encaminhador condicional encaminha consultas para um namespace DNS específico para servidores DNS designados. Por exemplo, um encaminhador condicional pode enviar todas as consultas de south.contoso.com aos servidores DNS que hospedam esse namespace, enquanto o servidor lida com outros nomes por meio de encaminhadores no nível do servidor ou dicas de raiz.

O servidor DNS armazena encaminhadores condicionais como zonas de reencaminhamento. Quando uma consulta corresponde a um encaminhador condicional, o servidor DNS a envia para a lista de servidores DNS de destino daquela zona, em vez de usar imediatamente o caminho geral de encaminhamento em nível de servidor.

Restrições de zonas hospedadas para encaminhadores condicionais

Você não pode criar um encaminhador condicional para um nome DNS que corresponda a uma zona primária, secundária ou stub que o mesmo servidor DNS hospeda. Como o servidor DNS armazena um encaminhador condicional como uma zona de reencaminhamento, o servidor não pode hospedar outro tipo de zona e um encaminhador condicional com o mesmo nome.

Por exemplo, se o servidor hospeda contoso.com como uma zona autoritária, você não pode criar um encaminhador condicional nomeado contoso.com nesse servidor. O DNS Manager ou Add-DnsServerConditionalForwarderZone relata que a zona já existe, e o servidor continua respondendo consultas a contoso.com partir da sua zona hospedada.

Se outro servidor DNS resolver todo o namespace, migre os dados da zona e remova a zona hospedada antes de criar o encaminhador condicional. Se outros servidores DNS hospedarem apenas um namespace filho, mantenha a zona pai e crie uma delegação para o namespace filho.

Recurso de encaminhamento condicional e recursão

A configuração Usar recursão do encaminhador condicional controla o que o servidor DNS pode fazer se os servidores DNS de destino da zona não responderem ou retornarem um resultado que o servidor DNS considere passível de nova tentativa.

Uso da recursão Comportamento após a ausência de resposta terminal Result
habilitado O servidor DNS pode tentar outro caminho de resolução recursiva somente quando a configuração em todo o servidor permite a recursão, existe um caminho aplicável e o tempo permanece em RecursionTimeout. A resolução pode continuar por um caminho recursivo aplicável.
Desativado O servidor DNS não tenta outros servidores DNS. A consulta falha se os servidores DNS de destino configurados não conseguirem fornecer um resultado de terminal.

ForwarderTimeout controla a janela de tempo do encaminhador condicional e o agendamento das tentativas de servidor DNS de destino. O servidor DNS não inicia outra tentativa de encaminhamento condicional após ForwarderTimeout expirar. RecursionTimeout fornece um limite separado para todo o servidor sobre o processamento recursivo.

Delegação e encaminhamento do servidor DNS

Se um servidor DNS hospeda uma zona pai e o nome consultado está sob uma delegação aplicável, o servidor usa a delegação para identificar os servidores DNS autoritativos da zona filha. A delegação cria um corte de zona: o servidor pai tem autoridade sobre os registros da delegação, mas não tem autoridade sobre os dados na zona filha delegada.

Se nenhuma delegação se aplicar e o nome consultado estiver dentro de uma zona que o servidor hospeda, o servidor permanece com autoridade sobre a consulta. Se o nome ou tipo de registro solicitado não existir, o servidor retorna uma resposta negativa autoritativa, como NXDOMAIN ou NODATA. Ele não envia essa consulta para um encaminhador condicional, encaminhador em nível de servidor ou dicas de root.

Por exemplo, se um servidor hospeda contoso.com e outros servidores hospedam south.contoso.com, crie uma delegação para south dentro da contoso.com zona. A zona parental retorna uma referência aos servidores autorizados da zona filha. Uma delegação não envia uma consulta recursiva reencaminhada.

Esse comportamento de delegação se aplica quando ForwardDelegations está desativado. Se seu ambiente permitir essa configuração, valide a interação resultante entre delegações e encaminhadores antes de confiar nessa ordem de resolução.

Importante

Se o servidor DNS também hospeda uma cópia autoritativa da zona filha e você pretende mover o namespace filho para outros servidores, migre e remova a cópia local da zona filha. Caso contrário, o servidor permanece autoritativo para essa cópia.

Dicas de raiz do servidor DNS e resolução iterativa

Dicas de raiz são registros de recursos que identificam os servidores DNS autoritativos para a raiz de um namespace DNS. O DNS Server os usa como pontos de partida para resolução iterativa. Um servidor raiz normalmente retorna uma resposta, um encaminhamento para servidores mais próximos do nome solicitado, ou uma falha de DNS ou resposta negativa.

Se você não configurar encaminhadores no nível do servidor e nenhuma delegação ou configuração de encaminhamento mais específica fornecer um ponto de partida, o servidor poderá usar dicas de raiz para uma consulta que não puder ser resolvida. Se você configurar encaminhadores no nível do servidor, o servidor usará as dicas de raiz como alternativa somente depois de esgotar os encaminhadores e apenas se a recursão, o tempo limite restante e UseRootHint permitirem esse fallback.

Se um servidor DNS é autoritativo para a raiz de um namespace privado, ele é um servidor root para esse namespace. Não presuma que o encaminhamento normal no nível do servidor ou as dicas de raiz públicas sejam apropriados para uma raiz privada. Use delegações ou projete deliberadamente uma configuração condicional de encaminhamento entre namespaces.

Tempos de espera do servidor DNS e comportamento de falha

As configurações de tempo limite determinam se um servidor DNS alcança encaminhadores subsequentes ou recorre às dicas de raiz. RecursionTimeout é o orçamento total de tempo para processamento recursivo. ForwardingTimeout e ForwarderTimeout agendam tentativas individuais para encaminhadores no nível do servidor e encaminhadores condicionais, respectivamente, dentro desse orçamento; nenhum deles reinicia nem estende RecursionTimeout.

Setting Scope Purpose Parâmetro do PowerShell
RecursionTimeout servidor DNS Limita a consulta recursiva geral do cliente. Quando o timeout expira, o processamento recursivo para e o servidor retorna SERVFAIL. Set-DnsServerRecursion -Timeout
ForwardingTimeout Encaminhadores em nível de servidor Especifica quanto tempo o servidor DNS espera por cada encaminhador em nível de servidor antes de tentar o próximo encaminhador. Set-DnsServerForwarder -Timeout
ForwarderTimeout Zona de encaminhador condicional Dicas de raiz são registros de recursos que identificam os servidores DNS autoritativos para a raiz de um namespace DNS. O servidor DNS não inicia outra tentativa condicional de alvo de encaminhamento após esse tempo expirar. Add-DnsServerConditionalForwarderZone -ForwarderTimeout

Quando um encaminhador retorna uma resposta de terminal, o servidor retorna essa resposta sem tentar outro caminho de resolução. Quando um encaminhador não responde ou retorna um resultado que o servidor DNS classifica como passível de nova tentativa, o servidor DNS pode tentar o próximo servidor configurado ou um caminho de contingência disponível enquanto ainda houver tempo.

Como RecursionTimeout limita toda a operação, configurar muitos forwarders não garante que o servidor consulte todos os forwarders ou tente dicas root. Se o tempo limite total expirar primeiro, o servidor retorna SERVFAIL. Quando você configurar três ou mais encaminhadores, revise os valores de timeout e verifique o comportamento efetivo por meio de monitoramento e capturas de pacotes no seu ambiente.

Escolha um design de encaminhamento de servidor DNS

Escolha um caminho de resolução com base em quem é o dono do namespace e quais servidores DNS devem receber consultas. Os cenários a seguir mostram como cada projeto afeta o encaminhamento e o recurso de fallback.

Scenario Projeto da solução Decisão de contingência
Centralizar a resolução geral de DNS Use os encaminhadores no nível do servidor para que os servidores DNS designados resolvam nomes que as zonas locais, o cache, os encaminhadores condicionais ou as delegações não resolvem. Mantenha o recurso de retorno do root hint quando a resolução iterativa direta for aceitável. Desative isso quando a política exigir que todas as consultas não resolvidas permaneçam dentro do limite de encaminhamento e imponha esse limite com controles de rede.
Conecte namespaces internos administrados separadamente Use um encaminhador condicional para enviar nomes em um espaço de nomes, como south.contoso.com, diretamente para seus servidores DNS sem hospedar uma zona secundária. Ative Use recursion somente se outro caminho recursivo for válido para aquele namespace.
Resolver um namespace de parceiro por meio de servidores designados Use um encaminhador condicional para o namespace do parceiro em vez de enviar essas consultas pela hierarquia pública de DNS. Desative Usar recursão quando apenas os servidores DNS designados do parceiro devem resolver o namespace.
Separe um namespace filho de uma zona mãe hospedada Use uma delegação na zona pai para identificar os servidores DNS autoritativos da zona filha. Uma delegação retorna referências em vez de encaminhar consultas recursivas. Quando você desativa ForwardDelegations, a delegação controla a resolução, portanto, os encaminhadores em nível de servidor não fornecem fallback para a consulta delegada.

Use vários encaminhadores íntegros quando o projeto exigir redundância e certifique-se de que os tempos limite de encaminhamento e recursão forneçam tempo suficiente para alcançá-los. Monitore o tempo de resposta, a taxa de falha e a acessibilidade da rede separadamente, porque o comportamento de encaminhamento não substitui o monitoramento de saúde. Servidores recursivos que resolvem nomes da internet normalmente usam root hints públicos, enquanto hierarquias DNS privadas exigem informações de raiz correspondentes ao namespace privado.