Vamos agora examinar este comando em detalhes, parte por parte.
Resultado do comando: DiG 9.11.3-1ubuntu1.11-Ubuntu> wdzwdz.com ;; opções globais: +cmd ;; Resposta obtida: ;; -->> CABEÇALHO
A seguir, a explicação do significado de cada um desses elementos:
Primeira linha: Indica a versão do `dig` utilizada e o domínio que foi consultado.
Opções globais: O `dig` pode ser usado para consultar vários domínios ao mesmo tempo. Esta linha mostra as opções aplicadas a todas as consultas. Neste exemplo, apenas a opção padrão `+cmd` (comando) foi usada.
Opcode: Consulta: Define o tipo de operação solicitada. Neste caso, trata-se de uma consulta. Outros valores possíveis são `iquery` para consulta inversa ou `status`, para testar o estado do sistema DNS.
Status: Noerror: Indica que a solicitação foi resolvida sem erros.
ID: 12017: É um ID aleatório que associa a solicitação à resposta correspondente.
Sinalizadores: qr rd ra: Representam a consulta, a recursão desejada e a recursão disponível. A recursão é um método de pesquisa de DNS, enquanto a outra opção é iterativa. `AA` significa “Resposta Autoritativa”, indicando que a resposta foi fornecida por um Servidor de Nomes Autorizado.
Consulta: 1: O número de consultas nesta sessão (neste caso, uma).
Resposta: 4: O número de respostas recebidas (quatro neste caso).
Autoridade: 0: O número de respostas de um Servidor de Nomes Autorizado. Neste caso, a resposta veio do cache de um servidor DNS intermediário, então não há seção oficial na resposta.
Adicional: 1: Indica que há informações adicionais presentes. Curiosamente, essas informações só são exibidas quando este valor é dois ou superior.
Opt Pseudosection
A seguir, encontramos a seguinte informação na seção Opt Pseudosection:
;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 65494
Vamos analisar cada componente:
EDNS: versão 0: Refere-se à versão do Mecanismo de Extensão para DNS utilizado. O EDNS permite a transmissão de dados e sinalizadores estendidos, ampliando o tamanho dos pacotes do Protocolo de Datagrama do Usuário (UDP). Isso é indicado por um sinalizador de tamanho variável.
sinalizadores: Nenhum sinalizador está sendo utilizado neste caso.
udp: 4096: Indica o tamanho do pacote UDP.
Seção de Perguntas
Na seção de Perguntas, vemos o seguinte:
;; QUESTION SECTION: ;wdzwdz.com. IN A
E o seu significado:
wdzwdz.com: O nome de domínio que está sendo consultado.
IN: Indica que estamos realizando uma consulta da classe Internet.
A: Por padrão, o `dig` solicita um registro A (endereço) do servidor DNS, a menos que especificado de outra forma.
Seção de Respostas
A seção de Respostas contém as quatro respostas obtidas do servidor DNS:
wdzwdz.com. 3551 IN A 151.101.194.217 wdzwdz.com. 3551 IN A 151.101.130.217 wdzwdz.com. 3551 IN A 151.101.66.217 wdzwdz.com. 3551 IN A 151.101.2.217
O significado de cada parte:
3551: É o Time to Live (TTL), um valor inteiro de 32 bits que representa o tempo, em segundos, durante o qual um registro pode ser armazenado em cache. Quando este tempo expira, os dados devem ser atualizados pelo servidor DNS antes de serem usados em respostas a novas solicitações.
IN: Indica uma consulta da classe Internet.
A: Indica que foi solicitado um registro A do servidor DNS.
Seção de Estatísticas
A seção final, Estatísticas, contém as seguintes informações:
;; Query time: 0 msec ;; SERVER: 127.0.0.53#53(127.0.0.53) ;; WHEN: Sun Mar 22 07:44:37 EDT 2020 ;; MSG SIZE rcvd: 106
Os detalhes:
Tempo de consulta: 0 mseg: O tempo necessário para obter a resposta.
SERVIDOR: 127.0.0.53 # 53 (127.0.0.53): O endereço IP e o número da porta do servidor DNS que respondeu. Neste caso, está apontando para o resolvedor de stub de cache local. Este resolvedor encaminha as solicitações de DNS para os servidores DNS configurados para upstream. No computador de teste, o endereço listado era 8.8.8.8 # 53, que é o serviço DNS público do Google.
QUANDO: Dom 22 de março 07:44:37 EDT 2020: O momento em que a solicitação foi realizada.
MSG SIZE rcvd: 106: O tamanho da mensagem recebida do servidor DNS.
Personalizando a Saída
Você não precisa aceitar os dois extremos: mostrar tudo ou não mostrar nada. O comando `dig` permite incluir ou excluir seções específicas dos resultados.
As seguintes opções de consulta removem seções dos resultados:
+nocomments
: Não exibe as linhas de comentários. +noauthority
: Omite a seção de autoridade. +noadditional
: Não mostra a seção adicional. +nostats
: Exclui a seção de estatísticas. +noanswer
: Não apresenta a seção de respostas. +noall
: Não exibe nada!
A opção de consulta +noall
é frequentemente usada em conjunto com outras opções para incluir seções específicas nos resultados. Em vez de usar uma sequência longa de opções para desativar várias seções, você pode usar +noall
para desativá-las todas.
As seguintes opções de consulta inclusivas podem ser usadas para reativar as seções desejadas:
+comments
: Exibe as linhas de comentários. +authority
: Mostra a seção de autoridade. +additional
: Apresenta a seção adicional. +stats
: Exibe a seção de estatísticas. +answer
: Mostra a seção de respostas. +all
: Exibe todas as seções.
O exemplo abaixo mostra como fazer uma solicitação e excluir as linhas de comentário:
dig wdzwdz.com +nocomments
Se usarmos a opção de consulta +noall
sozinha, conforme mostrado abaixo, não obteremos nenhum resultado útil:
dig wdzwdz.com +noall
Podemos adicionar seletivamente as seções desejadas. Para adicionar a seção de respostas, digitamos:
dig wdzwdz.com +noall +answer
Para ativar a seção de estatísticas, digitamos o seguinte:
dig wdzwdz.com +noall +answer +stats
A combinação +noall +answer
é bastante utilizada. Você pode adicionar outras seções à linha de comando conforme necessário. Para evitar digitar +noall +answer
sempre que utilizar o `dig`, é possível colocar essas opções em um arquivo de configuração chamado `.digrc`, localizado em seu diretório inicial.
Para criar o arquivo com o comando `echo`, digitamos:
echo "+noall +answer" > $HOME/.digrc
Podemos verificar seu conteúdo com:
cat .digrc
Essas duas opções serão aplicadas a todas as futuras utilizações do `dig`, conforme mostrado nos exemplos abaixo:
dig ubuntu.org
dig linux.org
dig github.com
Este arquivo de configuração `dig` será utilizado nos exemplos restantes deste artigo.
Tipos de Registros DNS
As informações retornadas pelas suas consultas `dig` são provenientes de diferentes tipos de registros mantidos no servidor DNS. Por padrão, o `dig` consulta o registro A (endereço). Seguem os tipos de registros mais usados com o comando `dig`:
Registro A: Associa um domínio a um endereço IP versão 4.
Registro MX: Os registros de troca de mensagens direcionam os e-mails enviados aos domínios para o servidor de correio correto.
Registro NS: Os registros do servidor de nomes delegam um domínio (ou subdomínio) a um conjunto de servidores DNS.
Registro TXT: Os registros de texto armazenam informações textuais sobre o domínio. Normalmente são usados para autenticar e-mails, evitando falsificações.
Registro SOA: Os registros de início de autoridade contêm informações detalhadas sobre o domínio, como o servidor de nomes primário, a parte responsável, um carimbo de data/hora para alterações, a frequência de atualizações de zona e limites de tempo para novas tentativas e desistência.
TTL: O tempo de vida é uma configuração que especifica por quanto tempo um servidor DNS intermediário pode armazenar em cache uma consulta DNS específica. Após esse tempo, os dados devem ser atualizados antes de serem usados em novas solicitações.
ANY: Informa ao `dig` para retornar todos os tipos de registro DNS disponíveis.
Especificar o tipo de registro A não altera a ação padrão, que é consultar o registro de endereço e obter o endereço IP, conforme o exemplo abaixo:
dig redhat.com A
Para consultar os registros de troca de correio, usamos o sinalizador MX:
dig yahoo.com MX
O sinalizador do servidor de nomes retorna os nomes dos servidores de nomes raiz associados ao domínio de nível superior:
dig fedora.com NS
Para consultar o registro de início de autoridade, digitamos o sinalizador SOA:
dig manjaro.com SOA
O sinalizador TTL nos mostra o tempo de vida dos dados no cache do servidor DNS. Ao fazer uma série de solicitações, o tempo de vida diminui até zero e depois volta ao seu valor inicial.
Digitamos o seguinte para testar:
dig usa.gov TTL
Para ver os registros de texto, digitamos o sinalizador TXT:
dig usa.gov TXT
Especificando o Servidor DNS
Se você quiser usar um servidor DNS específico para sua solicitação, use o sinal de arroba (@) para passá-lo como um parâmetro de linha de comando para o `dig`.
Com o servidor DNS padrão (listado abaixo), o `dig` utiliza o resolvedor de stub de cache local em 127.0.0.53.
dig usa.gov +stats
Agora, digitamos o seguinte para usar o servidor DNS público do Google em 8.8.8.8:
dig @8.8.8.8 usa.gov +stats
Usando o `dig` com Múltiplos Domínios
Podemos passar vários domínios para o `dig` na linha de comando, conforme o exemplo:
dig ubuntu.org fedora.org manjaro.com
Se você verifica um grupo de domínios regularmente, você pode armazená-los em um arquivo de texto e passá-lo para o `dig`. Todos os domínios no arquivo serão verificados um após o outro.
Nosso arquivo se chama “domains.txt”. Vamos usar o comando `cat` para mostrar seu conteúdo e depois passá-lo para o `dig` com a opção `-f` (arquivo). Digitamos o seguinte:
cat domains.txt
dig -f domains.txt
Pesquisas Reversas de DNS
Se você tiver um endereço IP e quiser saber o domínio associado, tente uma pesquisa DNS reversa. Se o endereço for resolvido para um servidor registrado com um servidor DNS, você poderá descobrir seu domínio.
A possibilidade de realizar essa pesquisa depende da presença de um PTR (registro de ponteiro). Os registros PTR resolvem um endereço IP para um nome de domínio totalmente qualificado. No entanto, como eles não são obrigatórios, nem sempre estão presentes em um domínio.
Vamos ver se conseguimos descobrir o domínio associado ao endereço IP 209.51.188.148. Usaremos a opção `-x` (pesquisa reversa) digitando:
dig -x 209.51.188.148
O endereço IP é resolvido para gnu.org.
Já que um PTR é um tipo de registro DNS, e sabemos que o `dig` pode solicitar registros DNS específicos, não poderíamos simplesmente pedir ao `dig` para retornar o PTR? Sim, podemos, mas envolve um pouco mais de trabalho.
Precisamos fornecer o endereço IP na ordem inversa e adicionar `.in-addr.arpa` no final, conforme mostrado abaixo:
dig ptr 148.188.51.209.in-addr.arpa
Obtemos o mesmo resultado, mas exigiu um pouco mais de esforço.
Você Consegue Dominar o `dig`?
Todos nós usamos a Internet diariamente, e mentes curiosas sempre se perguntam como a mágica acontece quando digitamos o nome de um site em um navegador. Com o comando `dig`, você pode explorar os processos de conjuração em rede.