Comando nslookup: uso e opzioni, interrogazione dei record e scelta del server DNS
Il comando nslookup è uno strumento di interrogazione che chiede a un server DNS un nome di dominio e restituisce i suoi indirizzi IP e i record DNS come MX, NS e TXT. Interrogando per tipo i record di example.com su un server AlmaLinux 9 e cambiando il server DNS interrogato, lo stesso dominio ha dato risultati diversi a seconda del server: la riga Non-authoritative answer all'inizio della risposta spariva oppure il risultato della query ANY cambiava.
L'output qui sotto è stato ottenuto con l'account root su un server AlmaLinux 9.8. L'indirizzo del server DNS impostato sul server è stato sostituito con il valore di esempio 192.0.2.53, e anche i numeri di versione dei pacchetti sono stati sostituiti con valori di esempio.
1️⃣ Come usare il comando nslookup
La forma di base è [nslookup -opzione nome server-DNS], e sia le opzioni sia il server DNS si possono omettere. Se si scrive solo un nome, nslookup chiede l'indirizzo di quel nome al server DNS impostato sul server.
nslookup example.comServer: 192.0.2.53
Address: 192.0.2.53#53
Non-authoritative answer:
Name: example.com
Address: 172.66.147.243
Name: example.com
Address: 104.20.23.154
Name: example.com
Address: 2606:4700:10::6814:179a
Name: example.com
Address: 2606:4700:10::ac42:93f3Le due righe Server e Address in alto indicano il server DNS che ha ricevuto la query, e il #53 finale è il numero di porta DNS. Se non si indica il tipo di record, nslookup interroga prima il record A (IPv4) e poi il record AAAA (IPv6), per questo dopo due indirizzi IPv4 sono seguiti due indirizzi IPv6.
Non-authoritative answer significa che ha risposto un server DNS che aveva il valore in cache, e non il server che gestisce direttamente i record di example.com. Per questo, subito dopo aver modificato un record, il valore può essere diverso da quello reale.
2️⃣ Opzioni di nslookup
Le opzioni si scrivono con un trattino davanti al nome.
-type è la stessa opzione di -query o della forma breve -q. Chiedendo a 8.8.8.8 con -q=mx è uscita la stessa riga del server di posta ottenuta con -type=mx.
nslookup -q=mx google.com 8.8.8.8Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
google.com mail exchanger = 10 smtp.google.com.
Authoritative answers can be found from:-timeout e -retry stabiliscono quanto attendere un server DNS che non risponde. 192.0.2.1 è un indirizzo riservato alla documentazione, quindi lì non risponde nessun server.
nslookup -timeout=2 -retry=1 example.com 192.0.2.1;; connection timed out; no servers could be reachedCon -timeout=2 -retry=1, nslookup ha stampato la riga [connection timed out] dopo 2 secondi e si è chiuso. Con -retry=2 ci sono voluti 4 secondi, e senza opzioni 15 secondi. Per evitare che uno script resti fermo a lungo su un server che non risponde, abbassate entrambi i valori.
Con -debug le sezioni di domanda e risposta del pacchetto di risposta vengono stampate così come sono.
nslookup -debug example.com 8.8.8.8Server: 8.8.8.8
Address: 8.8.8.8#53
------------
QUESTIONS:
example.com, type = A, class = IN
ANSWERS:
-> example.com
internet address = 104.20.23.154
ttl = 300
-> example.com
internet address = 172.66.147.243
ttl = 300
AUTHORITY RECORDS:
ADDITIONAL RECORDS:
------------
Non-authoritative answer:
Name: example.com
Address: 104.20.23.154
Name: example.com
Address: 172.66.147.243
------------
QUESTIONS:
example.com, type = AAAA, class = IN
ANSWERS:
-> example.com
has AAAA address 2606:4700:10::6814:179a
ttl = 300
-> example.com
has AAAA address 2606:4700:10::ac42:93f3
ttl = 300
AUTHORITY RECORDS:
ADDITIONAL RECORDS:
------------
Name: example.com
Address: 2606:4700:10::6814:179a
Name: example.com
Address: 2606:4700:10::ac42:93f3Ogni record ha ricevuto un ttl = 300 che l'output normale non mostra. Indica che il server DNS che ha ricevuto questa risposta può tenere il record in cache fino a 300 secondi.
-norecurse chiede al server DNS di rispondere solo con ciò che ha già, senza cercare attraverso altri server. Chiedendo allo stesso 8.8.8.8 senza l'opzione sono usciti quattro indirizzi, ma con -norecurse la query è terminata con [SERVFAIL].
nslookup -norecurse example.com 8.8.8.8Server: 8.8.8.8
Address: 8.8.8.8#53
** server can't find example.com: SERVFAIL| Opzione | Copia | Descrizione |
|---|---|---|
| -type= | Imposta il tipo di record da interrogare; se omesso, A e poi AAAA | |
| -q= | Stessa opzione di -type, imposta il tipo di record da interrogare | |
| -timeout= | Tempo di attesa della risposta alla prima query (secondi) | |
| -retry= | Numero di invii della query quando non c'è risposta | |
| -debug | Stampa domanda e risposta del pacchetto, fino al TTL | |
| -norecurse | Chiede solo i valori di quel server, senza passare per altri server |
| Opzione | Copia | Descrizione |
|---|---|---|
| -query= | Stessa opzione di -type, imposta il tipo di record da interrogare | |
| -port= | Imposta la porta da interrogare, predefinita 53 | |
| -version | Stampa la versione ed esce |
3️⃣ Interrogare i record con nslookup (MX, NS, TXT, SOA)
Scrivendo un tipo di record dopo -type=, si interroga solo quel record. Il valore si può scrivere in maiuscolo o in minuscolo.
| Valore di -type= | Informazioni contenute |
|---|---|
| A · AAAA | Indirizzo IPv4, indirizzo IPv6 |
| MX | Server che riceve la posta e la sua priorità |
| NS | Name server che gestiscono i record del dominio |
| TXT | Valori di testo come SPF |
| SOA | Name server primario della zona, e-mail dell'amministratore, numero di serie, intervalli di aggiornamento |
| CNAME | Alias che rimanda a un altro nome |
| PTR | Nome host associato a un indirizzo IP (inverso) |
| ANY | Chiede tutti i record di quel nome in una volta |
I server di posta si controllano con il record MX.
nslookup -type=mx google.comServer: 192.0.2.53
Address: 192.0.2.53#53
Non-authoritative answer:
google.com mail exchanger = 10 smtp.google.com.
Authoritative answers can be found from:Il 10 dopo mail exchanger è la priorità. Se ci sono più server di posta, chi invia prova la consegna partendo dal server con il numero più basso. La stessa query su example.com ha restituito [mail exchanger = 0 .], e un MX con un solo punto significa che questo dominio non riceve posta.
[Authoritative answers can be found from:] alla fine della query MX è una riga di intestazione sotto la quale compaiono le informazioni sui name server autorevoli incluse nella risposta. Nelle query MX, NS e TXT di questo articolo la risposta non conteneva queste informazioni, quindi sotto l'intestazione non c'era nulla.
Il record NS contiene i name server che gestiscono direttamente i record del dominio.
nslookup -type=ns example.comServer: 192.0.2.53
Address: 192.0.2.53#53
Non-authoritative answer:
example.com nameserver = hera.ns.cloudflare.com.
example.com nameserver = elliott.ns.cloudflare.com.
Authoritative answers can be found from:example.com aveva due name server. Questi due server sono i name server autorevoli di example.com.
Un record TXT può contenere valori di testo senza un formato fisso.
nslookup -type=txt example.comServer: 192.0.2.53
Address: 192.0.2.53#53
Non-authoritative answer:
example.com text = "_k2n1y4vw3qtb4skdx9e7dxt97qrmmq9"
example.com text = "v=spf1 -all"
Authoritative answers can be found from:v=spf1 -all è un valore SPF che indica che nessun server può inviare posta con questo nome di dominio. Se un dominio ha più record TXT, compaiono così, uno per riga.
Il record SOA contiene le informazioni di base della zona.
nslookup -type=soa example.comServer: 192.0.2.53
Address: 192.0.2.53#53
Non-authoritative answer:
example.com
origin = elliott.ns.cloudflare.com
mail addr = dns.cloudflare.com
serial = 2418004112
refresh = 10000
retry = 2400
expire = 604800
minimum = 1800
Authoritative answers can be found from:origin è il name server primario, e mail addr è l'indirizzo e-mail dell'amministratore con la @ scritta come punto. serial è un numero di serie che aumenta a ogni modifica dei record, e refresh, retry ed expire sono valori di tempo (in secondi) che i name server secondari usano per allineare i record con il server primario. minimum è il tempo per cui la risposta su un record inesistente resta in cache.
Gli alias si controllano con il record CNAME. Interrogando www.github.com è uscita una riga che indica che è un alias di github.com.
nslookup -type=cname www.github.comServer: 192.0.2.53
Address: 192.0.2.53#53
www.github.com canonical name = github.com.-type=any chiede tutti i record di quel nome in una volta. Chiedendo al server DNS impostato sul server, i record A, AAAA, MX e NS sono usciti insieme.
nslookup -type=any example.comServer: 192.0.2.53
Address: 192.0.2.53#53
Non-authoritative answer:
Name: example.com
Address: 172.66.147.243
Name: example.com
Address: 104.20.23.154
Name: example.com
Address: 2606:4700:10::6814:179a
Name: example.com
Address: 2606:4700:10::ac42:93f3
example.com mail exchanger = 0 .
example.com nameserver = hera.ns.cloudflare.com.
example.com nameserver = elliott.ns.cloudflare.com.
Authoritative answers can be found from:Inviando la stessa query a 8.8.8.8 sono tornate solo una riga [hinfo = “RFC8482”] e una riga di firma.
nslookup -type=any example.com 8.8.8.8Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
example.com hinfo = "RFC8482" ""
example.com rdata_46 = HINFO 13 2 3600 20261029212708 20261027192708 34505 example.com. 2YBHcD7GmqHiW6E7e8Lx3z/gPoCsLbYw/Uegjy801hQ+4fYp5U7wKqc2 NXOONd8WS0xjgzfW5Dn0akDqdjltOw==
Authoritative answers can be found from:RFC 8482 è il documento che consente di rispondere a una query ANY con una risposta breve invece che con tutti i record. Per questo i record che servono si interrogano indicando un tipo alla volta.
4️⃣ Indicare il server DNS in nslookup
Se si scrive un server DNS dopo il nome, nslookup interroga quel server invece del server DNS impostato sul server.
nslookup example.com 8.8.8.8Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: example.com
Address: 104.20.23.154
Name: example.com
Address: 172.66.147.243
Name: example.com
Address: 2606:4700:10::6814:179a
Name: example.com
Address: 2606:4700:10::ac42:93f3La riga Server è diventata 8.8.8.8, e i quattro indirizzi erano gli stessi della risposta del server DNS impostato sul server. Dopo aver cambiato i name server, questa forma serve a verificare se i nuovi valori sono arrivati a ogni server DNS pubblico.
Se si indica come server DNS uno dei name server usciti dalla query NS, si interroga direttamente il server autorevole.
nslookup example.com elliott.ns.cloudflare.comServer: elliott.ns.cloudflare.com
Address: 2606:4700:58::a29f:2ce4#53
Name: example.com
Address: 104.20.23.154
Name: example.com
Address: 172.66.147.243
Name: example.com
Address: 2606:4700:10::6814:179a
Name: example.com
Address: 2606:4700:10::ac42:93f3Questa volta la riga Non-authoritative answer è sparita. Il valore arriva direttamente dal server che gestisce i record, quindi è il valore attuale, senza passare per una cache. In Address, subito sotto la riga Server, è comparso l'indirizzo IPv6 di questo name server.
Interrogando un nome che non esiste compare [NXDOMAIN]. .invalid è un dominio di primo livello riservato per non essere mai usato davvero, quindi la risposta è stata che il nome non esiste.
nslookup example.invalidServer: 192.0.2.53
Address: 192.0.2.53#53
** server can't find example.invalid: NXDOMAINInvece no-such-host.example.com è terminato con [No answer] anziché NXDOMAIN. Significa che il record interrogato non era nella risposta, un risultato diverso da NXDOMAIN, in cui il nome stesso non esiste.
nslookup no-such-host.example.comServer: 192.0.2.53
Address: 192.0.2.53#53
Non-authoritative answer:
*** Can't find no-such-host.example.com: No answer5️⃣ Ricerca inversa con nslookup
Se al posto di un nome si scrive un indirizzo IP, nslookup interroga il record PTR e trova il nome host associato a quell'indirizzo.
nslookup 8.8.8.88.8.8.8.in-addr.arpa name = dns.google.
Authoritative answers can be found from:8.8.8.8.in-addr.arpa è il nome che si ottiene scrivendo l'indirizzo IPv4 al contrario e aggiungendo in-addr.arpa. Il valore del record PTR di questo nome, dns.google., è il nome host di 8.8.8.8.
Nella ricerca inversa non sono comparse le due righe Server in alto. Interrogando lo stesso indirizzo con nslookup 9.18 su un server Debian 12 la forma era la stessa.
6️⃣ Modalità interattiva di nslookup
Avviando nslookup senza argomenti si entra nella modalità interattiva con il prompt >. Quando si interrogano più nomi e tipi di record di seguito, non serve riscrivere ogni volta l'intero comando.
nslookup> server 8.8.8.8
Default server: 8.8.8.8
Address: 8.8.8.8#53
> set type=mx
> google.com
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
google.com mail exchanger = 10 smtp.google.com.
Authoritative answers can be found from:
> set type=txt
> example.com
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
example.com text = "_k2n1y4vw3qtb4skdx9e7dxt97qrmmq9"
example.com text = "v=spf1 -all"
Authoritative answers can be found from:
> exitCambiate il server DNS da interrogare con server e impostate il tipo di record con set type=: da lì in poi basta scrivere un nome per interrogarlo con quelle impostazioni. Con exit si torna alla shell.
set all stampa tutte le impostazioni attuali.
nslookup> set type=txt
> set all
Default server: 192.0.2.53
Address: 192.0.2.53#53
Set options:
novc nodebug nod2
search recurse
timeout = 0 retry = 3 port = 53 ndots = 1
querytype = txt class = IN
srchlist = example.internal
> exitquerytype era passato a txt, il valore impostato prima. retry = 3 e port = 53 sono valori predefiniti non modificati.
7️⃣ Installare nslookup su Linux e confrontarlo con dig e host
Se eseguendo nslookup su Linux compare [command not found], installate il pacchetto degli strumenti BIND. Sul server AlmaLinux nslookup proveniva dal pacchetto bind-utils.
rpm -qf /usr/bin/nslookupbind-utils-9.16.20-30.el9_8.2.x86_64Sul server Debian 12 era il pacchetto bind9-dnsutils. Il vecchio nome dnsutils esisteva ancora come pacchetto di transizione che installa bind9-dnsutils.
dpkg -S /usr/bin/nslookupbind9-dnsutils: /usr/bin/nslookupSui sistemi della famiglia RHEL, installate il pacchetto bind-utils con il comando qui sotto.
dnf install bind-utilsSui sistemi della famiglia Debian, installate il pacchetto bind9-dnsutils.
apt install bind9-dnsutilsNello stesso pacchetto ci sono anche dig e host. Tutti e tre i comandi interrogano il DNS, ma il loro output ha una forma diversa.
| Comando | Output | Quando usarlo |
|---|---|---|
| nslookup | Riga Server + risposta, modalità interattiva | Interrogare più nomi e record di seguito |
| dig | Tutte le sezioni del pacchetto di risposta; con +short solo i valori | Estrarre solo i valori in uno script |
| host | Una frase per record | Controllare A, AAAA e MX in una volta |
host example.comexample.com has address 172.66.147.243
example.com has address 104.20.23.154
example.com has IPv6 address 2606:4700:10::6814:179a
example.com has IPv6 address 2606:4700:10::ac42:93f3
example.com mail is handled by 0 .Anche senza opzioni, host ha interrogato in una volta i record A, AAAA e MX e li ha stampati ciascuno come una frase di una riga. Con +short, dig lascia solo gli indirizzi IP.
dig +short example.com104.20.23.154
172.66.147.243Per estrarre solo i valori in uno script, dig +short è più facile da gestire, e per controllare più nomi di seguito è più comoda la modalità interattiva di nslookup.
🔲 Simulatore del comando nslookup
Nel simulatore qui sotto potete digitare nslookup cambiando il tipo di record e il server DNS.
🔢 FAQ & contenuti consigliati
Ricerca DNS
Comando host di Linux | comando di interrogazione DNS
Articolo che spiega come trovare con il comando host l'indirizzo IP di un nome host e, al contrario, il nome host di un indirizzo IP.
Ricerca web
Siti per controllare i record DNS e misurare le prestazioni dei nameserver
Articolo su come controllare i valori dei record DNS da più regioni con whatsmydns e confrontare la velocità di risposta dei server DNS con DNSPerf.
ℹ️ Informativa sull'affiliazione
I contenuti di questo sito includono link di affiliazione. Se un visitatore acquista un prodotto o un servizio tramite uno di questi link, il sito riceve una commissione dal venditore. In questo processo l'importo pagato dall'acquirente (durante le promozioni l'importo scende↓) non aumenta. Prezzi, sconti e disponibilità indicati si riferiscono al momento della stesura e possono differire da quelli reali: prima di acquistare verifica sempre presso il venditore. I prodotti vengono scelti e valutati secondo criteri propri, e le commissioni non influiscono sull'ordine di presentazione né sul contenuto delle valutazioni.