Header Ads

Como usar o comando dig no Linux

Fatmawati Achmad Zaenuri / Shutterstock

O comando dig do Linux permite consultar servidores DNS e executar pesquisas de DNS. Você também pode encontrar o domínio ao qual um endereço IP retorna. Mostraremos como!

Como o comando dig funciona

As pessoas usam o comando dig do Linux para consultar servidores DNS (Sistema de Nomes de Domínio). dig é um acrônimo para Domain Information Groper. Com o dig, você pode consultar os servidores DNS para obter informações sobre vários registros DNS, incluindo endereços de host, trocas de correio, servidores de nomes e informações relacionadas. O objetivo era ser uma ferramenta para diagnosticar problemas de DNS. No entanto, você pode usá-lo para bisbilhotar e aprender mais sobre o DNS, que é um dos sistemas centrais que mantém o tráfego de roteamento da Internet.

A Internet usa endereços de protocolo da Internet (IP) para identificar “ locais ” na web, mas as pessoas usam nomes de domínio. Quando você digita um nome de domínio em um aplicativo, como um navegador da Web ou cliente SSH, algo precisa ser traduzido do nome do domínio para o endereço IP real. É aqui que entra o sistema de nomes de domínio.

Quando você usa um nome de domínio com qualquer programa conectado à Internet, o roteador local não pode resolvê-lo (a menos que seja armazenado em cache a partir de uma solicitação anterior). Portanto, seu roteador consulta o servidor DNS do seu provedor de serviços de Internet (ISP) ou qualquer outro que você configurou para usar no sistema. Estes são chamados servidores precursores de DNS.

Se o servidor DNS recebeu recentemente a mesma solicitação de outra pessoa no mesmo computador, a resposta pode estar no cache. Se for esse o caso, ele simplesmente envia as mesmas informações de volta ao seu programa.

Se o servidor precursor do DNS não conseguir localizar o domínio em seu cache, ele entrará em contato com um servidor de nomes raiz do DNS. Um servidor raiz não armazena as informações necessárias para resolver nomes de domínio em endereços IP, mas mantém listas de servidores que podem ajudar com sua solicitação.

O servidor raiz examina o domínio de nível superior ao qual seu nome de domínio pertence, como . COM, . ORG, . CO. UK e assim por diante. Em seguida, envia uma lista dos servidores de domínio de nível superior que manipulam esses tipos de domínios de volta ao servidor precursor do DNS. O servidor precursor do DNS pode fazer sua solicitação mais uma vez para um servidor de domínio de nível superior.

O servidor de domínio de nível superior envia os detalhes do servidor de nomes autoritativo (onde os detalhes do domínio estão armazenados) de volta ao servidor precursor do DNS. O servidor DNS então consulta o servidor de nomes autoritativo que hospeda a zona do domínio que você inseriu originalmente em seu programa. O servidor de nomes autoritário envia o endereço IP de volta ao servidor DNS, que, por sua vez, envia de volta para você.

Instalando o dig

O

dig já estava instalado em nossos computadores Ubuntu 18.04 e Fedora 30. No entanto, tivemos que instalá-lo no computador Manjaro 18.04 com o seguinte comando:

 sudo pacman -Sy bind-tools 

Introdução ao dig

Em nosso primeiro exemplo, retornaremos os endereços IP associados a um nome de domínio. Muitas vezes, vários endereços IP são associados a um único nome de domínio. Isso geralmente acontece se o balanceamento de carga for usado, por exemplo.

Usamos a opção de consulta curta +, como mostrado abaixo, o que nos dá uma resposta concisa:

 cavar howtogeek. com + curto 

Todos os endereços IP associados ao domínio howtogeek. com estão listados para nós. No outro extremo do espectro, se não usarmos a opção + short query, a saída será bastante detalhada.

Então, digitamos o seguinte para canalizá-lo menos:

 cavar howtogeek. com | menos 

A saída é exibida em menos, como mostrado abaixo.

Aqui está a lista completa:

; < < > > DiG 9.11.3-1ubuntu1.11-Ubuntu < < > > howtogeek. com ;; opções globais: + cmd ;; Resposta obtida: ;; - > > HEADER < < - opcode: QUERY, status: NOERROR, id: 12017 ;; sinalizadores: qr rd ra; CONSULTA: 1, RESPOSTA: 4, AUTORIDADE: 0, ADICIONAL: 1 ;; OPT PSEUDOSECTION:; EDNS: versão: 0, sinalizadores :; udp: 65494 ;; SEÇÃO DA PERGUNTA:; howtogeek. com. EM UM ;; SEÇÃO DE RESPOSTA: howtogeek. com. 3551 EM A 151.101.194.217 howtogeek. com. 3551 EM A 151.101.130.217 howtogeek. com. 3551 EM A 151.101.66.217 howtogeek. com. 3551 IN A 151.101.2.217 ;; Tempo de consulta: 0 mseg ;; SERVIDOR: 127.0.0.53 # 53 (127.0.0.53) ;; QUANDO: Dom 22 de março 07:44:37 EDT 2020 ;; TAMANHO MSG rcvd: 106 

Vamos dissecar essa peça por peça.

Cabeçalho

Primeiro, vamos dar uma olhada no que temos no cabeçalho:

; < < > > DiG 9.11.3-1ubuntu1.11-Ubuntu < < > > howtogeek. com ;; opções globais: + cmd ;; Resposta obtida: ;; - > > HEADER < < - opcode: QUERY, status: NOERROR, id: 12017 ;; sinalizadores: qr rd ra; CONSULTA: 1, RESPOSTA: 4, AUTORIDADE: 0, ADICIONAL: 1 

Agora, aqui está o que tudo isso significa:

  • Primeira linha: a versão do dig e o domínio que foi consultado.
  • Opções globais: Como veremos, você pode usar o dig para consultar vários domínios simultaneamente. Esta linha mostra as opções que foram aplicadas a todas as consultas de domínio. No nosso exemplo simples, era apenas a opção padrão + cmd (comando).
  • Opcode: Query: este é o tipo de operação solicitada que, nesse caso, era uma consulta. Esse valor também pode ser uma pergunta para uma consulta inversa ou status se você estiver apenas testando o estado do sistema DNS.
  • Status: Noerror: não houve erros e a solicitação foi resolvida corretamente.
  • ID: 12017: Esse ID aleatório vincula a solicitação e a resposta.
  • Sinalizadores: qr rd ra: Representam consulta, recursão desejada e recursão disponível. A recursão é uma forma de pesquisa de DNS (a outra é iterativa). Você também pode ver AA, que significa Resposta autoritativa, significando que um Servidor de nome autoritativo forneceu a resposta.
  • Consulta: 1: o número de consultas nesta sessão, que era uma.
  • Resposta: 4: O número de respostas nesta resposta, que é quatro.
  • Autoridade: 0: O número de respostas que vieram de um Servidor de Nomes Autorizado, que era zero neste caso. A resposta foi retornada do cache de um servidor precursor de DNS. Não haverá seção autorizada na resposta.
  • Adicional: 1: Há uma informação adicional. (Estranhamente, nada é listado, a menos que esse valor seja dois ou superior.)

Opção de pré-seleção

Em seguida, vemos o seguinte na opção Pseudosection:

 ;; OPT PSEUDOSECTION:; EDNS: versão: 0, sinalizadores :; PDU: 65494 

Vamos decompor isso:

  • EDNS: versão 0: a versão do sistema de extensão para DNS que está sendo usada. O EDNS transmite dados e sinalizadores estendidos estendendo o tamanho dos pacotes UDP (User Datagram Protocol). Isso é indicado por um sinalizador de tamanho variável.
  • sinalizadores: nenhum sinalizador está em uso.
  • udp: 4096: O tamanho do pacote UDP.

Seção de perguntas

Na seção Pergunta, vemos o seguinte:

 ;; SEÇÃO DA PERGUNTA:; howtogeek. com. EM A 

Aqui está o que isso significa:

  • howtogeek. com: o nome de domínio que estamos consultando.
  • IN: estamos fazendo uma consulta de classe da Internet.
  • A: A menos que se especificarmos de outra forma, o dig solicitará um registro A (endereço) do servidor DNS.

Seção de respostas

A seção Resposta contém as seguintes quatro respostas que recebemos do servidor DNS:

 howtogeek. com. 3551 EM A 151.101.194.217 howtogeek. com. 3551 EM A 151.101.130.217 howtogeek. com. 3551 EM A 151.101.66.217 howtogeek. com. 3551 IN A 151.101.2.217 

Aqui está o que essas respostas significam:

  • 3551: este é o Time to Live (TTL), um número inteiro assinado de 32 bits que mantém o intervalo de tempo em que um registro pode ser armazenado em cache. Quando expiram, os dados devem ser usados ​​em resposta a uma solicitação até que sejam atualizados pelo servidor DNS.
  • IN: fizemos uma consulta de classe da Internet.
  • R: Pedimos um registro A do servidor DNS.

Seção de estatísticas

Estatísticas é a seção final e contém as seguintes informações:

 ;; Tempo de consulta: 0 mseg ;; SERVIDOR: 127.0.0.53 # 53 (127.0.0.53) ;; QUANDO: Dom 22 de março 07:44:37 EDT 2020 ;; TAMANHO MSG rcvd: 106 

Aqui está o que temos:

  • Tempo da consulta: 0 ms: 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 DNS servidor que respondeu. Nesse caso, está apontando para o resolvedor de stub de cache local. Isso encaminha solicitações de DNS para os servidores DNS upstream configurados. No computador de teste de Manajro, o endereço listado aqui era 8.8.8.8 # 53, que é o serviço DNS público do Google.
  • QUANDO: 22 de março de domingo 07:44:37 EDT 2020: quando o foi feita uma solicitação.
  • TAMANHO MSG rcvd: 106: O tamanho da mensagem recebida do servidor DNS.

Sendo seletivo

Você não precisa se contentar com os dois extremos de lábios cerrados e tagarela. O comando dig permite incluir ou excluir seletivamente seções dos resultados.

As seguintes opções de consulta removerão essa seção dos resultados:

  • + nocomments: não mostra linhas de comentário.
  • + noauthority: não mostra a seção de autoridade.
  • + noadditional: não 8217; não mostra a seção adicional.
  • + nostats: Não mostra a seção de estatísticas.
  • + noanswer: Não mostra a seção de resposta.
  • + noall: Não mostre nada!

A opção de consulta + noall geralmente é combinada com uma das opções acima para incluir uma seção nos resultados. Portanto, em vez de digitar uma longa sequência de opções de consulta para desativar várias seções, você pode usar + noall para desativá-las.

Você pode usar as seguintes opções de consulta inclusiva para ativar aquelas que deseja ver novamente:

  • + comentários: Mostrar linhas de comentário.
  • + autoridade: Mostra a seção de autoridade.
  • + adicional: Mostra a seção adicional.
  • + estatísticas: mostra a seção de estatísticas.
  • + resposta: mostra a seção de respostas.
  • + tudo: mostra tudo.

Digitamos o seguinte para fazer uma solicitação e excluir as linhas de comentário:

 cave howtogeek. com + nocomments 

Se usarmos a opção de consulta + noall por conta própria, como mostrado abaixo, não obteremos nenhuma saída útil:

 cavar howtogeek. com + noall 

Podemos adicionar seletivamente as seções que queremos ver. Para adicionar a seção de resposta, digite o seguinte:

 cave howtogeek. com + noall + answer 

Se digitarmos o seguinte para ativar + estatísticas, também veremos a seção de estatísticas:

 cavar howtogeek. com + tudo + resposta + estatísticas 

A combinação + noall + answer é usada com frequência. Você pode adicionar outras seções à linha de comando, conforme necessário. Se você quiser evitar digitar + noall + answer na linha de comando sempre que usar o dig, poderá colocá-los em um arquivo de configuração chamado “ . digrc. ” Está localizado no seu diretório pessoal.

Digitamos o seguinte para criar um com eco:

 eco "+ tudo + resposta" > $ HOME / . digrc 

Podemos então digitar o seguinte para verificar seu conteúdo:

 cat . digrc 

Essas duas opções agora serão aplicadas a todos os usos futuros do dig, como mostrado abaixo:

 dig ubuntu. org 

 dig linux. org 

 dig github. com 

Este arquivo de configuração do dig será usado nos demais exemplos deste artigo.

registros DNS

As informações retornadas às suas solicitações de escavação são obtidas de diferentes tipos de registros mantidos no servidor DNS. A menos que solicitemos algo diferente, dig consulta o registro A (endereço). A seguir estão os tipos de registros comumente usados ​​com o dig:

  • Um registro: vincula o domínio a um endereço IP versão 4.
  • Registro MX: a troca de emails registra emails diretos enviados aos domínios para o servidor de email 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 baseadas em texto sobre o domínio. Geralmente, eles podem ser usados ​​para suprimir emails falsificados ou falsificados.
  • Registro SOA: os registros de início de autoridade podem conter muitas informações sobre o domínio. Aqui, você pode encontrar o servidor de nome principal, a parte responsável, um carimbo de data / hora para alterações, a frequência de atualizações de zona e uma série de prazos para novas tentativas e abandono.
  • TTL: o tempo de vida é um configuração para cada registro DNS que especifica por quanto tempo um servidor precursor de DNS pode armazenar em cache cada consulta DNS. Quando esse tempo expirar, os dados deverão ser atualizados para solicitações subsequentes.
  • QUALQUER: Isso indica ao dig para retornar todos os tipos de registros DNS que puder.

A especificação do 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 mostrado abaixo:

 dig redhat. com A 

Para consultar os registros de troca de correio, usamos o seguinte sinalizador MX:

 dig yahoo. com MX 

O sinalizador do servidor de nomes retorna o seguinte nome 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, digite o seguinte sinalizador SOA:

 dig manjaro. com SOA 

O sinalizador TTL nos mostrará o tempo de vida dos dados no cache do servidor DNS. Se fizermos uma série de solicitações, vemos o tempo de vida reduzido a nada e, em seguida, voltamos ao seu valor inicial.

Digitamos o seguinte:

 dig usa. gov TTL 

Para ver os registros de texto, digitamos o sinalizador TX:

 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 para cavar como um parâmetro da linha de comando.

Com o servidor DNS padrão (veja abaixo), o dig faz referência ao resolvedor de stub de cache local em 127.0.0.53.

 dig usa. gov + estatísticas 

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 + estatísticas 

Usando dig com vários domínios

Podemos passar vários domínios para cavar na linha de comando, como mostrado abaixo:

 dig ubuntu. org fedora. org manjaro. com 

Se você verificar regularmente um conjunto de domínios, poderá armazená-los em um arquivo de texto e passá-lo para escavação. Todos os domínios no arquivo serão verificados por sua vez.

Nosso arquivo é chamado de “ domains. txt. ” Usaremos cat para mostrar seu conteúdo e depois passá-lo para cavar com a opção -f (arquivo). Digitamos o seguinte:

 cat domains. txt 

 dig -f domains. txt 

Pesquisas reversas de DNS

Se você possui um endereço IP e deseja saber para onde ele vai, tente uma pesquisa DNS reversa. Se ele resolver um servidor registrado com um servidor DNS, você poderá descobrir seu domínio.

Se você pode, depende da presença de um PTR (registro de ponteiro). As PTRs resolvem um endereço IP para um nome de domínio totalmente qualificado. No entanto, como esses itens não são obrigatórios, nem sempre estão presentes em um domínio.

Vamos ver se podemos descobrir onde o endereço IP 209.51.188.148 nos leva. Digitamos o seguinte, usando a opção -x (pesquisa inversa):

 dig -x 209.51.188.148 

Presto! O endereço IP é resolvido para gnu. org.

Como um PTR é um registro DNS, e sabemos que o dig pode solicitar registros DNS especificados, não poderíamos simplesmente pedir ao dig para recuperar o PTR para nós? Sim, podemos, mas é preciso um pouco mais de trabalho.

Temos que fornecer o endereço IP na ordem inversa e alinhar . in-addr. arpa no final, como mostrado abaixo:

 dig ptr 148.188.51.209. in-addr. arpa 

Obtemos o mesmo resultado; levou apenas um pouco mais de esforço.

Você pode cavar?

Todos 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 dig, você pode explorar os processos de conjuração em rede.

Via: How to Geek

Veja Também:

Nenhum comentário