Dig sta per domain information groper.
Usando il comando dig puoi interrogare i server dei nomi DNS per le tue attività relative alla ricerca DNS. Questo articolo spiega 10 esempi su come utilizzare il comando dig.
1. Utilizzo del comando dig semplice (Capire l'output dig)
Quando si passa un nome di dominio al comando dig, per impostazione predefinita viene visualizzato il record A (l'indirizzo IP del sito richiesto) come mostrato di seguito.
In questo esempio, viene visualizzata la A record di redhat.com nella "SEZIONE RISPOSTA" dell'output del comando dig.
$ dig redhat.com ; <<>> DiG 9.7.3-RedHat-9.7.3-2.el6 <<>> redhat.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62863 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 3 ;; QUESTION SECTION: ;redhat.com. IN A ;; ANSWER SECTION: redhat.com. 37 IN A 209.132.183.81 ;; AUTHORITY SECTION: redhat.com. 73 IN NS ns4.redhat.com. redhat.com. 73 IN NS ns3.redhat.com. redhat.com. 73 IN NS ns2.redhat.com. redhat.com. 73 IN NS ns1.redhat.com. ;; ADDITIONAL SECTION: ns1.redhat.com. 73 IN A 209.132.186.218 ns2.redhat.com. 73 IN A 209.132.183.2 ns3.redhat.com. 73 IN A 209.132.176.100 ;; Query time: 13 msec ;; SERVER: 209.144.50.138#53(209.144.50.138) ;; WHEN: Thu Jan 12 10:09:49 2012 ;; MSG SIZE rcvd: 164
L'output del comando dig ha le seguenti sezioni:
- Intestazione:mostra il numero di versione del comando dig, le opzioni globali utilizzate dal comando dig e alcune informazioni di intestazione aggiuntive.
- SEZIONE DOMANDA:Visualizza la domanda posta al DNS. cioè questo è il tuo input. Poiché abbiamo detto "dig redhat.com" e il tipo predefinito utilizzato dal comando dig è un record, in questa sezione indica che abbiamo richiesto il record A del sito Web redhat.com
- SEZIONE RISPOSTA:mostra la risposta che riceve dal DNS. cioè questo è il tuo output. Viene visualizzato il record A di redhat.com
- SEZIONE AUTORITÀ:Visualizza il server dei nomi DNS che ha l'autorità per rispondere a questa query. Fondamentalmente questo mostra i server dei nomi disponibili di redhat.com
- SEZIONE AGGIUNTIVA:Visualizza l'indirizzo IP dei name server elencati nella SEZIONE AUTORITÀ.
- La sezione delle statistiche in basso mostra alcune statistiche sui comandi dig, incluso il tempo impiegato per eseguire questa query
2. Visualizza solo la SEZIONE RISPOSTA del comando Dig Output
Per la maggior parte, tutto ciò che devi guardare è la "SEZIONE RISPOSTA" del comando dig. Quindi, possiamo disattivare tutte le altre sezioni come mostrato di seguito.
- +nocomments – Disattiva le righe dei commenti
- +noauthority – Disattiva la sezione autorità
- +noadditional – Disattiva la sezione aggiuntiva
- +nostats – Disattiva la sezione delle statistiche
- +nessuna risposta – Disattiva la sezione delle risposte (ovviamente, non vorresti disattivare la sezione delle risposte)
Il seguente comando dig mostra solo la SEZIONE RISPOSTA.
$ dig redhat.com +nocomments +noquestion +noauthority +noadditional +nostats ; <<>> DiG 9.7.3-RedHat-9.7.3-2.el6 <<>> redhat.com +nocomments +noquestion +noauthority +noadditional +nostats ;; global options: +cmd redhat.com. 9 IN A 209.132.183.81
Invece di disabilitare tutte le sezioni che non vogliamo una per una, possiamo disabilitare tutte le sezioni usando +noall (questo disattiva anche la sezione delle risposte) e aggiungere la +risposta che mostrerà solo la sezione delle risposte.
Il comando precedente può anche essere scritto in forma breve come mostrato di seguito, che visualizza solo la SEZIONE RISPOSTA.
$ dig redhat.com +noall +answer ; <<>> DiG 9.7.3-RedHat-9.7.3-2.el6 <<>> redhat.com +noall +answer ;; global options: +cmd redhat.com. 60 IN A 209.132.183.81
3. Interroga i record MX utilizzando dig -t MX
Per interrogare i record MX, passa MX come argomento al comando dig come mostrato di seguito.
$ dig redhat.com MX +noall +answer ; <<>> DiG 9.7.3-RedHat-9.7.3-2.el6 <<>> redhat.com MX +noall +answer ;; global options: +cmd redhat.com. 513 IN MX 5 mx1.redhat.com. redhat.com. 513 IN MX 10 mx2.redhat.com.
Puoi anche utilizzare l'opzione -t per passare il tipo di query (ad esempio:MX) come mostrato di seguito.
$ dig -t MX redhat.com +noall +answer ; <<>> DiG 9.7.3-RedHat-9.7.3-2.el6 <<>> -t MX redhat.com +noall +answer ;; global options: +cmd redhat.com. 489 IN MX 10 mx2.redhat.com. redhat.com. 489 IN MX 5 mx1.redhat.com.
4. Interroga i record NS utilizzando dig -t NS
Per interrogare il record NS utilizzare il tipo NS come mostrato di seguito.
$ dig redhat.com NS +noall +answer ; <<>> DiG 9.7.3-RedHat-9.7.3-2.el6 <<>> redhat.com NS +noall +answer ;; global options: +cmd redhat.com. 558 IN NS ns2.redhat.com. redhat.com. 558 IN NS ns1.redhat.com. redhat.com. 558 IN NS ns3.redhat.com. redhat.com. 558 IN NS ns4.redhat.com.
Puoi anche usare l'opzione -t per passare il tipo di query (ad esempio:NS) come mostrato di seguito.
$ dig -t NS redhat.com +noall +answer ; <<>> DiG 9.7.3-RedHat-9.7.3-2.el6 <<>> -t NS redhat.com +noall +answer ;; global options: +cmd redhat.com. 543 IN NS ns4.redhat.com. redhat.com. 543 IN NS ns1.redhat.com. redhat.com. 543 IN NS ns3.redhat.com. redhat.com. 543 IN NS ns2.redhat.com.
5. Visualizza TUTTI i tipi di record DNS utilizzando dig -t ANY
Per visualizzare tutti i tipi di record (A, MX, NS, ecc.), utilizza QUALSIASI come tipo di record come mostrato di seguito.
$ dig redhat.com ANY +noall +answer ; <<>> DiG 9.7.3-RedHat-9.7.3-2.el6 <<>> redhat.com ANY +noall +answer ;; global options: +cmd redhat.com. 430 IN MX 5 mx1.redhat.com. redhat.com. 430 IN MX 10 mx2.redhat.com. redhat.com. 521 IN NS ns3.redhat.com. redhat.com. 521 IN NS ns1.redhat.com. redhat.com. 521 IN NS ns4.redhat.com. redhat.com. 521 IN NS ns2.redhat.com.
(o) Utilizzare -t QUALSIASI
$ dig -t ANY redhat.com +noall +answer ; <<>> DiG 9.7.3-RedHat-9.7.3-2.el6 <<>> -t ANY redhat.com +noall +answer ;; global options: +cmd redhat.com. 367 IN MX 10 mx2.redhat.com. redhat.com. 367 IN MX 5 mx1.redhat.com. redhat.com. 458 IN NS ns4.redhat.com. redhat.com. 458 IN NS ns1.redhat.com. redhat.com. 458 IN NS ns2.redhat.com. redhat.com. 458 IN NS ns3.redhat.com.
6. Visualizza output breve utilizzando dig +short
Per visualizzare solo l'indirizzo IP di un sito web (cioè il record A), usa l'opzione in forma abbreviata come mostrato di seguito.
$ dig redhat.com +short 209.132.183.81
Puoi anche specificare un tipo di record che desideri visualizzare con l'opzione +breve.
$ dig redhat.com ns +short ns2.redhat.com. ns3.redhat.com. ns1.redhat.com. ns4.redhat.com.
7. Ricerca inversa DNS utilizzando dig -x
Per eseguire una ricerca inversa DNS utilizzando l'indirizzo IP utilizzando dig -x come mostrato di seguito
Ad esempio, se hai solo un indirizzo IP esterno e desideri conoscere il sito Web a cui appartiene, procedi come segue.
$ dig -x 209.132.183.81 +short www.redhat.com.
Per visualizzare tutti i dettagli della ricerca inversa DNS, rimuovi l'opzione +breve.
$ dig -x 209.132.183.81 ; <<>> DiG 9.7.3-RedHat-9.7.3-2.el6 <<>> -x 209.132.183.81 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62435 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 3 ;; QUESTION SECTION: ;81.183.132.209.in-addr.arpa. IN PTR ;; ANSWER SECTION: 81.183.132.209.in-addr.arpa. 600 IN PTR www.redhat.com. ;; AUTHORITY SECTION: 183.132.209.in-addr.arpa. 248 IN NS ns2.redhat.com. 183.132.209.in-addr.arpa. 248 IN NS ns1.redhat.com. 183.132.209.in-addr.arpa. 248 IN NS ns3.redhat.com. 183.132.209.in-addr.arpa. 248 IN NS ns4.redhat.com. ;; ADDITIONAL SECTION: ns1.redhat.com. 363 IN A 209.132.186.218 ns2.redhat.com. 363 IN A 209.132.183.2 ns3.redhat.com. 363 IN A 209.132.176.100 ;; Query time: 35 msec ;; SERVER: 209.144.50.138#53(209.144.50.138) ;; WHEN: Thu Jan 12 10:15:00 2012 ;; MSG SIZE rcvd: 193
8. Usa un server DNS specifico usando dig @dnsserver
Per impostazione predefinita, dig usa i server DNS definiti nel tuo file /etc/resolv.conf.
Se desideri utilizzare un server DNS diverso per eseguire la query, specificalo nella riga di comando come @dnsserver.
L'esempio seguente utilizza ns1.redhat.com come server DNS per ottenere la risposta (invece di utilizzare i server DNS dal file /etc/resolv.conf).
$ dig @ns1.redhat.com redhat.com ; <<>> DiG 9.7.3-RedHat-9.7.3-2.el6 <<>> @ns1.redhat.com redhat.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20963 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 4 ;; WARNING: recursion requested but not available ;; QUESTION SECTION: ;redhat.com. IN A ;; ANSWER SECTION: redhat.com. 60 IN A 209.132.183.81 ;; AUTHORITY SECTION: redhat.com. 600 IN NS ns1.redhat.com. redhat.com. 600 IN NS ns4.redhat.com. redhat.com. 600 IN NS ns3.redhat.com. redhat.com. 600 IN NS ns2.redhat.com. ;; ADDITIONAL SECTION: ns1.redhat.com. 600 IN A 209.132.186.218 ns2.redhat.com. 600 IN A 209.132.183.2 ns3.redhat.com. 600 IN A 209.132.176.100 ns4.redhat.com. 600 IN A 209.132.188.218 ;; Query time: 160 msec ;; SERVER: 209.132.186.218#53(209.132.186.218) ;; WHEN: Thu Jan 12 10:22:11 2012 ;; MSG SIZE rcvd: 180
9. Query DNS in blocco utilizzando dig -f (e riga di comando)
Esegui query su più siti Web utilizzando un file di dati:
Puoi eseguire una query DNS in blocco basata sui dati di un file.
Innanzitutto, crea un file names.txt di esempio che contenga il sito Web su cui desideri eseguire la query.
$ vi names.txt redhat.com centos.org
Quindi, esegui dig -f come mostrato di seguito, che eseguirà una query DNS per i siti Web elencati nel file names.txt e visualizzerà l'output.
$ dig -f names.txt +noall +answer redhat.com. 60 IN A 209.132.183.81 centos.org. 60 IN A 72.232.194.162
Puoi anche combinare il tipo di record con l'opzione -f. L'esempio seguente mostra i record MX di più siti Web che si trovano nel file names.txt.
$ dig -f names.txt MX +noall +answer redhat.com. 600 IN MX 10 mx2.redhat.com. redhat.com. 600 IN MX 5 mx1.redhat.com. centos.org. 3600 IN MX 10 mail.centos.org.
Esegui query su più siti Web dalla riga di comando dig:
Puoi anche eseguire query su più siti Web dalla riga di comando dig come mostrato di seguito. L'esempio seguente interroga il record MX per redhat.com e il record NS per centos.org dalla riga di comando
$ dig redhat.com mx +noall +answer centos.org ns +noall +answer ; <<>> DiG 9.7.3-RedHat-9.7.3-2.el6 <<>> redhat.com mx +noall +answer centos.org ns +noall +answer ;; global options: +cmd redhat.com. 332 IN MX 10 mx2.redhat.com. redhat.com. 332 IN MX 5 mx1.redhat.com. centos.org. 3778 IN NS ns3.centos.org. centos.org. 3778 IN NS ns4.centos.org. centos.org. 3778 IN NS ns1.centos.org.
10. Usa il file $HOME/.digrc per memorizzare le opzioni di scavo predefinite
Se stai sempre cercando di visualizzare solo la sezione RISPOSTA dell'output dig, non devi continuare a digitare "+noall +answer" su ogni tuo comando dig. Invece, aggiungi le tue opzioni di scavo al file .digrc come mostrato di seguito.
$ cat $HOME/.digrc +noall +answer
Ora ogni volta che esegui il comando dig, utilizzerà sempre le opzioni +noall e +answer per impostazione predefinita. Ora la riga di comando dig è diventata molto semplice e facile da leggere senza dover digitare quelle opzioni ogni volta.
$ dig redhat.com redhat.com. 60 IN A 209.132.183.81 $ dig redhat.com MX redhat.com. 52 IN MX 5 mx1.redhat.com. redhat.com. 52 IN MX 10 mx2.redhat.com.