Home Comunidade Eventos YouTube Networks Desafios // produtos Academy News CTI | CVE Contato

06 - Diagnóstico (dig, nslookup, host)

video explicativo
Video explicativoEspaco reservado para o video desta anotação — adicione video: https://youtu.be/... no frontmatter da nota.

Diagnóstico DNS: dig, nslookup, host

1. Visão Geral das Ferramentas

O diagnóstico de DNS é uma das habilidades mais frequentes em redes. As três ferramentas clássicas — dig, nslookup e host — foram desenvolvidas em épocas diferentes e têm propósitos sobrepostos. Complementam o toolkit ferramentas modernas como drill (ldns), kdig (Knot DNS) e dnsmasq (para testes locais).

Ferramenta Origem Saída Quando usar
dig BIND (ISC), 1990s Detalhada, parseable Diagnóstico técnico
nslookup BSD, 1980s Verbosa, interativa Compatibilidade Windows
host BIND (ISC) Compacta Quick check
drill NLnet Labs (ldns) Detalhada, valida DNSSEC Testes DNSSEC
kdig Knot DNS Detalhada, suporta DoT/DoH Diagnóstico moderno

2. dig (Domain Information Groper)

A sintaxe geral é dig [@server] name [type] [options]. O @server especifica o servidor DNS a consultar (default: /etc/resolv.conf). type pode ser A, AAAA, MX, NS, TXT, SOA, ANY, AXFR, etc. As options são flags começadas com +.

Exemplos Básicos

dig www.exemplo.com.br                       # consulta default (tipo A)
dig www.exemplo.com.br +short                # apenas a resposta
dig exemplo.com.br MX +short                 # registros MX
dig exemplo.com.br NS                        # registros NS
dig exemplo.com.br TXT                       # registros TXT
dig exemplo.com.br AAAA                      # endereço IPv6
dig @1.1.1.1 www.exemplo.com.br              # servidor específico (Cloudflare)
dig -x 203.0.113.10                          # reverse DNS (PTR)
dig exemplo.com.br A +noall +answer          # apenas a seção ANSWER
dig exemplo.com.br A +noall +stats           # apenas estatísticas

Opções Mais Úteis

Opção Função
+short Apenas a resposta compacta
+trace Resolve recursivamente a partir da raiz
+noall +answer Suprime cabeçalhos, mostra só a seção ANSWER
+stats Mostra estatísticas (tempo, tamanho)
+dnssec Solicita DNSSEC (set DO bit)
+multi Saída em formato human-readable multi-line
+tcp / +ignore Força TCP / ignora truncamento (não tenta TCP)
+nsid Solicita NSID (identificação do servidor respondendo)
+subnet=1.2.3.0/24 ECS — envia subnet do cliente (para CDNs)

Trace: O Modo Mais Educativo

dig +trace www.exemplo.com.br resolve recursivamente mostrando cada etapa: (1) consulta aos root servers; (2) referência aos servidores do TLD .br (a.dns.br, etc.); (3) referência aos autoritativos do domínio; (4) resposta final. Esse modo é indispensável para diagnosticar problemas de delegação, glue records ausentes, ou respostas divergentes entre servidores.

Consulta a DNSSEC com dig

dig +dnssec www.exemplo.com.br A
# Saída incluirá registros RRSIG e a flag "ad" (Authentic Data) se validado.
# ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, ...

# Validar cadeia completa desde a raiz com delv (parte do pacote BIND):
delv @1.1.1.1 www.exemplo.com.br A

3. nslookup

A ferramenta mais antiga (1980s), disponível em quase todos os sistemas (incluindo Windows). Tem modo interativo e não-interativo. No modo não-interativo, usa-se nslookup -type=MX exemplo.com.br, nslookup -type=NS exemplo.com.br, nslookup -type=TXT exemplo.com.br, nslookup 203.0.113.10 (reverse) e nslookup www.exemplo.com.br 1.1.1.1 (servidor específico).

Modo Interativo

nslookup
> server 1.1.1.1              # troca servidor
> set type=MX                 # tipo MX
> exemplo.com.br              # consulta
> set debug                   # saída verbosa
> exemplo.com.br
> exit

A desvantagem do nslookup é que em algumas distribuições Linux ele foi declarado obsoleto (no BIND 9) em favor do dig e host, mas continua disponível por compatibilidade.

4. host

Versão mais compacta e human-readable, do pacote BIND. Ideal para scripts rápidos. Comandos comuns: host www.exemplo.com.br (A e AAAA), host -t MX exemplo.com.br (MX), host -t NS exemplo.com.br (NS), host -t TXT exemplo.com.br (TXT), host -t SOA exemplo.com.br (SOA), host -t AAAA exemplo.com.br (IPv6), host -a exemplo.com.br (saída detalhada), host 203.0.113.10 (reverse), host www.exemplo.com.br 1.1.1.1 (servidor específico).

5. dnsmasq para Testes Locais

O dnsmasq é um servidor DNS+DHCP leve, frequentemente usado em laboratório para interceptar consultas, forjar respostas para testes, ou como caching resolver.

# /etc/dnsmasq.conf
listen-address=127.0.0.1
server=8.8.8.8
# Forjar domínios para testes
address=/meuteste.local/192.168.1.100
address=/blocked.exemplo.com/0.0.0.0

systemctl start dnsmasq
dig @127.0.0.1 meuteste.local +short   # 192.168.1.100

6. Drill e kdig (Modernos)

drill (ldns)

Mais limpo que o dig, com suporte DNSSEC nativo. Comandos: drill www.exemplo.com.br, drill -S www.exemplo.com.br (valida DNSSEC explicitamente), drill -D www.exemplo.com.br (dnssec), drill -T www.exemplo.com.br (via TCP).

kdig (Knot DNS)

Suporta DoT (DNS over TLS), DoH (DNS over HTTPS) e DoQ (DNS over QUIC). Comandos: kdig www.exemplo.com.br, kdig @1.1.1.1 +tls www.exemplo.com.br (DoT na porta 853), kdig @1.1.1.1 +https www.exemplo.com.br (DoH na porta 443), kdig @dns.google +quic www.exemplo.com.br (DoQ), kdig +dnssec www.exemplo.com.br (DNSSEC).

7. Diagnóstico Passo a Passo

Cenário 1: Site não abre, suspeita de DNS

dig www.exemplo.com.br +short                       # 1. resolve?
dig www.google.com +short                           # 2. isolar falha local
dig @1.1.1.1 www.exemplo.com.br +short              # 3. servidor alternativo
dig exemplo.com.br NS +short                        # 4. autoritativos
dig @ns1.exemplo.com.br www.exemplo.com.br          # 5. consultar autoritativo
dig +trace www.exemplo.com.br                       # 6. trace completo

Cenário 2: E-mail não chega, suspeita de MX/SPF

dig exemplo.com.br MX +short
dig exemplo.com.br TXT +short | grep spf
dig _dmarc.exemplo.com.br TXT +short
dig google._domainkey.exemplo.com.br TXT +short

Cenário 3: Suspeta de sequestro de DNS

# Comparar recursivos públicos
dig @1.1.1.1 www.exemplo.com.br +short
dig @8.8.8.8 www.exemplo.com.br +short
dig @9.9.9.9 www.exemplo.com.br +short
# Se divergentes, validar com DNSSEC
dig +dnssec @1.1.1.1 www.exemplo.com.br A
# Verificar com autoritativo diretamente
dig @a.dns.br exemplo.com.br NS +short
dig @ns1.exemplo.com.br www.exemplo.com.br +short

Cenário 4: Lentidão para resolver

dig www.exemplo.com.br +stats | grep "Query time"   # medir tempo
dig +tcp www.exemplo.com.br                          # forçar TCP
dig +notcp www.exemplo.com.br                        # forçar UDP
dig +nsid www.exemplo.com.br                         # identificar servidor

8. Boas Práticas e Dicas

Use +short para scripts: evite parsear a saída verbosa do dig. Em vez de IP=$(dig www.exemplo.com.br | awk '/ANSWER SECTION/{getline; print $5}'), use IP=$(dig +short www.exemplo.com.br | head -1).

Verifique o AD bit em consultas DNSSEC: dig @1.1.1.1 +dnssec www.exemplo.com.br | grep "flags:" deve mostrar ;; flags: qr rd ra ad; se a validação DNSSEC foi bem-sucedida.

Teste o tamanho da resposta: dig www.exemplo.com.br TXT +stats | grep "MSG SIZE". Se passar de 512 bytes sem EDNS0, há problema em firewalls antigos.

Use ECS para testar CDNs: dig +subnet=200.143.0.0/24 www.exemplo.com.br +short simula consulta vinda de São Paulo; dig +subnet=8.8.8.0/24 www.exemplo.com.br +short simula consulta vinda de outro país.

9. Tabela Resumo de Comandos

Objetivo Comando
IP de um host dig host +short
MX de um domínio dig dominio MX +short
NS autoritativos dig dominio NS +short
TXT (SPF, DKIM, DMARC) dig dominio TXT +short
Reverse DNS dig -x IP +short
Traçar hierarquia dig +trace dominio
Validar DNSSEC dig +dnssec dominio A
Forçar TCP dig +tcp dominio
Resposta formatada dig dominio +multi
Estatísticas dig dominio +stats

10. Conclusão

As ferramentas de diagnóstico DNS são o canivete suíço do engenheiro de redes. Dominar dig é particularmente importante por sua flexibilidade e parsing facilitado; nslookup mantém utilidade em ambientes Windows e scripts legados; host oferece concisão para quick checks. Para cenários modernos com DoT, DoH, DoQ e validação DNSSEC detalhada, kdig e drill são complementos essenciais. Em conjunto, essas ferramentas permitem diagnosticar qualquer problema de DNS — desde falhas simples de resolução até problemas sutis de delegação, cache, DNSSEC e CDN routing. A regra prática é: nunca confie em uma única consulta; sempre trace, valide a cadeia e compare servidores.