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.
- NS: NameServer. 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.
Realmente essa ferramenta que abordou no blog é muito importante esse comando. Parabéns pelo post
Gostaria de agradecer por este conteúdo! Ficou muito bom, estou aprendendo bastante.
Gostei muito do que li aqui no seu site.Estou estudando o assunto,Mas quero agradecer por que seu texto foi muito valido. Obrigado 🙂
Parabéns ! Ótima ferramenta de analise.
Realmente muito útil, parabéns e obrigado por compartilhar 😉
Ótimo conteúdo!
Pra quem conhece e quem não conhece é muito bom.