O comando ‘dig’ é uma ferramenta para consultar servidores DNS a fim de obter informações sobre endereços de host, servidores de email (MX), servidores de nomes (NS) e informações relacionadas. Esta ferramenta pode ser usada a partir de qualquer sistema operacional Linux (Unix) ou OS X nativamente. É a melhor ferramenta para diagnosticar e entender rapidamente as respostas do DNS.
Abaixo, fizemos uma pequena compilação para consulta de registros A, NS e MX.
Execute o comando
dig rotadefault.com.br ; <<>> DiG 9.10.3-P4-Debian <<>> rotadefault.com.br ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21507 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 5 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;rotadefault.com.br. IN A ;; ANSWER SECTION: rotadefault.com.br. 3600 IN A 191.252.51.69 ;; AUTHORITY SECTION: rotadefault.com.br. 86400 IN NS ns1.locaweb.com.br. rotadefault.com.br. 86400 IN NS ns2.locaweb.com.br. ;; ADDITIONAL SECTION: ns1.locaweb.com.br. 1283 IN A 189.126.108.2 ns2.locaweb.com.br. 83435 IN A 201.76.40.2 ns1.locaweb.com.br. 368 IN AAAA 2804:218:d1::ca5a ns2.locaweb.com.br. 60858 IN AAAA 2804:218:d2::cafe ;; Query time: 127 msec ;; SERVER: 181.213.132.2#53(181.213.132.2) ;; WHEN: Mon Oct 16 10:34:28 -02 2017 ;; MSG SIZE rcvd: 195
Olhando de perto
<<>> DiG 9.10.3-P4-Debian <<>> rotadefault.com.br
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21507
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 5
HEADER: exibe o número de versão do comando dig, as opções globais usadas pelo comando dig e algumas informações de cabeçalho adicionais. O status é um ponto importante; neste caso, não houve nenhum erro informado. Este campo pode mostrar um dos seguintes status quando uma consulta é solicitada:
- NOERROR: Tudo ok. A zona está sendo atendida pela autoridade solicitada sem problemas.
- SERVFAIL : O nome que foi consultado existe, mas não há dados ou os dados são invalidos para esse nome na autoridade requerida.
- NXDOMAIN: Non-Existent Domain – O nome em questão não existe e, portanto, não há dados DNS autenticados a serem atendidos. Como no exemplo abaixo:
dig testerotadefault.com.br ; <<>> DiG 9.9.3-P2 <<>> testerotadefault.com.br ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 23792 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
- REFUSED: O servidor de nomes se recusa a executar a operação por motivos de política. Por exemplo, um servidor de nomes pode não querer fornecer a informação ao solicitante especifico ou um servidor de nomes pode não desejar executar uma operação específica (por exemplo, transferência de zona) para dados específicos.
Para as flags, do cabeçalho temos as seguintes opções:
QUESTION SECTION: Exibe as questões feitas ao DNS, por exemplo, uma vez que digitamos ‘dig rotadefault.com.br’, indicará nessa sessão a ser consultada para um registro A do site rotadefault.com.br.
;; QUESTION SECTION:
;rotadefault.com.br. IN A
ANSWER SECTION: Exibe a resposta que recebe do DNS. Exibe o registro A record de rotadefault.com.br;
;; ANSWER SECTION:
rotadefault.com.br. 3600 IN A 191.252.51.69
Veja que o TTL está em 3600 segundos, equivalente a uma hora.
AUTHORITY SECTION: Exibe o nome do servidor DNS que tem autoridade para responder essa consulta.
;; AUTHORITY SECTION:
rotadefault.com.br. 86400 IN NS ns1.locaweb.com.br.
rotadefault.com.br. 86400 IN NS ns2.locaweb.com.br.
ADDITIONAL SECTION: Exibe o endereço IP do servidor de nomes listados em AUTHORITY SECTION.
;; ADDITIONAL SECTION:
ns1.locaweb.com.br. 1283 IN A 189.126.108.2
ns2.locaweb.com.br. 83435 IN A 201.76.40.2
ns1.locaweb.com.br. 368 IN AAAA 2804:218:d1::ca5a
ns2.locaweb.com.br. 60858 IN AAAA 2804:218:d2::café
Exibindo apenas ANSWER SECTION da saída do comando ‘dig’
A grande parte das nossas consultas apenas procura a “ANSWER SECTION” do comando dig. Conforme comandos abaixo, podemos omitir algumas saídas:
+nocomments: Não exibe a linha de comentários;
+noauthority: Não exibe a saída autoritativa;
+noadditional : Não exibe ‘additional section’;
+nostats: Não exibe ‘stats section’;
+noanswer: Não exibe answer section.
+noall: Não exibe os resultados mas se utilizado como +noall +answer irá exibir somente as respostas;
+short: Exibe a resposta em um formato mínimo.
dig www.rotadefault.com.br +nocomments ; <<>> DiG 9.9.3-P2 <<>> www.rotadefault.com.br +nocomments ;; global options: +cmd ;rotadefault.com.br. IN A rotadefault.com.br. 1279 IN A 191.252.51.69 dig rotadefault.com.br +noall +answer ; <<>> DiG 9.10.3-P4-Debian <<>> rotadefault.com.br +noall +answer ;; global options: +cmd rotadefault.com.br. 3533 IN A 191.252.51.69 dig rotadefault.com.br +short 191.252.51.69
Consultando registros MX , NS, A, TXT, etc.
A consulta de diferentes registros DNS podem ser executados com os argumentos inseridos na consulta como:
dig uol.com.br MX
dig uol.com.br MX +answer +nocomments ; <<>> DiG 9.10.3-P4-Debian <<>> uol.com.br MX +answer +nocomments ;; global options: +cmd ;uol.com.br. IN MX uol.com.br. 14397 IN MX 10 mx.uol.com.br.
dig uol.com.br NS
dig uol.com.br NS +short eliot.uol.com.br. borges.uol.com.br. charles.uol.com.br.
dig uol.com.br A
dig uol.com.br A +answer +nocomments ; <<>> DiG 9.10.3-P4-Debian <<>> uol.com.br A +answer +nocomments ;; global options: +cmd ;uol.com.br. IN A uol.com.br. 11 IN A 200.221.2.45
dig uol.com.br ANY
dig uol.com.br ANY ; <<>> DiG 9.10.3-P4-Debian <<>> uol.com.br ANY ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58271 ;; flags: qr rd ra; QUERY: 1, ANSWER: 10, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;uol.com.br. IN ANY ;; ANSWER SECTION: uol.com.br. 3554 IN SOA eliot.uol.com.br. root.uol.com.br. 2016038165 7200 3600 432000 900 uol.com.br. 254 IN A 200.147.67.142 uol.com.br. 254 IN A 200.221.2.45 uol.com.br. 254 IN AAAA 2804:49c:3103:401:ffff:ffff:ffff:1 uol.com.br. 17954 IN MX 10 mx.uol.com.br. uol.com.br. 14 IN TXT "DZC=qvK68EJ" uol.com.br. 14 IN TXT "v=spf1 include:_net1.uol.com.br include:_net2.uol.com.br -all" uol.com.br. 3554 IN NS charles.uol.com.br. uol.com.br. 3554 IN NS borges.uol.com.br. uol.com.br. 3554 IN NS eliot.uol.com.br.
Consulta do reverso com -x
dig -x 200.147.67.142 +short 200-147-67-142.static.uol.com.br.
Caso você queira forçar a consulta utilizando um servidor DNS diferente da sua máquina use o @ip_servidor_dns
dig uol.com.br @4.2.2.2 ; <<>> DiG 9.9.3-P2 <<>> uol.com.br @4.2.2.2 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51526 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;uol.com.br. IN A ;; ANSWER SECTION: uol.com.br. 1 IN A 200.147.67.142
Se vocês tiverem alguma dica, algum comando secreto… especial, deixe nos comentários.
Referências
https://ns1.com/articles/decoding-dig-output
https://mediatemple.net/community/products/dv/204644130/understanding-the-dig-command