dig, per esempi
dig
(Domain Information Groper) è uno strumento di rete potente e versatile disponibile nei sistemi GNU/Linux, utilizzato per interrogare i server DNS (Domain Name System) e ottenere informazioni su nomi di dominio e indirizzi IP. È uno strumento essenziale per amministratori di sistema, sviluppatori e operatori di rete che devono risolvere problemi di DNS, monitorare la risoluzione dei nomi e ottenere informazioni dettagliate su domini e indirizzi IP.
Come installare dig
su diverse distribuzioni:
dig
non è sempre preinstallato su tutte le distribuzioni GNU/Linux. Dipende dal sistema operativo e dalle sue configurazioni di default.
Nella maggior parte delle distribuzioni GNU/Linux, dig
fa parte del pacchetto bind-utils (in distribuzioni come Red Hat, CentOS, Fedora) o dnsutils (in distribuzioni come Debian, Ubuntu). Questi pacchetti includono vari strumenti legati alla gestione e interrogazione del DNS, tra cui dig
.
- Debian/Ubuntu (e derivate come Linux Mint):
sudo apt update
sudo apt install dnsutils
- Red Hat/CentOS/Fedora:
sudo yum install bind-utils # Per Red Hat/CentOS
sudo dnf install bind-utils # Per Fedora
- Arch Linux (o Manjaro):
sudo pacman -S bind
Dopo l’installazione, potrai verificare se dig
è disponibile eseguendo il comando:
dig -v
Se il comando funziona, vedrai la versione installata di dig
.
L’output di dig
è solitamente più facile da leggere e da interpretare rispetto ad altri comandi simili, come nslookup
, e fornisce anche informazioni tecniche più dettagliate. Di seguito, vedremo una serie di esempi pratici che mostrano alcune delle funzionalità più comuni e utili di dig
.
Esempio 1: Query di base su un dominio
Il caso più semplice di utilizzo di dig
è eseguire una query per ottenere l’indirizzo IP associato a un nome di dominio.
dig esempio.com
Spiegazione
L’output di questo comando include varie sezioni, ma quella più rilevante per gli utenti è la Answer Section, che contiene l’indirizzo IP associato al dominio richiesto. Nel caso di “esempio.com”, il risultato sarà l’indirizzo IP del server web che ospita quel dominio.
Esempio di output rilevante:
;; ANSWER SECTION:
esempio.com. 300 IN A 192.0.2.1
In questo caso, 192.0.2.1
è l’indirizzo IP del dominio.
Esempio 2: Ottenere i record MX (Mail Exchange)
Per ottenere informazioni sui server di posta associati a un dominio, possiamo eseguire una query per i record MX, che specificano quali server sono responsabili della gestione della posta elettronica per il dominio.
dig esempio.com MX
Spiegazione
I record MX indicano quali server gestiscono la posta elettronica per un dominio, con una priorità associata. L’output mostrerà i vari server, insieme ai loro valori di priorità.
Esempio di output rilevante:
;; ANSWER SECTION:
esempio.com. 3600 IN MX 10 mail1.esempio.com.
esempio.com. 3600 IN MX 20 mail2.esempio.com.
Qui, mail1.esempio.com
è il server di posta preferito, mentre mail2.esempio.com
è il server di backup, con una priorità maggiore (20).
Esempio 3: Query per i record NS (Nameserver)
Per conoscere i nameserver che gestiscono un determinato dominio, si possono richiedere i record NS (Name Server).
dig esempio.com NS
Spiegazione
I record NS indicano i server DNS autoritativi per il dominio. Sono i server che contengono tutte le informazioni rilevanti per la risoluzione dei nomi del dominio stesso.
Esempio di output rilevante:
;; ANSWER SECTION:
esempio.com. 172800 IN NS ns1.esempio.com.
esempio.com. 172800 IN NS ns2.esempio.com.
In questo esempio, ns1.esempio.com
e ns2.esempio.com
sono i nameserver autoritativi per il dominio.
Esempio 4: Ottenere i record CNAME (Canonical Name)
A volte un dominio può essere un alias per un altro dominio. In questi casi, viene utilizzato un record CNAME (Canonical Name). Per scoprire se un dominio è un alias, si può eseguire una query specifica.
dig alias.esempio.com CNAME
Spiegazione
Il record CNAME mostra se un dominio è un alias per un altro dominio. Questo è utile quando un sito web ha più nomi che puntano tutti allo stesso contenuto o server.
Esempio di output rilevante:
;; ANSWER SECTION:
alias.esempio.com. 300 IN CNAME www.esempio.com.
In questo caso, alias.esempio.com
è un alias per www.esempio.com
.
Esempio 5: Effettuare una query inversa con un indirizzo IP (PTR Record)
Per ottenere il nome di dominio associato a un indirizzo IP, possiamo effettuare una query inversa, utilizzando un record PTR.
dig -x 192.0.2.1
Spiegazione
Le query inverse restituiscono il nome di dominio associato a un determinato indirizzo IP. L’indirizzo IP deve essere specificato in formato inverso, poiché le query PTR funzionano sulla zona DNS speciale chiamata “arpa”.
Esempio di output rilevante:
;; ANSWER SECTION:
1.2.0.192.in-addr.arpa. 86400 IN PTR esempio.com.
Qui, l’indirizzo IP 192.0.2.1
è associato al dominio esempio.com
.
Esempio 6: Specificare un server DNS alternativo
Per eseguire una query su un server DNS specifico diverso da quello configurato di default sul sistema, è possibile utilizzare l’opzione @
.
dig @8.8.8.8 esempio.com
Spiegazione
In questo caso, la query verrà inviata al server DNS di Google (8.8.8.8) anziché a quello predefinito. Questo può essere utile per verificare come diversi server DNS risolvono un determinato nome di dominio.
Esempio 7: Richiedere solo la risposta breve
Per ottenere solo l’informazione essenziale, senza tutte le sezioni extra dell’output di dig
, si può usare l’opzione +short
.
dig esempio.com +short
Spiegazione
Con +short
, l’output sarà ridotto all’essenziale, restituendo solo i record richiesti, come l’indirizzo IP del dominio.
Esempio di output:
192.0.2.1
Esempio 8: Traccia del percorso DNS (trace)
L’opzione +trace
permette di tracciare il percorso completo della query DNS, iniziando dai root server fino al server autoritativo che risolve il dominio richiesto.
dig esempio.com +trace
Spiegazione
Questo comando è particolarmente utile per diagnosticare problemi di risoluzione DNS, poiché mostra ogni passaggio del processo di risoluzione del dominio, fornendo una visione chiara dei server DNS coinvolti.