DIG: Uma poderosa ferramenta para suas pesquisas DNS – parte 1

Introdução

O DIG (Domain Information Groper) é um utilitário que serve para realizarmos pesquisas de DNS. Ele funciona enviando consultas aos servidores e mostrando as respostas devolvidas por eles. Só a título de curiosidade, muitas ferramentas do IP-OK usam de diversas maneiras este aplicativo.

O ISC  (Internet Systems Consortium), é o grupo responsável pelo seu desenvolvimento, assim como é responsável pelo desenvolvimento do BIND – um dos servidores de DNS mais populares e mais usados no mundo. A título de curiosidade, no CentOS, por exemplo, ele é empacotado no dns-utils, que também traz outros utilitários bem conhecidos como o nslookup, host, etc.

Apesar de haver bastante material sobre estes temas (dns, dig, etc), este artigo servirá como base para outros que virão em seguida, onde esse conhecimento será essencial. Esta primeira parte dá uma introdução ao comando. Já a parte 2 abordará mais profundamente cada uma das partes da resposta, seções, flags, etc.

 

Tipos de registros

Antes de avançarmos para a sintaxe do comando é bom revisarmos os tipos mais comuns de registros. Segundo descrito pela rfc1035, podemos destacar os mais comuns:

  • A: Associa um nome a um endereço IP.
  • NSNameServer. Define quais servidores são os autoritativos para o domínio
  • SOA: Start-Of-Authority. Detalhes da autoridade do domínio. Descreve o servidor que tem autoridade sobre a zona, além do contato técnico, número serial e outros campos de timeout.
  • MX: Mail eXchanger. Define os servidores de correio (e prioridade) para o domínio.
  • PTR: Pointer. Retorna o nome associado a um endereço IP.
  • CNAME: Canonical NAME. Usados para criar apelidos para o domínio.
  • TXT: TeXT. Usados para descrições, comentários, observações de um domínio. Também são usados para definir configurações de SPF.

 

Primeiros passos

A sintaxe básica do comando é:

dig @servidor nome tipo

Onde:

  • @servidor – é usado para pesquisas em um servidor específico (ex. ns1.ipok.com.br). Caso o argumento @server não seja informado, os servidores que constam no /etc/resolv.conf serão usados.
  • nome – é o hostname ou domínio que será pesquisado
  • tipo – um dos tipos válidos de registros para pesquisa (mx, cname, ns, txt, etc).

 

Veja um exemplo de saída do comando:

$ dig a ipok.com.br
 
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7_2.3 <<>> a ipok.com.br
;; global options: +cmd
;; Got answer:
;; >>HEADER<< opcode: QUERY, status: NOERROR, id: 23616
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;ipok.com.br.			IN	A

;; ANSWER SECTION:
ipok.com.br.		807	IN	A	177.66.168.145

;; AUTHORITY SECTION:
ipok.com.br.		86307	IN	NS	ns2.ipok.com.br.
ipok.com.br.		86307	IN	NS	ns1.ipok.com.br.

;; ADDITIONAL SECTION:
ns1.ipok.com.br.	86307	IN	A	177.66.168.145
ns2.ipok.com.br.	86307	IN	A	177.66.168.147

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Qui Jul 14 19:51:17 BRT 2016
;; MSG SIZE  rcvd: 113

 

Opções do comando

O DIG oferece uma série de opções especiais que afetam como as consultas (ou queries) serão feitas e/ou como o resultado será exibido. Isso é feito utilizando-se um argumento precedido do sinal “+“. Exemplo:

dig +tcp a ipok.com.br

Em alguns casos, quando a opção é ativa por padrão e se quer desativá-la (por exemplo, recursividade), usamos o argumento “+no” e a respectiva opção. Exemplo:

dig +norec @ns1.ipok.com.br ipok.com.br a

 

Exemplos de opções:

  • +tcp: Utiliza o protocolo TCP para realizar as queries. Isso significa que a conexão terá como destino a porta TCP 53 (O padrão é usar o protocolo UDP).
  • +rec: Utiliza recursividade. É ativa por padrão. Podemos desativá-la usando o “+no“.
  • +short: Faz com que a saída tenha menos informações adicionais.
  • +time=N: Estabelece o timeout da consulta para N segundos.

Faça um teste com a sintaxe:

dig ipok.com.br a

Agora, utilize adicione a opção “+nocmd“, assim:

dig +nocmd ipok.com.br a

Você perceberá que algumas informações de debug do inicio da resposta serão suprimidos.

A relação completa de opções você pode encontrar no man do Linux, ou então no link: http://linux.die.net/man/1/dig

 

Exemplos de uso do DIG

 

Resolução de nome (A)

 

$ dig ipok.com.br a 
 
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7_2.3 <<>> ipok.com.br a
;; global options: +cmd
;; Got answer:
;; >>HEADER<< opcode: QUERY, status: NOERROR, id: 26993
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3

;; QUESTION SECTION:
;ipok.com.br. IN A

;; ANSWER SECTION:
ipok.com.br. 900 IN A 177.66.168.145

;; AUTHORITY SECTION:
ipok.com.br. 36062 IN NS ns1.ipok.com.br.
ipok.com.br. 36062 IN NS ns2.ipok.com.br.

;; ADDITIONAL SECTION:
ns1.ipok.com.br. 70552 IN A 177.66.168.145
ns2.ipok.com.br. 70552 IN A 177.66.168.147

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Qui Jul 14 23:17:34 BRT 2016
;; MSG SIZE rcvd: 124

 

Pesquisa dos servidores de correio (MX)

 

$ dig ipok.com.br mx
 
;; ANSWER SECTION:
ipok.com.br.		900	IN	MX	10 mx-08.mailserverpro.com.br.

 

Pesquisa dos servidores DNS (NS)

 

$ dig ipok.com.br ns
 
;; ANSWER SECTION:
ipok.com.br.		900	IN	NS	ns1.ipok.com.br.
ipok.com.br.		900	IN	NS	ns2.ipok.com.br.

 

Pesquisa da autoridade (SOA)

 

$ dig ipok.com.br soa
 
;; ANSWER SECTION:
ipok.com.br.		874 IN SOA ns1.ipok.com.br. postmaster.ipok.com.br. (
				2016062806 ; serial
				10800      ; refresh (3 hours)
				15         ; retry (15 seconds)
				604800     ; expire (1 week)
				10800      ; minimum (3 hours)
				)

 

Resolução de Dns Reverso (PTR)

 

$ dig -x 177.66.168.145

;; ANSWER SECTION:
145.168.66.177.in-addr.arpa. 3600 IN	PTR	ns1.ipok.com.br.

 

Pesquisa diretamente em um servidor

 

dig @ns1.ipok.com.br ipok.com.br a
 
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7_2.3 <<>> @ns1.ipok.com.br ipok.com.br a
; (1 server found)
;; global options: +cmd
;; Got answer:
;; >>HEADER<< opcode: QUERY, status: NOERROR, id: 60553
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3

;; QUESTION SECTION:
;ipok.com.br.			IN	A

;; ANSWER SECTION:
ipok.com.br.		900	IN	A	177.66.168.145

;; AUTHORITY SECTION:
ipok.com.br.		900	IN	NS	ns2.ipok.com.br.
ipok.com.br.		900	IN	NS	ns1.ipok.com.br.

;; ADDITIONAL SECTION:
ns1.ipok.com.br.	900	IN	A	177.66.168.145
ns2.ipok.com.br.	900	IN	A	177.66.168.147

;; Query time: 0 msec
;; SERVER: 177.66.168.145#53(177.66.168.145)
;; WHEN: Qui Jul 14 23:23:56 BRT 2016
;; MSG SIZE  rcvd: 124

 

Por hora é isso. Não deixem de conferir a segunda parte do artigo.

Fernando Bertasso Figaro

Criador do Site IP-OK

5 comentários em “DIG: Uma poderosa ferramenta para suas pesquisas DNS – parte 1

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *