Comando nslookup: uso e opzioni, interrogazione dei record e scelta del server DNS

Ambiente di testFamiglia RHELAlmaLinux 9.8nslookup 9.16account rootDebian 12 account normale
Comandi di retenslookupPosizione/usr/bin/nslookup

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.com
Server:		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

Le 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.8
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:

-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 reached

Con -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.8
Server:		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:93f3

Ogni 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.8
Server:		8.8.8.8
Address:	8.8.8.8#53

** server can't find example.com: SERVFAIL
OpzioneCopiaDescrizione
-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
-debugStampa domanda e risposta del pacchetto, fino al TTL
-norecurseChiede solo i valori di quel server, senza passare per altri server
OpzioneCopiaDescrizione
-query=Stessa opzione di -type, imposta il tipo di record da interrogare
-port=Imposta la porta da interrogare, predefinita 53
-versionStampa 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 · AAAAIndirizzo IPv4, indirizzo IPv6
MXServer che riceve la posta e la sua priorità
NSName server che gestiscono i record del dominio
TXTValori di testo come SPF
SOAName server primario della zona, e-mail dell'amministratore, numero di serie, intervalli di aggiornamento
CNAMEAlias che rimanda a un altro nome
PTRNome host associato a un indirizzo IP (inverso)
ANYChiede tutti i record di quel nome in una volta

I server di posta si controllano con il record MX.

nslookup -type=mx google.com
Server:		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.com
Server:		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.com
Server:		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.com
Server:		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.com
Server:		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.com
Server:		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.8
Server:		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.8
Server:		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:93f3

La 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.com
Server:		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:93f3

Questa 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.invalid
Server:		192.0.2.53
Address:	192.0.2.53#53

** server can't find example.invalid: NXDOMAIN

Invece 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.com
Server:		192.0.2.53
Address:	192.0.2.53#53

Non-authoritative answer:
*** Can't find no-such-host.example.com: No answer

5️⃣ 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.8
8.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:
> exit

Cambiate 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
> exit

querytype 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/nslookup
bind-utils-9.16.20-30.el9_8.2.x86_64

Sul 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/nslookup
bind9-dnsutils: /usr/bin/nslookup

Sui sistemi della famiglia RHEL, installate il pacchetto bind-utils con il comando qui sotto.

dnf install bind-utils

Sui sistemi della famiglia Debian, installate il pacchetto bind9-dnsutils.

apt install bind9-dnsutils

Nello stesso pacchetto ci sono anche dig e host. Tutti e tre i comandi interrogano il DNS, ma il loro output ha una forma diversa.

ComandoOutputQuando usarlo
nslookupRiga Server + risposta, modalità interattivaInterrogare più nomi e record di seguito
digTutte le sezioni del pacchetto di risposta; con +short solo i valoriEstrarre solo i valori in uno script
hostUna frase per recordControllare A, AAAA e MX in una volta
host example.com
example.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.com
104.20.23.154
172.66.147.243

Per 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.

🌏 Se siete arrivati fin qui
Come vedere le stesse informazioni senza comandi
I name server e i record controllati con nslookup si possono consultare così come sono anche sul web. La ricerca di dominio Whois aggiunge i dati di registrazione e la data di scadenza del comando whois e mostra tutto in un'unica schermata.
Principianti Basta inserire il dominio, senza aprire un terminale o CMD. Registrar, data di registrazione, data di scadenza e stato compaiono in ordine, insieme ai giorni che mancano alla scadenza.
Esperti Confrontate fianco a fianco i name server registrati nel Whois con le risposte DNS reali e controllate i record A, AAAA, NS, MX e TXT, il TTL e perfino il testo grezzo del Whois.
Apri ricerca di dominio

🔲 Simulatore del comando nslookup

Nel simulatore qui sotto potete digitare nslookup cambiando il tipo di record e il server DNS.

Simulatore del comando nslookupnslookup 9.16
[root@server work]#
Funziona solo nel tuo browser; le risposte arrivano da un DNS virtuale con valori di query reali, e ↑↓ richiama i comandi digitati prima.

🔢 FAQ & contenuti consigliati

Anche in nslookup di Windows il primo argomento è il nome da interrogare e il secondo è il server DNS. Avviato senza argomenti, entra nella modalità interattiva con il prompt >. I testi dell'output su Windows possono essere diversi da quelli di Linux.

nslookup termina con il codice di uscita 1 se anche una sola query fallisce. Stampando il codice di uscita dopo la query su example.invalid che ha dato NXDOMAIN è uscito 1, e dopo la query su example.com era 0.

Con -type=aaaa si interroga solo il record AAAA. Eseguito su example.com, sono usciti solo i due indirizzi IPv6, senza indirizzi IPv4.

ℹ️ 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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Dimostra di essere umano: 3   +   10   =