Introdução: Atualizar corretamente os Root Hints — a lista de servidores‑raiz consultada por um servidor DNS para localizar domínios que não conhece — é fundamental para garantir a resolução recursiva em ambientes Windows Server. Porém, em controladores de domínio (DCs) integrados ao Active Directory, essa atualização segue um fluxo diferente do que ocorre em servidores DNS autônomos: o que vale não é o arquivo cache.dns
, e sim os objetos armazenados na partição ForestDnsZones
. Este artigo explica em detalhes por que as informações podem parecer “desalinhadas”, como atualizar de maneira correta (GUI ou PowerShell), quais comandos de validação utilizar, além de responder dúvidas frequentes.
Problema observado pelo administrador
Durante tarefas de manutenção, o administrador percebeu três sintomas:
- O conteúdo de
%SystemRoot%\System32\Dns\cache.dns
não batia com a lista exibida em DNS Manager ▸ Root Hints. - Consultas
nslookup -type=ns .
mostravam respostas diferentes das linhas contidas no arquivo físico. - Gerou‑se a dúvida: bastaria substituir
cache.dns
por uma cópia atualizada (named.root da IANA) ou seria necessário alterar servidor por servidor?
Entendendo o papel do arquivo cache.dns
No Windows Server, o serviço DNS lê o arquivo cache.dns
apenas na inicialização quando a zona Root Hints ainda não existe no Active Directory. Esse arquivo atua como “semente” para que o ambiente possa estabelecer comunicação externa logo após a promoção do primeiro DC.
Depois que a zona é criada dentro da partição de floresta, toda edição manual do arquivo local perde efeito: ele não é consultado novamente até o próximo reinício do serviço, e mesmo assim as entradas recuperadas do AD prevalecem assim que a replicação ocorre.
Como o Active Directory armazena Root Hints
Em DCs que executam o serviço DNS, cada registro NS e A dos servidores‑raiz é persistido em um objeto do tipo dnsNode localizado em:
CN=.,CN=MicrosoftDNS,DC=ForestDnsZones,DC=<sufixo‑da‑floresta>
Esses objetos são replicados por meio do processo normal de replicação do Active Directory, trazendo vantagens claras:
- Consistência automática — alterar um único DC propaga a mudança a todos os demais.
- Segurança — permissões ACL do AD aplicam‑se igualmente aos registros.
- Backup unificado — System State contempla as zonas integradas, dispensando cópias manuais de arquivo.
Por que ocorrem divergências entre GUI, nslookup
e o arquivo?
- GUI (DNS Manager) — lê diretamente a zona integrada no AD.
nslookup
— consulta o serviço DNS em memória, que também reflete o conteúdo proveniente do AD.cache.dns
— fica “estático” após o boot; qualquer diferença presente em disco será ignorada assim que a zona integrada terminar de carregar.
Portanto, sempre que você comparar a lista de Root Hints exibida pela GUI ou por consultas reais com o arquivo físico, espere encontrar divergências — e isso é normal em DCs.
Procedimento recomendado de atualização
Passo | Ação |
---|---|
1 | Abra o DNS Manager (dnsmgmt.msc ) em qualquer controlador de domínio. |
2 | Clique com o botão direito no servidor → Properties → guia Root Hints. |
3 | Use Add…, Edit…, Remove… ou Copy from Server para inserir os endereços IPv4/IPv6 corretos. |
4 | Aguarde a replicação ou force‑a com repadmin /syncall /APeD . |
5 (opcional) | Execute ipconfig /flushdns nos DCs e valide com nslookup -type=ns . . |
Usando PowerShell (preferido para automação)
O módulo DnsServer
inclui cmdlets que interagem de forma nativa com zonas integradas:
# Exemplo: adicionar ou atualizar um Root Hint
Add-DnsServerRootHint -Name "b.root-servers.net." -IPAddress 199.9.14.201
Remover Root Hints obsoletos
Remove-DnsServerRootHint -Name "l.root-servers.net." -Force
Listar os Root Hints atuais
Get-DnsServerRootHint | Format-Table -AutoSize
Qualquer modificação replicará automaticamente para os demais controladores, pois o cmdlet grava diretamente na partição ForestDnsZones
. Não é necessário rodar o comando em cada DC.
Validação pós‑mudança
Para garantir que tudo se replicou corretamente, utilize os testes abaixo. Eles promovem confiança antes de aplicar alterações em produção:
Sincronização do AD
repadmin /syncall /APeD
Flags: /A
todas as partições, /P
ignorar agendamentos, /e
via RPC sobre TCP/IP, /D
mostra estatísticas detalhadas.
Teste de DNS no próprio DC
dcdiag /test:DNS /e /v > C:\Temp\RelatorioDNS.txt
Analisar o relatório ajuda a identificar registros faltantes ou falhas de encaminhamento.
Consulta externa controlada
nslookup -querytype=ns . 127.0.0.1
Compare o conjunto retornado com a lista recém‑configurada; qualquer DC que ainda não replicou exibirá o conjunto antigo.
Automatizando em vários domínios ou florestas
Em corporações com múltiplas florestas, é comum haver DCs que não se replicam entre si. Abaixo um esboço de script PowerShell que percorre todos os DCs de uma floresta e aplica o named.root baixado previamente (salvo em C:\Temp\named.root
):
$rootHints = Get-Content -Path 'C:\Temp\named.root' |
Where-Object { $_ -match '^\s*([A-Za-z])' } |
ForEach-Object {
$parts = $_.Split(' ', [System.StringSplitOptions]::RemoveEmptyEntries)
[PSCustomObject]@{ Name = $parts[0]; IP = $parts[-1] }
}
$DCs = Get-ADDomainController -Filter * -Discover
foreach ($dc in $DCs) {
Write-Host "Processando $($dc.HostName)..."
foreach ($hint in $rootHints) {
# Remove se existir e recria (idempotente)
Remove-DnsServerRootHint -ComputerName $dc.HostName `
-Name $hint.Name -ErrorAction SilentlyContinue
Add-DnsServerRootHint -ComputerName $dc.HostName `
-Name $hint.Name -IPAddress $hint.IP
}
}
Dica: rode o script em uma estação com RSAT instalado e privilégios de Enterprise Admins.
Boas práticas para gestão de Root Hints
- Evite edição manual de
cache.dns
em DCs que participam do AD. A alteração será sobreposta rapidamente. - Documente cada mudança com data, motivo e fonte do arquivo IANA que serviu de base. A rastreabilidade ajuda em auditorias.
- Automatize usando cmdlets; assim você reduz erros de digitação e garante idempotência.
- Planeje janelas de manutenção — atualizar Root Hints é rápido, mas a replicação pode levar minutos em links WAN lentos.
- Monitore logs
DNS Server
eDirectory Service
para identificar falhas de replicação ou de resolução. - Revisite a lista semestralmente, principalmente quando ocorrerem anúncios de troca de IP por parte da ICANN.
Perguntas frequentes (FAQ)
Posso apagar todo o conteúdo de cache.dns
?
Pode, mas não há ganho em DCs. Em servidores autônomos, a exclusão fará o serviço criar a lista a partir de named.root na próxima reinicialização.
Como identificar quais DCs ainda usam Root Hints desatualizados?
Use Get-DnsServerRootHint -ComputerName <DC>
em cada um ou um script que varra todos os DCs devolvendo diferenças.
Preciso reiniciar o serviço DNS após a alteração?
Não. A zona integrada no AD é dinâmica; novos registros passam a valer imediatamente.
Meu ambiente usa encaminhadores (Forwarders). Ainda assim devo cuidar dos Root Hints?
Sim. Caso o encaminhador fique indisponível, o servidor recorre aos Root Hints como plano B. Mantenha‑os atualizados.
Conclusão
Em controladores de domínio Windows, o local “oficial” dos Root Hints é a partição ForestDnsZones
do Active Directory, não o arquivo cache.dns
. Alterações feitas via DNS Manager ou PowerShell são replicadas de forma segura e transparente para todos os DCs, assegurando consistência e estabilidade na resolução recursiva. Seguindo os procedimentos descritos — verificar divergências, aplicar mudanças em um único ponto, forçar ou aguardar a replicação e validar com as ferramentas corretas — você evita quebras inesperadas de nome, reduz chamados de suporte e mantém o ambiente alinhado às melhores práticas recomendadas pela Microsoft.