Hoy vamos a revisar una herramienta sumamente útil: nslookup.exe. Esta herramienta de línea de comandos nos sirve principalmente para probar y solucionar problemas de los servidores DNS de nuestra arquitectura. Se instala junto con el protocolo TCP/IP, y vamos a ver varias cosas que podemos ver con esta utilidad.
Básicamente, este comando que se usa para detectar si el DNS está resolviendo correctamente los nombres y las IP; permitiéndonos consultar un servidor de nombres y obtener información relacionada con el dominio o el host y así diagnosticar los eventuales problemas de configuración que pudieran haber surgido en el DNS.
Los requerimientos mínimos para utilizarlo son los siguientes (Si, digamos que son obvios, pero bueno igual los nombramos):
-
El protocolo TCP/IP debe estar instalado en el equipo donde se ejecuta Nslookup.exe
-
Se debe especificar al menos un servidor DNS cuando se ejecuta el comando IPCONFIG /ALL desde un símbolo del sistema.
-
Nslookup siempre devolverá el nombre del contexto actual. Esto es muy importante si trabajamos con entornos multiplataforma. Si no califica totalmente la consulta del nombre (es decir, si no utilizamos el punto del final), la consulta se anexará al contexto actual. Por ejemplo, la configuración del DNS es clarin.com y se realiza una consulta en www.radians.com.ar; la primera consulta saldrá como www.radians.com.ar.clarin.com porque la consulta no está completa. Este comportamiento puede ser incoherente con las versiones de otro proveedor de Nslookup.
-
Si ha implementado el uso de la lista de búsquedas en el Domain Suffix Search Order definido en las Propiedades de TCP/IP, la devolución no se producirá. La consulta se anexará a los sufijos de dominio especificados en la lista. Para evitar utilizar la lista de búsquedas, debemos utilizar siempre el nombre de dominio completo.
Podemos utilizar la herramienta NSLookup en dos modos: interactivo y no interactivo. Vamos a ver primero el modo no interactivo (la que se utiliza generalmente para consultas aisladas) ya que sólo devuelve un fragmento de datos. La sintaxis para el modo no interactivo es la siguiente:
nslookup [-option] [hostname] [server]
Por ejemplo:
Ahora, el modo interactivo (usado generalmente para troobleshooting, ya que podemos hacer varias consultas; igualmente es cuestión de gustos, no?), solo basta con escribir “nslookup” en la ventana de línea de comandos:
Por ejemplo:
Si se escribimos "help" o "?" nos mostrara una lista de comandos disponibles.
Todo lo que escribamos en esta pantalla que no se reconozca como un comando válido se supone que es un nombre de host y se intentara resolver utilizando el servidor predeterminado. Para interrumpir comandos interactivos, debemos presionar CTRL+C, y para salir del modo interactivo y volver al símbolo del sistema, debemos escribir exit en el símbolo del sistema.
Por ejemplo, podemos ver varias opciones diferentes ejecutando la opción set. Si queremos ver la lista completa de estas opciones, podemos hacerlo escribiendo set all. Vea arriba, bajo el comando set, para obtener una lista de las opciones disponibles.
Vamos a ver algunos ejemplos mas en concreto. Si queremos buscar datos diferentes dentro del espacio de nombres de dominio, utilice el comando set type o set q[uerytype] en el símbolo del sistema. Por ejemplo, para consultar los datos del mail exchanger data, debemos escribir lo siguiente:
Cabe aclarar, que la primera vez que se realiza una consulta de un nombre remoto, la respuesta es autoritativa, pero las consultas subsiguientes no lo son. La primera vez que se consulta un host remoto, el servidor DNS local se pone en contacto con el servidor DNS que es autoritativo para ese dominio. El servidor DNS local almacenará en memoria caché esa información, por lo que las consultas subsiguientes se responderán de forma no autoritativa a partir de la caché del servidor local.
Otro ejemplo, podría ser consultar directamente otro servidor de nombres, para ello utilizamos el comandos server o lserver para cambiar a ese servidor de nombres. El comando lserver utiliza el servidor local para obtener la dirección del servidor al que se desea cambiar, mientras que el comando server utiliza el servidor predeterminado actual para obtener la dirección.
También podríamos usar el Nslookup para transferir toda una zona mediante el comando ls. Esto es útil para ver todos los hosts que hay dentro de un dominio remoto. La sintaxis del comando ls es la siguiente:
ls [- a | d | t type] domain [> filename]
Si se utilizamos ls sin argumentos nos devolverá una lista de todas las direcciones y datos del servidor de nombres. El modificador -a nos devolverá el alias y los nombres canónicos, -d devolverá todos los datos y -t filtrará por tipo.
El resultado seria:
>ls domain.com
[nameserver1.domain.com]
nameserver1.domain.com. NS server = ns1.domain.com
nameserver2.domain.com NS server = ns2.domain.com
nameserver1 A 10.0.0.1
nameserver2 A 10.0.0.2
>
Las transferencias de zona se pueden bloquear en el servidor DNS de manera que sólo las direcciones o las redes autorizadas puedan realizar esta función. Se devolverá el error siguiente si se ha establecido la seguridad de la zona:
*** No se puede hacer una lista del dominio ejemplo.com.: Consulta rechazada
Como mencionamos anteriormente, esta herramienta es sumamente útil para hacer troubleshooting. Por ejemplo, si el nslookup nos devuelve el siguiente error:
*** No se puede encontrar el nombre de servidor para la dirección w.x.y.z: Agotado el tiempo de espera
Este error indica que no se puede alcanzar el servidor DNS o que el servicio no está ejecutándose en ese equipo. Para corregir este problema, deberíamos verificar que este iniciado el servicio DNS en ese servidor o comprobar si hay problemas de conectividad.
Si el error fuera:
*** No se puede encontrar el nombre de servidor para la dirección 127.0.0.1: Agotado el tiempo de espera
La causa común de este error es que no se ha definido ningún servidor en la lista Orden de búsqueda de servicio DNS. Para corregir este problema, deberíamos agregar a esta lista la dirección IP de un servidor DNS válido.
Otro ejemplo de errores comunes, podría ser:
*** No se puede encontrar el nombre de servidor para la dirección w.x.y.z: Dominio inexistente
Generalmente, este error se produce cuando no hay ningún registro PTR para la dirección IP del servidor de nombres. Cuando Nslookup.exe se inicia, hace una búsqueda inversa para obtener el nombre del servidor predeterminado. Si no existen ningún dato PTR, se devuelve este mensaje de error. Para corregirlo, debemos asegurarnos que existe una zona de búsqueda inversa y que contiene registros PTR para los servidores de nombres. Esto es muy común en los registros MX, generalmente en los DNS de los ISP, que no lo hacen si no se pide.
Espero que esta nota les sea de interés y los ayude en el día a día. Personalmente es una herramienta que utilizo frecuentemente, tanto en mis ambientes productivos como en los de testing, ya que me ayuda a comprobar que mis DNS funcionen correctamente.
Saludos, Roberto Di Lello.