Skip to content

Comandos

Começando com o básico

fazendo uma pesquisa simples com todos os detalhes

$ dig gutocarvalho.net
fazendo uma pesquisa simples retornando só o IP
$ dig +short gutocarvalho.net
pesquisando o SOA do domínio
$ dig SOA gutocarvalho.net
pesquisando o NS do domínio
$ dig NS gutocarvalho.net 
pesquisando o MX de correio
$ dig MX gutocarvalho.nmet
pesquisando o TTL do domínio
$ dig TTL gutocarvalho.net
pesquisando o PTR (reverso) de um IP
$ dig -x 8.8.8.8
pesquisando os registros TXT de um domínio
$ dig txt gutocarvalho.net

Explorando um pouco mais o DIG

pesquisando um registro em um NS específico

$ dig @1.1.1.1 lb.gutocarvalho
pesquisando as informações DNSSEC de um domínio
$ dig +dnssec gutocarvalho.net
pesquisando as chaves DNSSEC de um domínio
$ dig DNSKEY -qr gutocarvalho.net
pesquisando uma entrada de DNS com trace
$ dig +trace lb.gutocarvalho.net
verificando o tempo de resposta do SOA de um domínio
$ dig +nssearch gutocarvalho.net

Parâmetros interessantes do DIG

+short

O short só retorna os IPs para qual o registro aponta.

$ dig gutocarvalho.net +short

185.199.110.153
185.199.111.153
185.199.108.153
185.199.109.153

+tcp

Usado quando desejamos fazer a pesquisa via TCP, o padrão é UDP.

$ dig +tcp gutocarvalho.net

+time

Define o timeout da pesquisa para 5 segundos.

$ dig +time=5 gutocarvalho.net

+multiline

Vai pesquisar entradas A com DNSSEC associado em multi-linhas.

$ dig gutocarvalho.net A +dnssec +multiline

Filtrando saída do DIG com parâmetros especiais

Primeiro vamos fazer uma pesquisa comum para ter uma saída completa

$ dig gutocarvalho.net

; <<>> DiG 9.10.6 <<>> gutocarvalho.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40038
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;gutocarvalho.net.      IN  A

;; ANSWER SECTION:
gutocarvalho.net.   300 IN  A   185.199.108.153
gutocarvalho.net.   300 IN  A   185.199.109.153
gutocarvalho.net.   300 IN  A   185.199.110.153
gutocarvalho.net.   300 IN  A   185.199.111.153

;; Query time: 38 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; WHEN: Sat Mar 12 18:53:55 -03 2022
;; MSG SIZE  rcvd: 109

Agora vamos testando cada parâmetro

+noall

$ dig gutocarvalho.net +noall

; <<>> DiG 9.10.6 <<>> gutocarvalho.net +noall
;; global options: +cmd

Observe que o noall omite toda a saída do comando, ele normalmente é usado com outros comandos de forma composta, um exemplo é o answer.

+answer +noall

$ dig gutocarvalho.net +noall +answer

; <<>> DiG 9.10.6 <<>> gutocarvalho.net +noall +answer
;; global options: +cmd
gutocarvalho.net.   300 IN  A   185.199.111.153
gutocarvalho.net.   300 IN  A   185.199.108.153
gutocarvalho.net.   300 IN  A   185.199.109.153
gutocarvalho.net.   300 IN  A   185.199.110.153

O answer é útil junto com o noall, ele vai nos trazer apenas a resposta, sem comments, question, authority, stats e quaisquer outras informações que estiverem disponíveis na resposta.

+nocmd

dig +nocmd a lb.gutocarvalho.net +noall +answer
lb.gutocarvalho.net.    42  IN  A   200.150.204.87

Quando aplicado retira a versao do bind e comando

<<>> DiG 9.10.6 <<>> a lb.gutocarvalho.net +noall +answer

Para funcionar o parâmetro tem que vir logo após o comando dig

+nocomments

$ dig gutocarvalho.net +nocomments

; <<>> DiG 9.10.6 <<>> gutocarvalho.net +nocomments
;; global options: +cmd
;gutocarvalho.net.      IN  A
gutocarvalho.net.   297 IN  A   185.199.110.153
gutocarvalho.net.   297 IN  A   185.199.111.153
gutocarvalho.net.   297 IN  A   185.199.108.153
gutocarvalho.net.   297 IN  A   185.199.109.153
;; Query time: 29 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; WHEN: Sat Mar 12 18:58:57 -03 2022
;; MSG SIZE  rcvd: 109

O nocomments retira toda a parte inicial da resposta

; <<>> DiG 9.10.6 <<>> gutocarvalho.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40925
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;gutocarvalho.net.      IN  A

+noquestion

$ dig gutocarvalho.net +noquestion

; <<>> DiG 9.10.6 <<>> gutocarvalho.net +noquestion
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10078
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; ANSWER SECTION:
gutocarvalho.net.   300 IN  A   185.199.108.153
gutocarvalho.net.   300 IN  A   185.199.109.153
gutocarvalho.net.   300 IN  A   185.199.110.153
gutocarvalho.net.   300 IN  A   185.199.111.153

;; Query time: 42 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; WHEN: Sat Mar 12 19:01:58 -03 2022
;; MSG SIZE  rcvd: 109

O noquestion retira essa parte da resposta

;; QUESTION SECTION:
;gutocarvalho.net.      IN  A

+nostats

$ dig gutocarvalho.net +nostats

; <<>> DiG 9.10.6 <<>> gutocarvalho.net +nostats
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63625
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;gutocarvalho.net.      IN  A

;; ANSWER SECTION:
gutocarvalho.net.   300 IN  A   185.199.109.153
gutocarvalho.net.   300 IN  A   185.199.110.153
gutocarvalho.net.   300 IN  A   185.199.111.153
gutocarvalho.net.   300 IN  A   185.199.108.153

Esse parâmetro suprime as estatísticas da pesquisa.

;; Query time: 38 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; WHEN: Sat Mar 12 19:13:28 -03 2022
;; MSG SIZE  rcvd: 109

+noauthority

;; AUTHORITY SECTION:
gutocarvalho.net.   3144    IN  NS  monroe.ns.cloudflare.com.
gutocarvalho.net.   3144    IN  NS  houston.ns.cloudflare.com.

É útil para remover essa parte da resposta, caso retorne o authority na pesquisa.

+noadditional

;; ADDITIONAL SECTION:
lia.ns.cloudflare.com.  84354   IN  A     173.245.58.185
lia.ns.cloudflare.com.  170762  IN  AAAA  2400:cb00:2049:1::adf5:3ab9
mark.ns.cloudflare.com. 170734  IN  A     173.245.59.130
mark.ns.cloudflare.com. 170734  IN  AAAA  2400:cb00:2049:1::adf5:3b82

A seção aditional pode trazer informações como o IP dos DNS Server autoritativos da seção authority, esse parâmetro suprime esse trecho.

+norec

$ dig +norec @monroe.ns.cloudflare.com. gutocarvalho.net a
Essa opção desabilita a pesquisa recursiva, neste caso a CloudFlare e responsável por responder por meu domínio, sendo que o servidor monroe é um dos meus servidores DNS, ele já sabe a resposta.

Pesquisas parametrizadas comuns

pesquisa comum e rápida que retorna apenas o endereço IP

$ dig +short lb.gutocarvalho.net
pesquisando por registro A com resposta simples

$ dig +nocmd lb.gutocarvalho.net a +noall +answer
pesquisando por CNAME com resposta simples

$ dig +nocmd mail.google.com cname +noall +answer

pesquisando por registro TXT com resposta simples

$ dig +nocmd google.com txt +noall +answer

fazendo pesquisa em múltiplos domínios

$ dig ubuntu.com mx +noall +answer redhat.com ns +noall +answer

Pesquisa usando um arquivo (bulk)

Imagine que você tem o arquivo dominios.txt com o conteúdo abaixo

gutocarvalho.net
bolha.us
gcn.sh

vamos rodar agora uma pesquisa contra o arquivo

$ dig -f dominios.txt +short
saída exemplo

185.199.111.153
185.199.108.154
185.199.109.155
:)

Quer saber mais?

Para saber mais veja o help do comando

$ dig --help

Para ir além acesse a manpage

$ man dig

Configurando seu .digrc

O dig tem um arquivo de configuração, o famoso .digrc.

$ echo "+nostats +nocomments +nocmd +noquestion +recurse" > ~/.digrc
Agora você digita menos e tem o resultado desejado.