Découverte de l’outil nslookup sous Linux
L’utilitaire nslookup (Name System Look Up) est un outil qui permet d’interroger directement un serveur de noms et d’en obtenir les informations concernant un domaine, un hôte ou toutes autres données concernant les équipements connectés à un réseau. Cela permet de diagnostiquer les problèmes de configuration des serveurs DNS.
Telle que, sans argument, la commande nslookup affiche le nom et l’adresse IP du serveur de noms primaire (sauf si le paramétrage du DNS l’interdit), ainsi qu’un prompt de commande permettant l’interrogation. Il suffit alors de fournir le nom d’un domaine au niveau de la ligne du prompt pour en afficher les caractéristiques :
# nslookup > mydmn.org Server: 192.168.1.172 Address: 192.168.1.172#53
De la même façon, on peut demander à disposer d’informations concernant une machine en particulier :
# nslookup client1.mydmn.org Server: 192.168.1.172 Address: 192.168.1.172#53 Name: client1.mydmn.org Address: 192.168.1.143
IMPORTANT : par défaut, la commande nslookup interroge systématiquement le serveur primaire de noms, configuré sur la machine. Mais, on peut tout à fait interroger un serveur de noms autre, en le précisant à la suite de la commande, précédée du signe "-" :
# nslookup client1.mydmn.org - 192.172.1.173 Server: 192.168.1.173 Address: 192.168.1.173#53 Name: client1.mydmn.org Address: 192.168.1.143
En ce qui concerne l’interrogation, on peut modifier le mode utilisé par la commande nslookup en spécifiant la clause set et l’une des options suivantes :
- set type=mx recherche les informations sur le ou les serveurs de messagerie d’un domaine.
- set type=ns recherche les informations sur le ou les serveurs de noms du domaine.
- set type=a recueille les informations concernant un hôte du réseau (mode par défaut).
- set type=soa affiche les informations du champ SOA (Start Of Authority) du domaine.
- set type=cname affiche les informations concernant les alias.
- set type=hinfo affiche les données concernant un matériel (si celles-ci sont renseignées).
Dans le mode interactif, il suffit de remplacer "set type=" par "–query=" et de fournir le nom de l’élément à interroger.
Exemple : pour afficher les caractéristiques du champ SOA du serveur primaire :
# nslookup –query=soa mydmn.org Server: 192.168.1.172 Address: 192.168.1.172#53 cluster origin = dnsmaster.mydmn.org mail addr = root.mydmn.org serial = 2014102848 refresh = 10800 retry = 3600 expire = 604800 minimum = 86400
À l’inverse, il est possible d’interroger une adresse IP afin de connaître le nom de machine qui lui est associé :
# nslookup 192.168.1.153 Server: 192.168.1.172 Address: 192.168.1.172#53 153.1.168.192.in-addr.arpa name = client4.mydmn.org.
Il arrive parfois qu’en interrogeant un serveur de noms, on reçoive une réponse étiquetée comme ne faisant pas autorité. C’est généralement le cas lorsque l’équipement dont on recherche les caractéristiques ne fait pas partie de la zone du serveur de noms local, mais d’une autre zone:
# nslookup srvlinx01.drm.net ;; Truncated, retrying in TCP mode. Server: 192.168.1.172 Address: 192.168.1.172#53 Non-authoritative answer: Name: srvlinx01.drm.net Address: 12.27.2.104
La recherche peut également porter sur les enregistrements de type MX, concernant le ou les serveurs de messagerie de la zone concernée:
# nslookup -query=mx google.fr
Dans ce genre de cas, si l’on interroge un serveur de noms local à l’entreprise, on risque de ne pas avoir de réponse. Par contre, en interrogeant un serveur en DMZ ou connecté sur Internet, on aura la réponse suivante :
Serveur : srvdnsext.drm.net Address : 12.27.2.102 Réponse ne faisant pas autorité : google.fr MX preference = 10, mail exchanger = aspmx.1.google.com google.fr MX preference = 20, mail exchanger = alt1.aspmx.1google.com google.fr MX preference = 50, mail exchanger = alt4.aspmx.1.google.com google.fr MX preference = 30, mail exchanger = alt2.aspmx.1.google.com google.fr MX preference = 40, mail exchanger = alt3.aspmx.1.google.com aspmx.1.google.com internet address = 172.194.76.27
De la même façon, on peut lister les informations associées à un cluster en exécutant l’instruction suivante:
# nslookup -query=any mydmn.org
ASTUCE : il arrive parfois (pour des raisons de sécurité) que le port TCP/53, d’ordinaire réservé au protocole d’échange DNS ne soit pas celui sur lequel le serveur de noms écoute. Dans ce cas, afin d’effectuer, malgré tout, une requête DNS, il suffit simplement d’exécuter l’instruction ci-dessous :
# nslookup -port=xx host.secure.net
Comme tout Utilitaire d’interrogation d’un écosystème, nslookup possède un mode debug que l’on peut facilement active pour avoir encore plus d’informations lors des réponses retournées en retour des requêtes clientes :
# nslookup -debug mydmn.org
Cette dernière commande permet de suivre le transit de la requête émise, et de voir par où (quels serveurs, quelles zones de transfert…), elle passe.