Pular para o conteúdo
Todos os conceitos

Consultas DNS com dig

O dig pergunta qualquer coisa ao DNS: endereços (A, AAAA), nome reverso (PTR), textos como o SPF (TXT) e servidores (NS).

O dig é a ferramenta de linha de comando para perguntar qualquer coisa ao DNS. A forma básica é dig <nome> <tipo>:

$ dig exemplo.org A +noall +answer
exemplo.org.    600    IN    A    192.0.2.10
pergunta $ dig exemplo.org A +noall +answer resposta exemplo.org. 600 IN A 192.0.2.10 nome o nome perguntado TTL segundos em cache classe internet tipo IPv4 valor o endereço
A resposta do dig repete o nome e o tipo perguntados e traz o TTL, a classe e o valor: aqui, o endereço IPv4 de exemplo.org.

Cada linha de resposta traz o nome, o TTL (por quantos segundos a resposta pode ficar guardada em cache), a classe (IN, de internet), o tipo e o valor. Os tipos que mais aparecem quando se levanta a ficha de um servidor:

Tipo O que guarda Consulta
A Endereço IPv4 dig exemplo.org A
AAAA Endereço IPv6 dig exemplo.org AAAA
PTR O nome de um endereço (resolução reversa) dig -x 192.0.2.10
TXT Texto livre, como o SPF dig exemplo.org TXT
NS Os servidores autoritativos de uma zona dig exemplo.org NS
MX O servidor de e-mail do domínio dig exemplo.org MX

Resolução reversa. O PTR de 192.0.2.10 fica no nome 10.2.0.192.in-addr.arpa: os quatro números de trás para frente. O de um IPv6 fica sob ip6.arpa, um dígito hexadecimal por rótulo, também de trás para frente. O dig -x monta esse nome sozinho. Quem configura o PTR é o dono do bloco de endereços (em geral, o provedor de hospedagem), e ele não precisa bater com o nome direto.

SPF. Um registro TXT que começa com v=spf1 lista quem pode mandar e-mail em nome do domínio: mx (os servidores do registro MX), a:nome (os endereços desse nome), ip4: e ip6: (endereços ou blocos). No fim vem o que fazer com o resto: -all (falha: não autorizado) ou ~all (falha leve: suspeito).

Lendo o cabeçalho. A linha status diz como foi: NOERROR, NXDOMAIN (o nome não existe), SERVFAIL (o resolvedor não conseguiu a resposta) ou REFUSED (o servidor não quis responder). A linha flags mostra os bits ligados: qr (é uma resposta), rd (recursão pedida), ra (recursão disponível), aa (resposta autoritativa) e ad (validada com DNSSEC).

Opções úteis: +short (só os valores), +noall +answer (só a seção de resposta), @servidor (pergunta a um servidor escolhido, em vez do resolvedor da rede) e -4 ou -6 (força IPv4 ou IPv6). No Windows, nslookup faz as consultas básicas. Sem terminal, o Dig do Google Admin Toolbox (abre em nova aba) consulta pelo navegador, e o DigWebInterface (abre em nova aba) deixa escolher o servidor.

Em Python, o pacote dnspython faz o mesmo: dns.resolver.resolve("exemplo.org", "AAAA").

Aparece nestes desafios