Come usare il comando dig in Linux

Contenuti

Una finestra terminale stilizzata su un sistema Linux.

El Linux dig Il comando consente di interrogare i server DNS ed eseguire ricerche DNS. Puoi anche trovare il dominio a cui conduce un indirizzo IP. Ti mostreremo come!

Come funziona il comando dig

Le persone usano Linux dig comando per interrogare i server Domain Name System (DNS). dig è un acronimo di Informazioni sul dominio Groper. Insieme a dig, puoi interrogare i server DNS per informazioni su vari record DNS, inclusi gli indirizzi degli host, scambi di posta, server dei nomi e informazioni correlate. Doveva essere uno strumento per diagnosticare i problemi DNS. Nonostante questo, puoi usarlo per curiosare e saperne di più sul DNS, che è uno dei sistemi centrali che mantengono il traffico di routing Internet.

Internet utilizza indirizzi di protocollo Internet (IP) per identificare “Luoghi” nel web, ma le persone usano i nomi di dominio. Quando digiti un nome di dominio in un'applicazione, come un browser web o un client SSH, qualcosa deve essere tradotto dal nome di dominio all'indirizzo IP effettivo. È qui che entra in gioco il sistema dei nomi di dominio..

Quando utilizzi un nome di dominio con qualsiasi programma connesso a Internet, il tuo router locale non può risolverlo (a meno che non venga memorizzato nella cache da una richiesta precedente). Perché, il tuo router consulta il server DNS del tuo provider di servizi Internet (ISP) o chiunque altro per cui hai configurato il tuo sistema. Questi sono chiamati server precursori DNS..

Se il server DNS ha ricevuto di recente la stessa richiesta da qualcun altro sullo stesso computer, la soluzione potrebbe essere in suo cache. Se è il caso, invia le stesse informazioni al tuo programma.

Se il server DNS precursore non riesce a individuare il dominio nella sua cache, contatta un DNS. server dei nomi radice. Un server principale non conterrà le informazioni necessarie per risolvere i nomi di dominio in indirizzi IP, ma conterrà elenchi di server che possono contribuire alla tua richiesta.

Il server root guarda il dominio di primo livello a cui appartiene il tuo nome di dominio, come .COM, .ORG, .CO.UK, eccetera. Quindi invia un elenco dei server di dominio di primo livello che gestiscono quei tipi di domini al server precursore DNS.. Il server precursore DNS può effettuare la tua richiesta ancora una volta, a un server di dominio di primo livello.

Il server di dominio di primo livello invia i dettagli del server dei nomi autorevole (dove sono archiviati i dettagli del dominio) al server precursore DNS. Dopo, il server DNS interroga il server dei nomi autorevole che ospita la zona del dominio che hai originariamente inserito nel tuo programma. Il server dei nomi autorevole invia l'indirizzo IP al server DNS, Quello, allo stesso tempo, te lo manda.

impianto di scavo

dig era già installato sui nostri computer Ubuntu 18.04 e Fedora 30. Nonostante questo, abbiamo dovuto installarlo sul computer Manjaro 18.04 con il seguente comando:

sudo pacman -Sy bind-tools

Introduzione allo scavo

Nel nostro primo esempio, restituiremo gli indirizzi IP associati a un nome di dominio. Spesso, più indirizzi IP sono associati a un singolo nome di dominio. Questo accade spesso se si utilizza il bilanciamento del carico, come esempio.

Noi usiamo il +short opzione di query, come mostrato di seguito, che ci dà una risposta concisa:

voi systempeaker.com + short

Tutti gli indirizzi IP associati al dominio systempeaker.com sono elencati per noi. All'altra estremità dello spettro, e no utilizzare il +short opzione di query, l'output è abbastanza dettagliato.

Quindi, scriviamo quanto segue per canalizzarlo less:

voi systempeaker.com | meno

L'uscita è mostrata in less, Come mostrato di seguito.

Ecco la lista completa:

; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> systempeaker.com
;; opzioni globali: +cmd
;; Ho una risposta:
;; ->>INTESTAZIONE<<- codice operativo: QUERY, stato: NESSUN ERRORE, ID: 12017
;; bandiere: qr rd ra; QUERY: 1, RISPONDERE: 4, AUTORITÀ: 0, AGGIUNTIVO: 1

;; OPT PSEUDOSEZIONE:
; EDNS: versione: 0, bandiere:; udp: 65494
;; SEZIONE DOMANDE:
;systempeaker.com. IN UN

;; SEZIONE RISPOSTA:
systempeaker.com. 3551 IN UN 151.101.194.217
systempeaker.com. 3551 IN UN 151.101.130.217
systempeaker.com. 3551 IN UN 151.101.66.217
systempeaker.com. 3551 IN UN 151.101.2.217

;; Tempo di interrogazione: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; QUANDO: Sole Mar 22 07:44:37 EDT 2020
;; MSG SIZE rcvd: 106

Esaminiamo quel pezzo per pezzo.

Intestazione

Primo, diamo un'occhiata a quello che abbiamo nell'intestazione:

; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> systempeaker.com
;; opzioni globali: +cmd
;; Ho una risposta:
;; ->>INTESTAZIONE<<- codice operativo: QUERY, stato: NESSUN ERRORE, ID: 12017
;; bandiere: qr rd ra; QUERY: 1, RISPONDERE: 4, AUTORITÀ: 0, AGGIUNTIVO: 1

Ora, questo è tutto ciò che significa:

  • Prima linea: La versione di dig e il dominio che è stato consultato.
  • Opzioni globali: Come vedremo, Puoi usare dig per interrogare più domini contemporaneamente. Questa riga mostra le alternative che sono state applicate a tutte le query di dominio. Nel nostro semplice esempio, era solo l'impostazione predefinita +cmd (comando) opzione.
  • Codice operazione: domanda: Questo è il tipo di operazione che è stata richiesta, in questa circostanza, Era un query. Questo valore può anche essere iquery per una query inversa, oh status se stai solo testando lo stato del sistema DNS.
  • Stato: Nessun errore: Non ci sono stati errori e la richiesta è stata risolta con successo.
  • ID: 12017: Questo ID casuale unisce la richiesta e la soluzione.
  • Banderas: qr rd ra: Questi rappresentano query, recursion desired, e recursion available. La ricorsione è una forma di ricerca DNS (l'altro è iterativo). Puoi anche vedere AA, Cosa significa Risposta Autorizzata?, il che significa che un server dei nomi autorizzato ha fornito la soluzione.
  • domanda: 1: Il numero di query in questa sessione, cos'era un?.
  • Risposta: 4: Il numero di risposte in questa risposta, cosa fa quattro?.
  • Autorità: 0: Il numero di risposte che provengono da un server dei nomi autorevole, che era zero in questa circostanza. La soluzione è stata restituita dalla cache di un server precursore DNS. Non ci sarà alcuna sezione autorizzata nella soluzione.
  • Aggiuntivo: 1: C'è un'ulteriore informazione. (curiosamente, nulla è incluso a meno che questo valore non sia due o più).

Decanta pseudosezione

Prossimo, vediamo quanto segue nella pseudosezione Opt:

;; OPT PSEUDOSEZIONE:
; EDNS: versione: 0, bandiere:; udp: 65494

Analizziamolo:

  • EDNS: versione 0: La versione di Sistema di estensione DNS che sta usando. EDNS trasmette dati diffusi e flag espandendo la dimensione del Protocollo del datagramma utente (UDP) Pacchetti. Questo è indicato da un flag ridimensionabile.
  • banderas: Nessuna bandiera in uso.
  • udp: 4096: Dimensione del pacchetto UDP.

Sezione domande

Nella sezione Domande, vediamo quanto segue:

;; SEZIONE DOMANDE:
;systempeaker.com. IN UN

Questo è ciò che significa:

  • systempeaker.com: Il nome a dominio che stiamo consultando.
  • SU: Stiamo eseguendo una query di classe su Internet.
  • UN: A meno che non specifichiamo diversamente, dig richiederà un record A (indirizzo) del server DNS.

Sezione di risposta

La sezione Response contiene le seguenti quattro risposte che riceviamo dal server DNS:

systempeaker.com. 3551 IN UN 151.101.194.217
systempeaker.com. 3551 IN UN 151.101.130.217
systempeaker.com. 3551 IN UN 151.101.66.217
systempeaker.com. 3551 IN UN 151.101.2.217

Ecco cosa significano queste risposte:

  • 3551: Questo è il tempo della vita (TTL), un intero di 32 bit con segno contenenti l'intervallo di tempo durante il quale un record può essere memorizzato nella cache. Quando scade, i dati devono essere utilizzati in risposta a una richiesta fino a quando il server DNS non li aggiorna.
  • SU: Eseguiamo una query di classe Internet.
  • UN: Richiediamo un record A dal server DNS.

Sezione Statistica

Le statistiche è la sezione finale e contiene le informazioni successive:

;; Tempo di interrogazione: 0 msec 
;; SERVER: 127.0.0.53#53(127.0.0.53) 
;; QUANDO: Sole Mar 22 07:44:37 EDT 2020 
;; MSG SIZE rcvd: 106

Questo è quello che abbiamo:

  • Tempo di consultazione: 0 mseg: Il tempo impiegato per ottenere la soluzione.
  • SERVER: 127.0.0.53 # 53 (127.0.0.53): L'indirizzo IP e il numero di porta del server DNS che ha risposto. Per questo caso, punta al risolutore di stub con memorizzazione nella cache locale. Questo inoltra le richieste DNS ai server DNS upstream che sono configurati. Sul computer di prova di Manajro, l'indirizzo che appare qui era 8.8.8.8 # 53, Che cos'è Servizio DNS pubblico di Google.
  • QUANDO: Giudizio 22 di marzo 07:44:37 EDT 2020: Quando è stata fatta la richiesta.
  • Rcvd DIMENSIONI MESSAGGIO: 106: La dimensione del messaggio ricevuto dal server DNS.

Sii selettivo

Non dovresti accontentarti delle due estremità delle labbra serrate e loquaci. il dig Il comando consente di includere o escludere in modo selettivo sezioni dei risultati.

Le seguenti opzioni di query rimuoveranno quella sezione dai risultati:

  • + Non ci sono commenti: Non mostrare righe di commento.
  • + senza autorità: Non mostrare la sezione autorità.
  • + nessun supplemento: Non mostrare la sezione aggiuntiva.
  • + Nessuna statistica: Non mostrare la sezione delle statistiche.
  • + nessuna risposta: Non mostrare la sezione di risposta.
  • + notodos: Non mostrare niente!

il +noall L'opzione di query in generale è combinata con una delle precedenti per includere una sezione nei risultati. Quindi, invece di scrivere una lunga stringa di alternative di query per disabilitare più sezioni, Puoi usare +noall per spegnerli tutti.

Dopo, puoi utilizzare le seguenti opzioni di query inclusive per riattivare quelle che vuoi vedere:

  • + Commenti: Mostra righe di commento.
  • + autorità: Mostra sezione autorità.
  • + aggiuntivo: Mostra sezione aggiuntiva.
  • + statistiche: Mostra la sezione delle statistiche.
  • + Rispondere: Mostra la sezione delle risposte.
  • + Tutto quanto: Mostra tutto.

Scriviamo quanto segue per fare una richiesta ed escludere le righe di commento:

you systempeaker.com + nocomments

Se usiamo il +noall opzione di query da sola, come mostrato di seguito, non otterremo risultati utili:

dig systempeaker.com + noall

Possiamo aggiungere selettivamente le sezioni che vogliamo vedere. Per aggiungere la sezione di risposta, scriviamo quanto segue:

dig systempeaker.com +noall +risposta

Se scriviamo quanto segue per accendere +stats, vedremo anche la sezione statistiche:

dig systempeaker.com +noall +risposta +stats

il +noall +answer La combinazione è spesso usata. Puoi aggiungere altre sezioni alla riga di comando secondo necessità. Se vuoi evitare di scrivere +noall +answer sulla riga di comando ogni volta che usi dig, puoi metterli in un file di configurazione chiamato “.digrc”. Si trova nella tua directory personale.

Scriviamo quanto segue per crearne uno con echo:

eco "+noall +risposta" > $HOME/.digrc

Quindi possiamo scrivere quanto segue per verificarne il contenuto:

gatto .digrc

Queste due opzioni si applicheranno ora a tutti gli usi futuri di dig, Come mostrato di seguito:

scavare ubuntu.org
dig linux.org
dig github.com

Questo dig Il file di configurazione verrà utilizzato per gli esempi rimanenti in questo post.

Record DNS

Informazioni restituite al tuo dig le richieste vengono estratte da diversi tipi di record archiviati sul server DNS. A meno che non chiediamo qualcosa di diverso, dig controlla il record A (indirizzo). Di seguito sono riportati i tipi di record comunemente utilizzati con dig:

  • Un file: Associa il dominio a un indirizzo IP di versione 4.
  • record MX: Lo scambio di posta registra le email dirette inviate ai domini al server di posta corretto.
  • Registro NS: I registri dei server dei nomi delegano un dominio (o sottodominio) a un insieme di server DNS.
  • Registro TXT: I record di testo memorizzano informazioni basate su testo sul dominio. Generalmente, può essere utilizzato per sopprimere e-mail contraffatte o contraffatte.
  • Registrazione SOA: L'inizio dei record di autorità può contenere molte informazioni sul dominio. Qui, può trovare il server dei nomi principale, il responsabile, un timestamp per le modifiche, la frequenza degli aggiornamenti di zona e una serie di limiti di tempo per i nuovi tentativi e gli abbandoni.
  • TTL: Time to live è un'impostazione per ogni record DNS che specifica per quanto tempo un server DNS precursore può memorizzare nella cache ogni query DNS. Quando quel tempo scade, i dati devono essere aggiornati per successive richieste.
  • ALCUNI: Questo dice dig per restituire ogni tipo di record DNS possibile.

Specificare il tipo di record A non modifica l'azione predefinita, ovvero controllare il record dell'indirizzo e ottenere l'indirizzo IP, come mostrato di seguito:

scavare redhat.com A

Per controllare i registri di scambio di posta, usiamo il prossimo flag MX:

dig yahoo.com MX

Il flag nameserver restituisce il seguente nome dei root nameserver associati al dominio di primo livello:

si fedora.com NS

Per controllare l'inizio del record di autorità, scriviamo il prossimo flag SOA:

dig manjaro.com SOA

Il flag TTL ci mostrerà la durata dei dati nella cache del server DNS. Se facciamo una serie di richieste, vediamo che il tempo di vita si riduce a zero e poi torniamo al suo valore iniziale.

Scriviamo quanto segue:

dig utiliza.gov TTL

Per visualizzare i record di testo, scriviamo il flag TX:

dig utiliza.gov TXT

Specifica il server DNS

Se vuoi utilizzare un particolare server DNS per la tua richiesta, puoi usare il simbolo chiocciola (@) per passarlo a dig come parametro della riga di comando.

Con il server DNS predefinito (vedi sotto), dig si riferisce al risolutore stub della cache locale in 127.0.0.53.

dig utiliza.gov + stats

Ora, scriviamo quanto segue per utilizzare il server DNS pubblico di Google in 8.8.8.8:

dig @ 8.8.8.8 utiliza.gov + stats

Utilizzo di dig con più domini

Possiamo passare diversi domini a dig sulla riga di comando, come mostrato di seguito:

tu ubuntu.org fedora.org manjaro.com

Se controlli regolarmente un insieme di domini, puoi memorizzarli in un file di testo e passarlo a dig. Tutti i domini nel file verranno controllati successivamente.

Il nostro file è chiamato “domini.txt”. noi useremo cat per mostrarne il contenuto e poi passarlo a dig con il -f (file) opzione. Scriviamo quanto segue:

cat domini.txt
dig -f domini.txt

Ricerche DNS inverse

Se hai un indirizzo IP e vuoi sapere dove stai andando, puoi provare una ricerca DNS inversa. Se si risolve su un server registrato con un server DNS, è possibile che tu possa scoprire il tuo dominio.

Se puoi, dipende dalla presenza di un PTR (registro puntatore). I PTR risolvono un indirizzo IP in a nome di dominio completo. Nonostante questo, perché questi non sono necessari, non sono sempre presenti in un dominio.

Vediamo se riusciamo a capire dove ci porta l'indirizzo IP 209.51.188.148. Scriviamo quanto segue, usando il -x (ricerca inversa) opzione:

tu -x 209.51.188.148

Presto! L'indirizzo IP si risolve in gnu.org.

Perché un PTR è un record DNS e lo sappiamo dig può richiedere record DNS specifici, Non potremmo semplicemente chiedere? dig recupera il PTR per noi? sì, noi possiamo, ma ha bisogno di un po' più di lavoro.

Dobbiamo fornire l'indirizzo IP in ordine inverso e virare .in-addr.arpa alla fine, come mostrato di seguito:

dig ptr 148.188.51.209.in-addr.arpa

Otteniamo lo stesso risultato; ci è voluto solo un po' più di sforzo.

Si può scavare?

Tutti noi usiamo Internet ogni giorno, e le menti curiose si sono spesso chiesti come avviene la magia quando digitiamo il nome di un portale web in un browser. Insieme a dig, può esplorare i processi di evocazione della rete.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.