Módulo 1 · 1.4
El viaje de una consulta DNS
Módulo 1: ¿Qué es el DNS? · Tiempo de lectura: 8 minutos
Objetivo de aprendizaje: Después de esta lección podrá explicar paso a paso cómo un resolver encuentra una respuesta, y dónde por el camino se guardan las respuestas en memoria.
Conceptos clave: resolver (recursivo), servidor raíz, servidor de TLD, servidor de nombres autoritativo, remisión (delegación), caché
Dos tipos de servidores DNS
En la lección 1.1 vio que el DNS está dividido: nadie lo sabe todo. Entonces, ¿cómo consigue su navegador la dirección de www.example.com? Para eso colaboran dos tipos de servidores:
- Los servidores de nombres autoritativos (en inglés authoritative) conocen la respuesta para su propia parte. Los servidores de nombres de
example.comconocen los registros deexample.com. No buscan nada para otros. - Los resolvers (también llamados resolvers recursivos) buscan la respuesta por usted. Preguntan una y otra vez hasta obtenerla. Su proveedor de internet tiene un resolver, y existen resolvers públicos como los de Quad9, Cloudflare o Google.
Su propio ordenador apenas busca nada por sí mismo. Tiene un pequeño stub resolver que traslada la pregunta al resolver de su red y recibe la respuesta de vuelta.
El viaje, paso a paso
Supongamos que el resolver todavía no ha memorizado nada y usted pregunta por el registro A de www.example.com.
- Su ordenador pregunta al resolver: "¿Cuál es el registro A de www.example.com?"
- El resolver pregunta a un servidor raíz. Cada resolver tiene incorporada una lista con las direcciones de los servidores raíz. El servidor raíz no sabe nada de
example.com, pero sí sabe quién gestiona.com. Responde con una remisión: "Para eso debe acudir a los servidores de nombres de com: a.gtld-servers.net, b.gtld-servers.net, etcétera." - El resolver pregunta a un servidor de nombres de .com. Este tampoco conoce la dirección IP de
www.example.com, pero sí sabe qué servidores de nombres tieneexample.com. De nuevo una remisión: "Pregúntelo a ns1.hosting.example o a ns2.hosting.example." - El resolver pregunta a un servidor de nombres de example.com. Este es autoritativo para este dominio y da la respuesta: "www.example.com tiene el registro A 192.0.2.10."
- El resolver entrega la respuesta a su ordenador. Su navegador se conecta con 192.0.2.10.
Una remisión de un nivel superior hacia los servidores de nombres de un nivel inferior se llama delegación. La raíz delega .com a Verisign, y .com delega example.com a los servidores de nombres que haya indicado el titular del dominio. Para un dominio .nl funciona exactamente igual, solo que la raíz remite entonces a los servidores de nombres de .nl (SIDN, el registro de dominios de .nl en Países Bajos, por ejemplo ns1.dns.nl). Esto lo verá usted mismo en el ejercicio al final de esta lección. Por eso es tan importante que los servidores de nombres coincidan con los que figuran en el registro de dominios (lección 2.1).
La caché: no todo el viaje cada vez
Si cada resolver tuviera que empezar de nuevo en la raíz con cada consulta, la raíz recibiría una cantidad inimaginable de preguntas. Eso no ocurre, porque el resolver memoriza las respuestas durante un tiempo. Esa memoria se llama caché.
Cuánto tiempo puede memorizarse una respuesta figura en la propia respuesta: el TTL (time to live), en segundos. Un TTL de 3600 significa: esta respuesta puede memorizarse durante una hora. También las remisiones se memorizan. Un resolver que acaba de saber qué servidores de nombres tiene .com no necesita volver a preguntárselo a la raíz la próxima vez.
Si otra persona del mismo proveedor pregunta un minuto después por www.example.com, el resolver responde de inmediato desde su caché. Sin viaje, sin espera.
Las cachés están en varios sitios:
- en el resolver de su proveedor o el resolver público que utilice;
- en su sistema operativo (Windows, macOS, su teléfono);
- en su navegador;
- a veces en su router.
Esto es rápido y eficiente, pero tiene una consecuencia con la que se encontrará a menudo más adelante: si modifica un registro, las cachés seguirán dando la respuesta antigua hasta que pase su TTL. Por eso una persona ya ve un cambio y otra todavía no. El módulo 6 trata esto con detalle.
Los servidores raíz
Existen 13 nombres para los servidores raíz: de a.root-servers.net a m.root-servers.net. Están gestionados por doce organizaciones distintas. Detrás de cada nombre hay muchos servidores en todo el mundo, en cientos de ubicaciones, que comparten la misma dirección (esto se llama anycast). Su resolver llega automáticamente al más cercano. Los servidores de nombres de los TLD, como los de .com y .nl, funcionan de la misma manera. Gracias a esto, el DNS es rápido y sigue funcionando aunque falle algún servidor.
Dónde puede fallar
Si conoce el viaje, podrá situar mejor los problemas:
- La delegación no es correcta. En el registro de dominios figuran servidores de nombres que ya no conocen (o nunca conocieron) el dominio. El resolver no puede avanzar en el paso 4. La respuesta es un error o no llega ninguna respuesta.
- El servidor autoritativo da una respuesta distinta de la que espera. En ese caso ha modificado el registro en un lugar distinto de donde están los servidores de nombres (lección 2.1).
- La caché todavía tiene la respuesta antigua. Entonces nada está roto. Debe esperar a que pase el TTL, o vaciar su propia caché.
- El DNSSEC no es correcto. Un resolver validador comprueba firmas por el camino. Si la cadena no es correcta, rechaza la respuesta (lección 8.1).
Con la herramienta dig +trace puede reproducir usted mismo el viaje, desde la raíz hasta el servidor autoritativo. Eso lo aprenderá en la lección 8.2. También hay herramientas en línea que lo permiten.
Resumen
- Los servidores de nombres autoritativos conocen la respuesta para su propio dominio; los resolvers buscan la respuesta por usted.
- Un resolver empieza en la raíz, recibe una remisión hacia el TLD, luego hacia los servidores de nombres del dominio, y allí obtiene la respuesta.
- Esa remisión se llama delegación.
- Las respuestas se memorizan en cachés, durante el tiempo que indique el TTL; por eso los cambios no son visibles en todas partes de inmediato.
- Hay 13 nombres de servidores raíz, pero gracias a anycast hay muchos servidores detrás de ellos en todo el mundo.
Cuestionario
Ejercicio
Ejercicio Z1.4: Seguir el viaje. Siga el viaje para www.sidn.nl, con dig +trace www.sidn.nl o una herramienta en línea que muestre un trace. Indique: (1) un servidor de nombres de nl. que encuentre por el camino, (2) un servidor de nombres autoritativo de sidn.nl.
Para saber más
Estos artículos describen la situación en WebOké. En otros proveedores funciona de forma parecida.
