Para um administrador de sistemas, a normalidade é uma tênue linha que pode se romper a qualquer momento. Quando as coisas começam a dar errado, é crucial ter ferramentas à mão para solucionar problemas. É aí que os comandos `dig` se tornam seus melhores aliados.
A vida de um administrador de sistemas é constantemente desafiadora. A necessidade de estar de prontidão 24 horas por dia, 7 dias por semana, é um sacrifício que merece reconhecimento.
No entanto, nosso objetivo aqui não é analisar as rotinas de trabalho desses profissionais, mas sim explorar uma ferramenta poderosa para diagnosticar problemas de DNS.
O que são os Comandos `dig`?
`Dig`, abreviação de Domain Information Groper, oferece uma das formas mais ágeis de interrogar servidores DNS para identificar o que está operando corretamente e o que precisa de atenção.
Com `dig`, é possível verificar o endereço IP do servidor, os servidores de nomes, as trocas de e-mail e o TTL (Time to Live), tudo por meio de comandos fáceis de lembrar.
Antes de mergulharmos nos comandos básicos, vamos garantir que você tenha os utilitários `dig` instalados. Execute:
$ dig -v
O resultado esperado é a exibição da versão do `dig`, algo como:
DiG 9.18.1-1ubuntu1-Ubuntu
Se você não obtiver uma resposta semelhante, será necessário instalar os utilitários `dig`.
Para usuários de Ubuntu e Debian, o comando de instalação é:
$ sudo apt-get install dnsutils
E, para quem utiliza CentOS ou RHEL, use:
$ sudo yum install bind-utils
Após a instalação, execute `dig -v` novamente para confirmar que tudo ocorreu conforme o esperado.
Agora, vamos explorar alguns comandos `dig` que podem ser extremamente úteis em seu trabalho como administrador de sistemas.
Verificando o Endereço IP
Este é um dos comandos mais simples, com ele verificamos o endereço IP do servidor associado a um nome de domínio.
Vamos começar com este exemplo: `dig etechpt.com.com`
$ dig etechpt.com.com ; <<>> DiG 9.18.1-1ubuntu1-Ubuntu <<>> etechpt.com.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38635 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 65494 ;; QUESTION SECTION: ;etechpt.com.com. IN A ;; ANSWER SECTION: etechpt.com.com. 67 IN A 172.66.43.163 etechpt.com.com. 67 IN A 172.66.40.93 ;; Query time: 4 msec ;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP) ;; WHEN: Wed Nov 09 04:29:58 UTC 2022
O primeiro detalhe a observar é o status `NOERROR` na seção “Got answer”. Isso indica que a consulta foi bem-sucedida.
A informação principal que buscamos aqui é o endereço IP do servidor. Ele está listado na seção “Answer”: `172.66.40.93` (o servidor primário) e `172.66.43.163` (o servidor de failover).
A declaração original da consulta é encontrada na seção “Question”.
A seção final fornece estatísticas sobre a consulta.
Entretanto, essa quantidade de informação nem sempre é necessária.
Para uma resposta mais concisa, utilize:
$ dig etechpt.com.com +noall +answer etechpt.com.com. 53 IN A 172.66.43.163 etechpt.com.com. 53 IN A 172.66.40.93
Com `+noall`, desabilitamos todas as informações extras, e com `+answer`, exibimos apenas a resposta desejada.
Para uma resposta ainda mais breve, utilize:
$ dig etechpt.com.com +short 172.66.43.163 172.66.40.93
Essa é a consulta básica para obter o registro DNS A. Vamos explorar outros tipos de registros.
Encontrando Registros DNS Específicos
Os servidores de nomes, que são os servidores DNS autoritativos de um domínio, podem ser encontrados usando a variável `ns`.
$ dig etechpt.com.com ns +short olga.ns.cloudflare.com. todd.ns.cloudflare.com.
De forma semelhante, a variável `mx` retorna os servidores de e-mail juntamente com suas prioridades.
$ dig etechpt.com.com mx +noall +answer etechpt.com.com. 300 IN MX 1 aspmx.l.google.com. etechpt.com.com. 300 IN MX 10 alt3.aspmx.l.google.com. etechpt.com.com. 300 IN MX 10 alt4.aspmx.l.google.com. etechpt.com.com. 300 IN MX 5 alt1.aspmx.l.google.com. etechpt.com.com. 300 IN MX 5 alt2.aspmx.l.google.com.
Da mesma forma, `txt`, `aaaa`, `cname` e outras variáveis podem ser usadas com o comando `dig` para obter diferentes tipos de registros DNS.
Rastreando DNS
O rastreamento de DNS, como o próprio nome sugere, examina o caminho dos servidores de nomes raiz, servidores de nomes autoritativos, até o endereço IP do domínio.
$ dig etechpt.com.com +trace ; <<>> DiG 9.18.1-1ubuntu1-Ubuntu <<>> etechpt.com.com +trace ;; global options: +cmd . 322660 IN NS a.root-servers.net. . 322660 IN NS b.root-servers.net. . 322660 IN NS c.root-servers.net. . 322660 IN NS d.root-servers.net. . 322660 IN NS e.root-servers.net. . 322660 IN NS f.root-servers.net. . 322660 IN NS g.root-servers.net. . 322660 IN NS h.root-servers.net. . 322660 IN NS i.root-servers.net. . 322660 IN NS j.root-servers.net. . 322660 IN NS k.root-servers.net. . 322660 IN NS l.root-servers.net. . 322660 IN NS m.root-servers.net. ;; Received 811 bytes from 127.0.0.53#53(127.0.0.53) in 16 ms com. 172800 IN NS i.gtld-servers.net. com. 172800 IN NS k.gtld-servers.net. com. 172800 IN NS e.gtld-servers.net. com. 172800 IN NS c.gtld-servers.net. com. 172800 IN NS h.gtld-servers.net. com. 172800 IN NS b.gtld-servers.net. com. 172800 IN NS d.gtld-servers.net. com. 172800 IN NS f.gtld-servers.net. com. 172800 IN NS j.gtld-servers.net. com. 172800 IN NS g.gtld-servers.net. com. 172800 IN NS a.gtld-servers.net. com. 172800 IN NS m.gtld-servers.net. com. 172800 IN NS l.gtld-servers.net. com. 86400 IN DS 30909 8 2 E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766 com. 86400 IN RRSIG DS 8 1 86400 20221121170000 20221108160000 18733 . ZgW2dKMBP6rqIgQSGN5uzFhNFZuIPUg7JrkXzgE9VKh68LOIuQlFgTTV xt3Sz4ytgru8JWcwCHgiqCTjbaN3WeHcrDVf0ItG0Az/01ofBWfoAu9S 1JFYcOrYkTUidn8R4vROkwzsTrZMirnB/4yrA4MD5thWVBr3IczcnFto DbADuw8Qy/RUEUfcu+LcQ4Ge+OzIP8eE1T6+nbMRqFZBSMFoBO1w0Mmk xNGyEclfFkymQ4CsYxnvYVstljpLqh1OhoAEwY6D+0cSh9dKNQ5LKhgq UXqfJ+zmdcvL+cVvMjfcB0Wj6/hmEkpEp1ISawlTjFUDgiKNZxiow02r JL4tsw== ;; Received 1201 bytes from 192.33.4.12#53(c.root-servers.net) in 148 ms etechpt.com.com. 172800 IN NS olga.ns.cloudflare.com. etechpt.com.com. 172800 IN NS todd.ns.cloudflare.com. etechpt.com.com. 86400 IN DS 2371 13 2 CBAA2018F41B29985DAEDE7F127D4F9626ADA609665CEBAB0011903B 7C639254 etechpt.com.com. 86400 IN RRSIG DS 8 2 86400 20221112051535 20221105030535 53929 com. sbqDGqvxmEAjS4KRx8LvQAG9IusLgRRm5GPDf+AFkXddGgfJN37vJP1H 4JKMriWtgXZHc3g1ANMNjij+5J1K3GgeNy2w0UYc7xHkmvhsd15pDvi9 +BoiBsjC8ffznyli8sV8XVhm65oKDHJRx5YEtXUVA4p9hegO0NHDccvt ujQKMShBWX3nxs7P4onL13gspVScOoZgzXL3470UfDW7MA== ;; Received 601 bytes from 2001:501:b1f9::30#53(m.gtld-servers.net) in 144 ms etechpt.com.com. 300 IN A 172.66.43.163 etechpt.com.com. 300 IN A 172.66.40.93 etechpt.com.com. 300 IN RRSIG A 13 2 300 20221110051242 20221108031242 34505 etechpt.com.com. tKDYd/FHjs/aRHeOQJlsxXDJYtVcHA4G16QRJKlhFyYkZ2TmLKNIc6eM vXfpO91IVArK67KbyW5lIxI5cCxcQg== ;; Received 183 bytes from 172.64.32.137#53(olga.ns.cloudflare.com) in 16 ms
Da mesma forma, pode-se obter uma resposta mais concisa utilizando as variáveis `+short` ou `+noall +answer`.
Pesquisa Reversa de DNS
A pesquisa reversa de DNS revela o registro PTR associado a um endereço IP. É o oposto de um registro DNS A e mapeia endereços IP para nomes de domínio.
No entanto, se um nome de domínio não tiver um registro DNS PTR, não haverá seção de resposta.
O comando relevante aqui é `dig -x endereço IP`.
[email protected]:~$ dig yahoo.com +short 74.6.143.26 74.6.231.20 98.137.11.164 98.137.11.163 74.6.143.25 74.6.231.21 [email protected]:~$ dig -x 74.6.143.26 ; <<>> DiG 9.18.1-1ubuntu1-Ubuntu <<>> -x 74.6.143.26 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32267 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 5, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 65494 ;; QUESTION SECTION: ;26.143.6.74.in-addr.arpa. IN PTR ;; ANSWER SECTION: 26.143.6.74.in-addr.arpa. 600 IN PTR media-router-fp74.prod.media.vip.bf1.yahoo.com. ;; AUTHORITY SECTION: 143.6.74.in-addr.arpa. 172800 IN NS ns3.yahoo.com. 143.6.74.in-addr.arpa. 172800 IN NS ns4.yahoo.com. 143.6.74.in-addr.arpa. 172800 IN NS ns5.yahoo.com. 143.6.74.in-addr.arpa. 172800 IN NS ns2.yahoo.com. 143.6.74.in-addr.arpa. 172800 IN NS ns1.yahoo.com. ;; Query time: 192 msec ;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP) ;; WHEN: Wed Nov 09 04:17:08 UTC 2022 ;; MSG SIZE rcvd: 203
Como você pode ver, o nome de domínio na seção “Answer”, `media-router-fp74.prod.media.vip.bf1.yahoo.com/`, está associado ao seu endereço IP primário `74.6.143.26`.
E acessar esse URL, de fato, levará você à página inicial de busca do Yahoo.
No entanto, isso pode não ocorrer para todos os hosts da Web. Em alguns casos, esses URLs longos podem não resolver para nada.
Consultando Servidores DNS Específicos
Em algumas situações, você pode precisar consultar um servidor específico para suas buscas de DNS. Isso pode ser feito facilmente adicionando o endereço IP do servidor `@DNS`, permitindo escolher qualquer servidor DNS para uma consulta particular.
$ dig @1.1.1.1 etechpt.com.com +noall +answer +stats etechpt.com.com. 300 IN A 172.66.40.93 etechpt.com.com. 300 IN A 172.66.43.163 ;; Query time: 156 msec ;; SERVER: 1.1.1.1#53(1.1.1.1) (UDP) ;; WHEN: Wed Nov 09 04:18:56 UTC 2022 ;; MSG SIZE rcvd: 74
Você pode verificar isso na seção de estatísticas, que menciona “SERVER: 1.1.1.1”, que pertence à Cloudflare.
Da mesma forma, é possível consultar os servidores DNS do Google (8.8.8.8):
$ dig @8.8.8.8 etechpt.com.com mx +noall +answer +stats etechpt.com.com. 300 IN MX 1 aspmx.l.google.com. etechpt.com.com. 300 IN MX 10 alt3.aspmx.l.google.com. etechpt.com.com. 300 IN MX 10 alt4.aspmx.l.google.com. etechpt.com.com. 300 IN MX 5 alt1.aspmx.l.google.com. etechpt.com.com. 300 IN MX 5 alt2.aspmx.l.google.com. ;; Query time: 44 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) (UDP) ;; WHEN: Wed Nov 09 04:23:16 UTC 2022 ;; MSG SIZE rcvd: 157
Vamos Explorar! ⛏️
Como o nome sugere, os comandos `dig` são usados para “desenterrar” informações de DNS e identificar problemas relacionados. Eles são geralmente rápidos e fáceis de usar e memorizar.
Além disso, é possível instalar os utilitários `dig` no Mac e no Windows, tornando-os universais.
PS: Já que você chegou até aqui, seria uma pena não apresentar a você a biblioteca de Sysadmin da etechpt.com, um centro de soluções para todos os seus problemas como administrador de sistemas.