Comando nslookup in Linux: cercare record DNS e leggere le risposte

nslookup interroga un server DNS (Domain Name System) per cercare indirizzi associati a un nome, record di posta o nomi inversi associati a un IP. Puoi eseguire una singola ricerca oppure lavorare in modalità interattiva; per analizzare in dettaglio stato, record e tempi di validità delle risposte, il comando dig offre una vista più esplicita.

Con un nome come argomento ottieni una risposta e torni alla shell; senza argomenti entri nella sessione interattiva. Il server predefinito dipende dalla configurazione locale, mentre un argomento finale permette di scegliere un altro server per la ricerca. La dicitura Non-authoritative answer non indica da sola un errore.

Sintassi e preparazione

nslookup [option] [name|IP] [DNS server]

Questa riga descrive la sintassi: parentesi quadre, barra verticale e parole segnaposto non vanno copiate letteralmente nella shell. Sostituisci il nome o l'IP e, se serve, aggiungi il server dopo di esso, senza il prefisso @ usato da dig. Indicare un server nella ricerca non cambia la configurazione DNS del sistema.

Le implementazioni possono differire: questa guida fa riferimento a nslookup di BIND 9. Controlla la versione installata con nslookup -version e le opzioni con man nslookup. Se il programma manca, individua il pacchetto che lo fornisce nella tua distribuzione. I nomi dei pacchetti e le opzioni di altri programmi omonimi non sono necessariamente identici.

Cercare indirizzi, record MX e nomi inversi

Indirizzi di un dominio. Esegui una ricerca usando il server configurato:

nslookup example.com

Leggi il nome cercato e gli indirizzi nella risposta, distinguendoli dall'indirizzo del server DNS. Il comportamento predefinito documentato per BIND 9 corrente cerca A e poi AAAA; se vuoi confrontare risultati dello stesso tipo, specificalo esplicitamente, per esempio con -type=A oppure -type=AAAA. Ottenere un indirizzo non dimostra che il servizio web sia raggiungibile.

Record di posta. Per cercare i record MX (Mail Exchange) del dominio:

nslookup -type=MX example.com

La risposta può riportare le destinazioni di posta e la relativa preferenza. Non dare per scontato che un dominio abbia record MX né che un record trovato garantisca la consegna di un messaggio: stai consultando DNS, non provando il servizio di posta.

Ricerca inversa. Un indirizzo come argomento permette di cercare un record PTR (Pointer), che associa un nome all'indirizzo:

nslookup 192.0.2.1

192.0.2.1 è un indirizzo riservato alla documentazione: qui illustra la forma del comando e non promette una risposta pubblica. Per una verifica reale usa un IP pertinente alla tua rete. L'assenza di un PTR non prova che l'indirizzo sia inutilizzato o che la macchina sia spenta; una risposta inversa non garantisce nemmeno che la ricerca diretta del nome restituisca lo stesso IP.

Distinguere il server interrogato dalla risposta

Riprendiamo una ricerca semplice:

nslookup example.com

Il seguente schema ridotto mostra soltanto la struttura dei campi. Gli indirizzi sono illustrativi e non rappresentano il risultato attuale del comando:

Server:  192.0.2.53
Name:    example.com
Address: 192.0.2.10

Server identifica il server usato per la consultazione; l'indirizzo sotto Name è invece un dato della risposta. Un output completo può includere anche un indirizzo o una porta accanto al server: interpreta i campi nel loro contesto, senza scambiare il resolver per l'host cercato.

Non-authoritative answer segnala una risposta non autorevole per il nome richiesto. Può provenire da un resolver ricorsivo e dalla sua cache; la dicitura non dimostra né un guasto né che il dato sia sicuramente vecchio. Per valutare autorità e stato della risposta considera anche i flag DNS, descritti nella specifica dell'intestazione DNS.

Server, cache, vista DNS e momento della richiesta possono produrre valori diversi per lo stesso nome. Il TTL (Time to Live) indica per quanto tempo un record può essere conservato in cache, non il tempo impiegato dalla rete a rispondere. Se serve confrontare tipo di record, TTL e stato, usa dig conservando l'output completo.

Opzioni e modalità interattiva

Forma Uso
-type=tipo Seleziona il tipo richiesto, per esempio A, AAAA, MX o TXT.
-query=tipo Forma abbreviata per scegliere il tipo di interrogazione in BIND.
-timeout=secondi Imposta l'intervallo iniziale di attesa della risposta.
Server finale Sceglie il server per la ricerca al posto di quello predefinito.
Nessun argomento Avvia la modalità interattiva.

tipo e secondi sono segnaposto da sostituire. Le opzioni vanno prima del nome. Il timeout iniziale non è una garanzia sulla durata totale del processo: tentativi, tipi cercati e nomi di ricerca possono comportare più operazioni.

Per una sessione interattiva esegui nslookup senza argomenti. Al suo prompt puoi digitare un nome, usare set type=MX per le ricerche successive e poi interrogare il dominio. Con set all controlli le impostazioni della sessione; con server seguito dal server desiderato cambi il server della sessione. Sono comandi del prompt di nslookup, non comandi da eseguire direttamente nella shell.

Per tornare alla ricerca di indirizzi IPv4 imposta set type=A; per ripartire con le impostazioni iniziali puoi terminare la sessione e riaprire il programma. Le modifiche a tipo e server della sessione non riscrivono la configurazione DNS del sistema.

Controllare risposte mancanti o diverse dall'applicazione

  1. Verifica il nome o l'IP e il tipo di record. Per indicare senza ambiguità un nome DNS assoluto puoi usare il punto finale, come in example.com.; i nomi non assoluti possono essere influenzati dalla lista di ricerca.
  2. Identifica il server interrogato e distingui una risposta negativa da un timeout, da un rifiuto o da un errore del server. Una risposta senza il record desiderato non significa automaticamente che l'intera rete non funzioni.
  3. Confronta richieste dello stesso tipo allo stesso server prima di attribuire una differenza alla cache. Se stai verificando un DNS interno, conserva il contesto della rete o della VPN da cui interroghi.
  4. Se il browser o un altro programma ottiene un risultato differente, considera il suo percorso di risoluzione: cache proprie, proxy e gestione di /etc/hosts possono differire da una consultazione DNS diretta.

Non modificare DNS o svuotare tutte le cache soltanto per far coincidere due risposte. Prima identifica quale server e quale nome dovrebbe usare il client interessato. nslookup aiuta a isolare la consultazione DNS, ma non riproduce ogni meccanismo di risoluzione di ogni applicazione.

Domande frequenti

Come si termina la modalità interattiva di nslookup?

Digita exit al prompt del programma. In un terminale Linux puoi anche inviare la fine dell'input con Ctrl+D, normalmente su una riga vuota; usa exit se il terminale gestisce diversamente quel tasto. Terminare la sessione ti riporta alla shell.

Documentazione di riferimento

Il manuale ufficiale di nslookup in BIND 9 descrive argomenti, comandi interattivi e opzioni. La RFC 5737 sugli indirizzi IPv4 di documentazione chiarisce l'uso degli indirizzi negli esempi.