DIG

O comando ‘dig’ é uma ferramenta para consultar servidores DNS afim 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

One thought on “DIG

  1. Julius M. 11/01/2017 / 3:24 pm

    Muito bom, claro e completo artigo. E em caso de duvida: man dig.

    Se puder fazer um artigo sobre o curl, tenho certeza que vai agradar a muitos. Este e outro comando cheio de opcoes que variam de acordo com a necessidade e o que esta se buscando.

Leave a Reply

Your email address will not be published. Required fields are marked *