¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Buscar un nombre paso a paso (DNS)

Después de esta lección: Puedo buscar un nombre con dig y decir qué registro respondió.

Lección de 55 min11 comandosLaboratorio de DHCP y DNS: configura dnsmasq para una red pequeña en el navegador

Una página que abría solo para uno

Una consulta DNS es el camino que sigue una máquina para convertir un nombre en una dirección. Saber leerla ayuda a encontrar por qué un nombre funciona en un equipo y en otro no.

Un técnico de soporte recibe una llamada. La web de la tienda se abre en un portátil y en otro no, aunque están en la misma red. La causa es una línea vieja en un fichero pequeño del segundo portátil. Ese fichero responde por el nombre antes de que nadie pregunte a la red.

Al final de esta lección

Nota

Puedo buscar un nombre con dig y decir qué registro respondió.

Palabras clave

PalabraQué significaEjemplo
Resolutorla parte de una máquina que busca los nombres
Fichero hostsuna lista corta de nombres y direcciones en la propia máquina/etc/hosts
CNAMEun registro que dice que este nombre es otro nombre
TTLlos segundos que se puede guardar una respuesta300
NXDOMAINla respuesta de que este nombre no existe
Zonalos nombres de los que se encarga un servidor DNStienda.test

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Una máquina busca en dos sitios

Antes de preguntar a la red, una máquina lee su fichero hosts. Si el nombre está ahí, esa respuesta gana. Solo después el resolutor pregunta a un servidor DNS.

Un fichero /etc/nsswitch.conf fija el orden. La palabra files es el fichero hosts, y dns es el servidor.

Lee el orden que sigue la máquina

Comando
grep '^hosts' /etc/nsswitch.conf

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Busca un nombre como lo hacen los programas

Comando
getent hosts localhost

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un servidor DNS responde con registros

Un servidor DNS guarda una zona, los nombres de los que se encarga. Cada nombre tiene registros, y cada respuesta lleva un TTL: un resolutor puede guardarla ese tiempo.

Aquí arrancas un servidor pequeño tuyo para una tienda inventada. Escucha en el puerto 5300, solo en esta máquina, y guarda una zona, tienda.test.

Arranca un servidor de prueba para la tienda

Comando
sudo dnsmasq --conf-file= --no-hosts --no-resolv --port=5300 --listen-address=127.0.0.1 --bind-interfaces --local-ttl=300 --local=/tienda.test/ --host-record=tienda.test,10.20.30.40 --host-record=correo.tienda.test,10.20.30.50 --cname=www.tienda.test,tienda.test --mx-host=tienda.test,correo.tienda.test,10 --txt-record=tienda.test,v=demo

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Ejemplo resuelto: preguntar con dig

EscribesPreguntaImprime
dig +short @127.0.0.1 -p 5300 tienda.testEl registro A10.20.30.40
dig +noall +answer ... www.tienda.testEl nombre y sus registrosUna línea CNAME y luego la línea A
dig +short ... tienda.test MXQuién recibe el correo10 correo.tienda.test.
dig +short ... -x 10.20.30.40Qué nombre tiene esta direccióntienda.test.

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Pide la dirección de la tienda

Comando
dig +short @127.0.0.1 -p 5300 tienda.test

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Sigue la cadena desde el nombre www

Comando
dig +noall +answer @127.0.0.1 -p 5300 www.tienda.test

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Pregunta quién recibe el correo

Comando
dig +short @127.0.0.1 -p 5300 tienda.test MX

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Pregunta qué nombre tiene una dirección

Comando
dig +short @127.0.0.1 -p 5300 -x 10.20.30.40

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

El estado dice qué falló

Cada respuesta tiene un estado. NOERROR significa que el servidor respondió. NXDOMAIN significa que el nombre no existe en una zona que el servidor guarda.

REFUSED significa que el servidor no responderá por ese nombre. Tu servidor de prueba solo guarda tienda.test y no tiene a quién más preguntar.

Pide un nombre que falta en la zona

Comando
dig @127.0.0.1 -p 5300 nada.tienda.test | grep status

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Pide un nombre de otra zona

Comando
dig @127.0.0.1 -p 5300 tienda.invalid | grep status

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un error frecuente

Advertencia

Mucha gente cree que dig y ping buscan un nombre de la misma manera. No es así. dig pregunta a un servidor DNS y a nadie más. La mayoría de los programas, ping incluido, leen antes el fichero hosts. Un nombre puede funcionar en un navegador y no mostrar nada con dig.

Mira cómo discrepan los dos caminos

Comando
dig +short @127.0.0.1 -p 5300 localhost

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Una búsqueda real baja etiqueta a etiqueta

En internet ningún servidor conoce todos los nombres. Un resolutor pregunta a la raíz, luego al servidor de la terminación y luego al de la empresa.

El laboratorio no tiene internet: esta tabla se lee y no se ejecuta. Muestra las preguntas para www.tienda.ejemplo.

Ejemplo resuelto: buscar www.tienda.ejemplo

PasoEl resolutor preguntaLa respuesta
1A un servidor raízPregunta a los servidores de la terminación .ejemplo
2A un servidor de .ejemploPregunta a los servidores de tienda.ejemplo
3A un servidor de tienda.ejemplowww es 203.0.113.20, guardado 300 segundos
4A nadie, durante 300 segundosEl resolutor responde desde su memoria

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Para el servidor de prueba

Comando
sudo pkill -f '[-]-port=5300'

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Para ir más lejos: la cabecera de dig

Ejecuta otra vez dig @127.0.0.1 -p 5300 tienda.test, con el servidor de prueba arrancado, y lee toda la cabecera.

Busca la línea de las banderas y los números de preguntas y respuestas. Luego pide nada.tienda.test y compara los números. ¿Cuál cambió?