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.