Strumenti per verifiche sul DNS: nslookup, dig, host

Una volta editato il named.conf e eseguito il layout dei nostri file di zona è importante conoscere gli strumenti necessari per effettuare richieste al servizio e verificare che sia tutto a posto e ben configurato.

Vi sono diversi modi per controllare che il named funzioni correttamente, il più importante di tutti rimane verificare i messaggi che il server ci dà al momento del lancio.
Named quando eseguito si porta immediatamente in background restituendoci così il prompt dei comandi. Ad un utente poco esperto potrebbe capitare di pensare che tutto è corretto ma il più delle volte non è così. Per verificare che il servizio sia partito senza generare errori si consulta il file /var/log/messages. Qui named scrive alcuni messaggi ed è importante consultarli perchè spesso contiene i riferimenti del file che ha generato l'errore (named.conf o file di zona) addirittura specifica il numero di riga errato e cosa si sarebbe aspettato di trovare.
Per consultare questo file che spesso è molto grosso si possono utilizzare diversi strumenti unix quali cat, less o more.
Il più adatto in caso si sia appena lanciato il servizio è tail che permette di visualizzare solo le ultime righe del file in oggetto:
tail /var/log/messages

Una volta accertato che sia tutto a posto ci si può apprestare ad effettuare richieste al servizio per verificarne il funzionamento. Per questo si utilizzano vari strumenti simili tra loro:
nslookup - considerato obsoleto è stato uno dei primi tool per lavorare con il DNS.
host
dig

L'utility nslookup è molto complessa e accetta numerosi parametri. Per di più essendo considerato obsoleto non è, nella maggioranza dei casi dotato di un pagina di manuale. Per avere un "brief" completo bisogna entrare in modalità interattiva e digitare help o ?.
La sua sintassi è:
nslookup [opzioni] [host_da_indagare | -servente]
Nslookup è dotato di due modalità di funzionamento: interattiva e non.
Quando si lancia associato al parametro dell'host da indagare esegue la query e ne da il risultato allo standard output.
Se non si specifica alcun parametro nslookup entra in modalità interattiva caratterizzata da un prompt che inizia con un segno di maggiore ">" servendosi del nameserver presente in /etc/resolv.conf a meno che non si sia specificato con un meno iniziale il server che si desidera utilizzare in tal caso entra in modalità interattiva ma si serve del server specificato.

In modalità interattiva si possono specificare numerosi comandi.
help o ?: questo comando ci dà un sunto dei comandi possibili, una descrizione della loro funzione e dei loro parametri.
set: permette di settare molte opzioni di nslookup, una lista completa viene data dal comando help.
ls -[ahd] dominio [>|>>nome_del_file]: elenca le informazioni disponibili per il dominio ricercato. Da la possibilità di redirigere l'output in un file, permettendo anche di "appenderlo" in fondo ad un file già esistente.
Le sue opzioni:
-a: elenca gli alias per un determinato dominio.
-h: elenca le informazioni relative alla CPU e al sistema operativo.
-d: elenca l'intero contenuto di un trasferimento di zona.
view nome_del_file: Ordina ed elenca il contenuto del file in cui si sono salvati gli output usando more.

host è considerato insieme a dig il sostituto ufficiale di nslookup. Di norma viene utilizzato per risolvere i nomi in indirizzi numerici e viceversa.
Ha numerose opzioni e rimando al manuale in linea per un brief completo di tutte le sue funzioni.
La sua sintassi:
host [opzioni] host [server]
host [opzioni] zona [server]

Se lanciato senza parametri ci presenta una lista delle opzioni possibili e una breve spiegazione della loro funzione.
Vediamo alcune delle principali:
-c classe: Ricerca il record di risorsa specificato da classe. (IN, INTERNET, CS, CSNET, CH, CHAOS...). Il valore di default è IN.
-f nome_del_file: Invia l'output ad un file specificato oltre che allo standard output.
-l zona: Elenca tutte le macchine appatenenti alla zona specificata, in sostanza è come se eseguisse un trasferimento di zona.
-t tipo: Permette di specificare il tipo di query per i record di risorse. I tipi possono essere A, NS, PTR, ANY, o * (tutti).
-v e -vv: Rispettivamente verbose e very verbose. Il primo include tutti i campi del record delle risorse, compresi Time-to-Live e classe, oltre ai campi "additional information" e "authoritative nameservers". Il secondo aggiunge anche informazioni riguardo l'host richiesto (CPU, sistema operativo) ovviamente se presenti nel database DNS.
-u: Utilizza TCP anzichè UDP.

Per finire dig acronimo di Domain Information Groper è usato sia per la sua grande flessibilità che per i suoi output molto chiari. Supporta una funzione batch che permette di fargli leggere le richieste da un file. Se si desidera un prospetto completo del suo funzionamento consiglio di consultare la relativa pagina di manuale mentre se si va di fretta si può avere un riassunto delle principali funzioni con l'opzione -h.
La sua sintassi è
dig [@nameserver] [opzioni] [nome_risorsa] [tipo_di_richiesta] [ulteriori_opzioni]

Se non specificato, dig utilizza come server per le richieste quello presente in /etc/resolv.conf.
Di norma si utilizza nel modo seguente
dig @server nome tipo
Dove server sta per il server a cui inviare le query, nome sta per il nome della risorsa che si sta cercando, e tipo per il tipo di record che si sta cercando ( ANY, A, MX...). Se non si specifica il tipo dig restituirà informazioni sui record A.

Opzioni globali:
-b: permette di indicare l'indirizzo IP da cui far partire la query. Deve essere ovviamente un indirizzo valido di una delle interfacce della macchina.
-c: sovrascrive la classe di default (IN) per una query sulla classe, ad esempio HS per Hesiod e CH per CHAOSNET.
-f nome_del_file: questa opzione utilizza il batch mode permettendo di definire le richieste all'interno di un file. Le richieste vanno scritte una per linea con la sintassi che si utilizzerebbe dalla riga di comando.
-t: permette di specificare il tipo di record ricercato.
-x: va utilizzato se si desidera effettuare una query dall'indirizzo numerico della macchina senza doverlo specificare come appartenente al dominio in-addr.arpa (es. 1.1.162.198.in-addr.arpa). Questa opzione quando usata aggiunge in-addr.arpa e setta in automatico la query di tipo PTR per la classe IN.

Dig fornisce numerose opzioni che agiscono sulle query e sul modo in cui vengono effettuate.
Ogni opzione inizia con un simbolo + seguito dal'opzione che può attivare o disattivare la funzione. In caso di disattivazione si fa precedere all'opzione e dopo il + un "no".
+[no]tcp: attiva o disattiva l'uso del TCP nelle query. Di default si usa UDP fuorchè nel caso di query AXFR o IXFR.
+[no]recursive: abilita o disabilita l'uso di recursione nelle query. Di default è attiva. Viene automaticamente disabilitato se si utilizzano l'opzione +nssearch o l'opzione +trace.
+[no]nssearch: se settata questa opzione effettua una query per trovare il nameserver autoritativo per la zona relativa all'host cercato e restituisce i record SOA per ogni nameserver appartenente alla zona.
+[no]trace: diabilitato di default se settato fa effettuare la query verso il dominio radice e restituisce tutte i dati relativi ad ogni nameserver usato per trovare le informazioni cercate.
+[no]short: disabilita l'output verboso che è il valore usato di default.
Ad esempio se usiamo dig www.esempio.com +short otteremo un output di questo tipo:
10.11.12.13

Anche nella sua pagina di manuale gli sviluppatori fanno dell'ironia sulle mille opzioni di dig sicchè sotto la voce BUGS si trova "There are probably too many query options".
Se si è interessati a conoscerle tutte leggersi bene il man.

Privacy Policy