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 e Fedora, oppure dnsutils in distribuzioni come Debian e 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 dnsutilsRed Hat/CentOS/Fedora #
sudo yum install bind-utils # Per Red Hat/CentOS
sudo dnf install bind-utils # Per FedoraArch Linux (o Manjaro) #
sudo pacman -S bindDopo l’installazione, potrai verificare se dig è disponibile eseguendo il comando:
dig -vSe 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.comL’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.1In 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 MXI 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 NSI 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 CNAMEIl 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.1Le 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.comIn 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 +shortCon +short, l’output sarà ridotto all’essenziale, restituendo solo i record richiesti, come l’indirizzo IP del dominio.
Esempio di output:
192.0.2.1Esempio 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 +traceQuesto 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.