Comando nslookup: uso y opciones, consulta de registros y elección del servidor DNS
El comando nslookup es una herramienta de consulta que pregunta a un servidor DNS por un nombre de dominio y devuelve sus direcciones IP y registros DNS como MX, NS y TXT. Al consultar por tipo los registros de example.com en un servidor AlmaLinux 9 y cambiar el servidor DNS consultado, el mismo dominio dio resultados distintos según a qué servidor se preguntara: la línea Non-authoritative answer del inicio de la respuesta desaparecía o el resultado de la consulta ANY cambiaba.
La salida de abajo se obtuvo con la cuenta root en un servidor AlmaLinux 9.8. La dirección del servidor DNS configurado en el servidor se ha sustituido por el valor de ejemplo 192.0.2.53, y los números de versión de los paquetes también se han cambiado por valores de ejemplo.
1️⃣ Cómo usar el comando nslookup
La forma básica es [nslookup -opción nombre servidor-DNS], y tanto las opciones como el servidor DNS se pueden omitir. Si solo se escribe un nombre, nslookup pregunta la dirección de ese nombre al servidor DNS configurado en el servidor.
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:93f3Las dos líneas Server y Address de arriba muestran el servidor DNS que recibió la consulta, y el #53 del final es el número de puerto de DNS. Si no se indica el tipo de registro, nslookup consulta primero el registro A (IPv4) y después el AAAA (IPv6), por eso a las dos direcciones IPv4 les siguieron dos direcciones IPv6.
Non-authoritative answer significa que respondió un servidor DNS que tenía el valor en su caché, y no el servidor que gestiona directamente los registros de example.com. Por eso, justo después de cambiar un registro, el valor puede no coincidir con el real.
2️⃣ Opciones de nslookup
Las opciones se escriben con un guion delante del nombre.
-type es la misma opción que -query o la forma corta -q. Al preguntar a 8.8.8.8 con -q=mx salió la misma línea de servidor de correo que 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 y -retry fijan cuánto se espera a un servidor DNS que no responde. 192.0.2.1 es una dirección reservada para documentación, así que ningún servidor responde en ella.
nslookup -timeout=2 -retry=1 example.com 192.0.2.1;; connection timed out; no servers could be reachedCon -timeout=2 -retry=1, nslookup mostró la línea [connection timed out] a los 2 segundos y terminó. Con -retry=2 tardó 4 segundos, y sin ninguna opción tardó 15 segundos. Para que un script no se quede detenido mucho tiempo por un servidor que no responde, conviene bajar los dos valores.
Con -debug se muestran tal cual las secciones de pregunta y respuesta del paquete de respuesta.
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:93f3Cada registro llevó un ttl = 300 que la salida normal no muestra. Indica que el servidor DNS que recibió esta respuesta puede guardar ese registro en caché hasta 300 segundos.
-norecurse pide al servidor DNS que responda solo con lo que ya tiene, sin buscarlo a través de otros servidores. Al preguntar al mismo 8.8.8.8 sin la opción salieron cuatro direcciones, pero con -norecurse la consulta terminó en [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| Opción | Copiar | Descripción |
|---|---|---|
| -type= | Indica el tipo de registro que se consulta; si se omite, A y luego AAAA | |
| -q= | Misma opción que -type, indica el tipo de registro que se consulta | |
| -timeout= | Tiempo de espera de la respuesta a la primera consulta (segundos) | |
| -retry= | Veces que se envía la consulta si no hay respuesta | |
| -debug | Muestra la pregunta y la respuesta del paquete, hasta el TTL | |
| -norecurse | Pide solo los valores que tiene ese servidor, sin pasar por otros servidores |
| Opción | Copiar | Descripción |
|---|---|---|
| -query= | Misma opción que -type, indica el tipo de registro que se consulta | |
| -port= | Indica el puerto que se consulta, 53 por defecto | |
| -version | Muestra la versión y termina |
3️⃣ Consulta de registros con nslookup (MX, NS, TXT, SOA)
Si se escribe un tipo de registro después de -type=, solo se consulta ese registro. El valor puede ir en mayúsculas o en minúsculas.
| Valor de -type= | Información que contiene |
|---|---|
| A · AAAA | Dirección IPv4, dirección IPv6 |
| MX | Servidor que recibe el correo y su prioridad |
| NS | Servidores de nombres que gestionan los registros del dominio |
| TXT | Valores de texto como SPF |
| SOA | Servidor de nombres principal de la zona, correo del administrador, número de serie, intervalos de actualización |
| CNAME | Alias que apunta a otro nombre |
| PTR | Nombre de host asociado a una dirección IP (inverso) |
| ANY | Pide todos los registros de ese nombre a la vez |
Los servidores de correo se comprueban con el registro 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:El 10 que sigue a mail exchanger es la prioridad. Si hay varios servidores de correo, quien envía intenta la entrega empezando por el servidor con el número más bajo. La misma consulta sobre example.com devolvió [mail exchanger = 0 .], y un MX con un solo punto significa que este dominio no recibe correo.
El [Authoritative answers can be found from:] del final de la consulta MX es una línea de encabezado que muestra debajo la información de los servidores de nombres autoritativos incluida en la respuesta. En las consultas MX, NS y TXT de este artículo la respuesta no traía esa información, así que debajo del encabezado no apareció nada.
El registro NS contiene los servidores de nombres que gestionan directamente los registros 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 tenía dos servidores de nombres. Estos dos servidores son los servidores de nombres autoritativos de example.com.
En un registro TXT se pueden guardar valores de texto sin un formato fijo.
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 es un valor SPF que indica que ningún servidor puede enviar correo con este nombre de dominio. Si un dominio tiene varios registros TXT, aparecen así, uno por línea.
El registro SOA contiene la información básica de la 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 es el servidor de nombres principal, y mail addr es la dirección de correo del administrador con la @ escrita como punto. serial es un número de serie que sube cada vez que se cambian los registros, y refresh, retry y expire son valores de tiempo (en segundos) que usan los servidores de nombres secundarios para sincronizar los registros con el principal. minimum es el tiempo que se guarda en caché la respuesta a un registro que no existe.
Los alias se comprueban con el registro CNAME. Al consultar www.github.com salió una línea que indica que es un alias de 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 pide todos los registros de ese nombre a la vez. Al preguntar al servidor DNS configurado en el servidor salieron juntos los registros A, AAAA, MX y NS.
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:Al enviar la misma consulta a 8.8.8.8 solo volvieron una línea [hinfo = “RFC8482”] y una línea de 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 es el documento que permite responder a una consulta ANY con una respuesta corta en lugar de todos los registros. Por eso, los registros que se necesitan se consultan indicando un tipo cada vez.
4️⃣ Elegir el servidor DNS en nslookup
Si se escribe un servidor DNS después del nombre, nslookup pregunta a ese servidor en lugar del servidor DNS configurado en el servidor.
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 línea Server cambió a 8.8.8.8, y las cuatro direcciones fueron las mismas que en la respuesta del servidor DNS configurado en el servidor. Esta forma sirve para comprobar, después de cambiar los servidores de nombres, si los nuevos valores ya llegaron a cada servidor DNS público.
Si se indica como servidor DNS uno de los servidores de nombres que salieron en la consulta NS, se pregunta directamente al servidor autoritativo.
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:93f3Esta vez desapareció la línea Non-authoritative answer. Es el valor que respondió directamente el servidor que gestiona los registros, así que es el valor actual, sin pasar por una caché. En la Address justo debajo de la línea Server apareció la dirección IPv6 de este servidor de nombres.
Al consultar un nombre que no existe aparece [NXDOMAIN]. .invalid es un dominio de nivel superior reservado para no usarse nunca, así que la respuesta fue que el nombre no existe.
nslookup example.invalidServer: 192.0.2.53
Address: 192.0.2.53#53
** server can't find example.invalid: NXDOMAINEn cambio, no-such-host.example.com terminó con [No answer] en lugar de NXDOMAIN. Significa que el registro consultado no venía en la respuesta, un resultado distinto de NXDOMAIN, en el que el propio nombre no existe.
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️⃣ Consulta inversa con nslookup
Si se escribe una dirección IP en lugar de un nombre, nslookup consulta el registro PTR y busca el nombre de host asociado a esa dirección.
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 es el nombre que se forma al escribir la dirección IPv4 al revés y añadir in-addr.arpa. El valor del registro PTR de este nombre, dns.google., es el nombre de host de 8.8.8.8.
En la consulta inversa no aparecieron las dos líneas Server de arriba. Al consultar la misma dirección con nslookup 9.18 en un servidor Debian 12, la forma fue la misma.
6️⃣ Modo interactivo de nslookup
Si se ejecuta nslookup sin argumentos, se entra en el modo interactivo con el indicador >. Para consultar varios nombres y tipos de registro seguidos no hace falta volver a escribir el comando completo.
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:
> exitSi se cambia el servidor DNS consultado con server y se fija el tipo de registro con set type=, a partir de ahí basta con escribir un nombre para consultarlo con esa configuración. Al escribir exit se vuelve a la shell.
set all muestra todos los valores de configuración actuales.
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 había cambiado a txt, el valor fijado antes. retry = 3 y port = 53 son valores por defecto que no se cambiaron.
7️⃣ Instalar nslookup en Linux y compararlo con dig y host
Si al ejecutar nslookup en Linux sale [command not found], hay que instalar el paquete de herramientas de BIND. En el servidor AlmaLinux, nslookup venía en el paquete bind-utils.
rpm -qf /usr/bin/nslookupbind-utils-9.16.20-30.el9_8.2.x86_64En el servidor Debian 12 era el paquete bind9-dnsutils. El nombre antiguo dnsutils seguía existiendo como paquete de transición que instala bind9-dnsutils.
dpkg -S /usr/bin/nslookupbind9-dnsutils: /usr/bin/nslookupEn la familia RHEL, el paquete bind-utils se instala con el comando de abajo.
dnf install bind-utilsEn la familia Debian se instala el paquete bind9-dnsutils.
apt install bind9-dnsutilsEn el mismo paquete vienen también dig y host. Los tres comandos consultan DNS, pero su salida tiene otra forma.
| Comando | Salida | Cuándo usarlo |
|---|---|---|
| nslookup | Línea Server + respuesta, modo interactivo | Consultar varios nombres y registros seguidos |
| dig | Todas las secciones del paquete de respuesta; con +short, solo los valores | Sacar solo los valores en un script |
| host | Una frase por registro | Comprobar A, AAAA y MX a la vez |
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 .host, incluso sin opciones, consultó a la vez los registros A, AAAA y MX y mostró cada uno como una frase de una línea. Con +short, dig deja solo las direcciones IP.
dig +short example.com104.20.23.154
172.66.147.243Para sacar solo los valores en un script, dig +short es más fácil de manejar, y para comprobar varios nombres seguidos resulta más cómodo el modo interactivo de nslookup.
🔲 Simulador del comando nslookup
En el simulador de abajo puedes escribir nslookup tú mismo cambiando el tipo de registro y el servidor DNS.
🔢 FAQ & contenido recomendado
Consulta DNS
Comando host de Linux | comando de consulta DNS
Artículo que explica cómo encontrar con el comando host la dirección IP de un nombre de host y, al revés, el nombre de host de una dirección IP.
Consulta web
Sitios web para comprobar registros DNS y medir el rendimiento de los servidores de nombres
Artículo sobre cómo comprobar los valores de los registros DNS desde varias regiones con whatsmydns y comparar la velocidad de respuesta de los servidores DNS con DNSPerf.
ℹ️ Aviso de afiliados
El contenido de este sitio incluye enlaces de afiliado. Cuando un visitante compra un producto o servicio a través de uno de ellos, el sitio recibe una comisión del vendedor. El importe que paga el comprador(baja durante las promociones ↓)no aumenta. Los precios, descuentos y existencias publicados corresponden al momento de redacción y pueden variar, así que confírmalos con el vendedor antes de comprar. Los productos se eligen y evalúan con criterios propios, y las comisiones no influyen en el orden ni en el contenido de las reseñas.