Como usar dig e nslookup para diagnosticar problemas de DNS
Introdução às Ferramentas de Diagnóstico DNS
O DNS (Domain Name System) é um dos pilares fundamentais da internet, e quando algo dá errado, os usuários enfrentam lentidão ou impossibilidade de acesso a sites. Duas ferramentas essenciais para diagnosticar problemas de DNS são dig e nslookup. Embora ambas realizem consultas DNS, existem diferenças fundamentais entre elas.
dig (Domain Information Groper) é uma ferramenta mais moderna e flexível, oferecendo saída detalhada e controle granular sobre as consultas. Já nslookup é mais antiga e simples, disponível em praticamente todos os sistemas operacionais. Para diagnósticos avançados, dig é superior; para verificações rápidas, nslookup é suficiente.
Para verificar se as ferramentas estão instaladas:
which dig
which nslookup
Em sistemas Debian/Ubuntu, instale com:
sudo apt-get install dnsutils
No CentOS/RHEL:
sudo yum install bind-utils
A sintaxe geral do dig é:
dig [@servidor] [domínio] [tipo] [opções]
Consultas Básicas de Registros DNS
Resolvendo Registros A e AAAA
O registro A mapeia um nome de domínio para um endereço IPv4. O registro AAAA faz o mesmo para IPv6.
dig google.com A
Para uma saída mais limpa:
dig google.com A +short
Para IPv6:
dig google.com AAAA +short
Consultando Registros MX e CNAME
Registros MX indicam os servidores de email do domínio:
dig gmail.com MX +short
Registros CNAME são aliases:
dig www.exemplo.com CNAME
Controle de Saída
Use +noall +answer para exibir apenas a seção de resposta:
dig google.com A +noall +answer
Diagnóstico de Problemas de Resolução
Verificando Servidores DNS Configurados
No Linux, o arquivo /etc/resolv.conf contém os servidores DNS configurados:
cat /etc/resolv.conf
Exemplo de saída:
nameserver 192.168.1.1
nameserver 8.8.8.8
Testando Contra Servidores Específicos
Para testar contra um servidor DNS específico, como o Google Public DNS:
dig @8.8.8.8 exemplo.com A
Isso é útil para verificar se o problema está no servidor DNS local ou no serviço DNS do domínio.
Interpretando Erros Comuns
- NXDOMAIN: O domínio não existe
- SERVFAIL: O servidor DNS encontrou um erro interno
- REFUSED: O servidor recusou a consulta
- timeout: O servidor não respondeu no tempo esperado
dig dominio-inexistente.com A
Saída típica de erro:
; <<>> DiG 9.16.1-Ubuntu <<>> dominio-inexistente.com A
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 12345
Análise de Cache e TTL
Interpretando o Campo TTL
O TTL (Time To Live) indica por quanto tempo um registro pode ser armazenado em cache:
dig google.com A +noall +answer
Saída:
google.com. 299 IN A 142.250.218.78
O valor 299 é o TTL em segundos (aproximadamente 5 minutos).
Detectando Registros Expirados
Se um registro apresenta TTL muito baixo ou inconsistente, pode indicar problemas de configuração:
dig exemplo.com A
Compare o TTL com o esperado para o domínio.
Usando +trace para Seguir a Cadeia
A opção +trace segue toda a cadeia de delegação DNS:
dig exemplo.com +trace
Isso mostra a consulta passando por root servers, TLD servers e servidores autoritativos, permitindo identificar onde ocorre a falha.
Depuração de Registros Específicos e Zonas
Consultas Inversas (PTR)
Para descobrir o nome de domínio associado a um IP:
dig -x 8.8.8.8 +short
Resultado:
dns.google.
Verificando Registros SOA e NS
O registro SOA contém informações administrativas da zona:
dig exemplo.com SOA +short
Registros NS indicam os servidores de nomes autoritativos:
dig exemplo.com NS +short
Testando Transferências de Zona (AXFR)
Transferências de zona não autorizadas são um risco de segurança. Para testar se um servidor permite:
dig @ns1.exemplo.com exemplo.com axfr
Se funcionar, o servidor está mal configurado.
Comparação de Resultados entre Diferentes Servidores
Consultas Simultâneas
Execute consultas contra diferentes servidores para comparar:
dig @8.8.8.8 exemplo.com A +short
dig @1.1.1.1 exemplo.com A +short
dig @208.67.222.222 exemplo.com A +short
Automatizando com Scripts
Use dig +short em scripts para monitoramento:
#!/bin/bash
SITE="exemplo.com"
IP_ESPERADO="192.0.2.1"
IP_ATUAL=$(dig $SITE A +short)
if [ "$IP_ATUAL" != "$IP_ESPERADO" ]; then
echo "Alerta: IP do $SITE mudou para $IP_ATUAL"
fi
Identificando Divergências
Se servidores diferentes retornam IPs distintos, pode haver:
- Problemas de propagação
- DNS hijacking
- Configuração incorreta de servidores autoritativos
Rastreamento Completo com +trace
Entendendo a Hierarquia
O comando dig +trace mostra:
- Consulta aos root servers (.)
- Consulta aos TLD servers (.com, .org, etc.)
- Consulta aos servidores autoritativos do domínio
dig exemplo.com +trace
Detectando Falhas Intermediárias
Se um servidor na cadeia não responde, o +trace mostra exatamente onde:
dig exemplofalso.com +trace
Exemplo Prático
Para diagnosticar um domínio que não resolve:
dig meudominio.com A
Se retornar SERVFAIL, use +trace:
dig meudominio.com +trace
Identifique onde a cadeia quebra — pode ser um servidor NS offline ou configuração incorreta.
Dicas Avançadas e Integração com Outras Ferramentas
Combinando com grep e awk
Para extrair apenas IPs de uma consulta:
dig google.com A +noall +answer | awk '{print $5}'
Script para Monitorar Mudanças
#!/bin/bash
DOMINIO="meusite.com"
ARQUIVO_LOG="dns_changes.log"
IP_ANTERIOR=$(cat $ARQUIVO_LOG 2>/dev/null || echo "")
IP_ATUAL=$(dig $DOMINIO A +short)
if [ "$IP_ANTERIOR" != "$IP_ATUAL" ]; then
echo "$(date): $DOMINIO mudou de $IP_ANTERIOR para $IP_ATUAL" >> $ARQUIVO_LOG
echo "$IP_ATUAL" > $ARQUIVO_LOG
fi
Uso em Conjunto com ping e traceroute
Diagnóstico completo de conectividade:
dig exemplo.com A +short
ping -c 4 $(dig exemplo.com A +short)
traceroute $(dig exemplo.com A +short)
Isso permite verificar se o DNS resolve corretamente, se o host responde e qual o caminho de rede até ele.
Referências
- Documentação Oficial do dig (BIND 9) — Manual completo do comando dig com todas as opções disponíveis
- Guia de Diagnóstico DNS da Cloudflare — Tutorial prático sobre diagnóstico de problemas de DNS usando ferramentas de linha de comando
- IBM Documentation: Using nslookup — Documentação oficial da IBM sobre o uso do nslookup em sistemas Unix
- O'Reilly: DNS and BIND Book - Chapter on Troubleshooting — Capítulo dedicado a diagnóstico de DNS do livro clássico sobre DNS e BIND
- DigitalOcean: How to Use dig and nslookup — Tutorial completo da DigitalOcean com exemplos práticos de diagnóstico DNS
- Linux Manual Page: dig — Página de manual do comando dig no Linux, com todas as opções detalhadas
- RIPE Labs: DNS Troubleshooting Tools — Artigo técnico do RIPE sobre ferramentas de diagnóstico DNS e boas práticas