Apuntes sobre Redes

Access.log, donde habitan los monstruos.

Trazando una Consulta DNS con dig +trace

Para ilustrar el proceso de resolución de nombres descrito en la sección de DNS, mostramos un ejemplo esquematizado de la herramienta dig con la opción +trace, que traza el camino de resolución del dominio example.com. Esta herramienta realiza consultas iterativas desde los servidores raíz hasta el servidor autoritativo, mostrando cada paso del proceso. También explicamos el papel del resolvedor local, que inicia estas consultas en un sistema.

El Resolvedor Local

El resolvedor local es el componente del sistema operativo que gestiona las consultas DNS, actuando como intermediario entre las aplicaciones (como navegadores o dig) y los servidores DNS externos. En Linux, el resolvedor local se configura principalmente a través del archivo /etc/resolv.conf, que lista las direcciones IP de los servidores DNS a los que se envían las consultas. Un ejemplo típico de /etc/resolv.conf es:

nameserver 127.0.0.53
nameserver 8.8.8.8

Aquí, 127.0.0.53 es el resolvedor DNS local de sistemas modernos como Ubuntu (gestionado por systemd-resolved), y 8.8.8.8 es un servidor DNS público de Google como respaldo. Este archivo determina a qué servidor se envía la consulta inicial. En una consulta DNS estándar, el resolvedor local usa su caché para responder rápidamente si ya conoce la respuesta. Sin embargo, dig +trace ignora este caché y realiza consultas directas a los servidores raíz, de TLD, y autoritativos, para mostrar el proceso completo de resolución.

En Windows, el resolvedor local se configura a través de la configuración de red, accesible desde el Panel de Control (Redes e Internet > Conexiones de red > Propiedades del adaptador de red > Protocolo de Internet versión 4 o 6 > Servidores DNS). También se puede consultar con el comando:

ipconfig /all

Esto muestra los servidores DNS configurados (por ejemplo, los del ISP o 8.8.8.8). Windows no usa un archivo equivalente a /etc/resolv.conf, pero la configuración puede modificarse en la interfaz gráfica o en el registro del sistema.
Al igual que en Linux, dig +trace en Windows (si usas dig desde un entorno como WSL o Cygwin) evita el caché del resolvedor local para trazar la resolución desde cero.

Ejemplo de dig +trace example.com (Esquematizado)

A continuación, presentamos una versión simplificada de la salida de dig +trace example.com, con las líneas más relevantes de cada paso y su explicación.

Paso 1: Consulta a los servidores raíz

.            518400    IN    NS    a.root-servers.net.
.            518400    IN    NS    g.root-servers.net.
;; Received 228 bytes from 127.0.0.53#53(127.0.0.53) in 2 ms
  • Explicación: La consulta comienza con el resolvedor local (127.0.0.53), que proporciona la lista de los 13 servidores raíz (solo mostramos dos por brevedad). Estos servidores, como a.root-servers.net, son el punto de partida para resolver cualquier dominio. El TTL de 518,400 segundos (~6 días) indica cuánto tiempo se puede almacenar esta información en caché.

Paso 2: Consulta al servidor de TLD (.com)

com.            172800    IN    NS    a.gtld-servers.net.
com.            172800    IN    NS    b.gtld-servers.net.
com.            86400    IN    DS    30909 8 2 [Hash DNSSEC]
;; Received 512 bytes from 192.112.36.4#53(g.root-servers.net) in 35 ms
  • Explicación: El servidor raíz g.root-servers.net indica los servidores de nombres del TLD .com, como a.gtld-servers.net. El registro DS muestra que .com usa DNSSEC para verificar la autenticidad de las respuestas, previniendo ataques como el envenenamiento de caché DNS. El TTL de 172,800 segundos (48 horas) aplica a los registros NS.

Paso 3: Consulta al servidor autoritativo

example.com.        172800    IN    NS    a.iana-servers.net.
example.com.        172800    IN    NS    b.iana-servers.net.
;; Received 404 bytes from 192.5.6.30#53(a.gtld-servers.net) in 40 ms
  • Explicación: El servidor de .com (a.gtld-servers.net) señala los servidores autoritativos de example.com, gestionados en este caso por IANA (a.iana-servers.net y b.iana-servers.net). Estos servidores tienen la información final sobre el dominio.

Paso 4: Respuesta final

example.com.        86400    IN    A    93.184.216.34
;; Received 56 bytes from 199.7.83.42#53(b.iana-servers.net) in 50 ms
  • Explicación: El servidor autoritativo b.iana-servers.net entrega el registro A con la dirección IP 93.184.216.34 de example.com. El TTL de 86,400 segundos (24 horas) indica cuánto tiempo puede almacenarse esta respuesta en caché.

Nota sobre el Caché y dig +trace

Como hemos explicado, el sistema DNS utiliza el almacenamiento en caché para mejorar la eficiencia. Los resolvedores locales (como 127.0.0.53) y los servidores de nombres almacenan registros como A o NS durante su TTL (por ejemplo, 86,400 segundos para el registro A de example.com). En una consulta DNS estándar, el resolvedor local usaría el caché para responder rápidamente. Sin embargo, dig +trace realiza consultas iterativas, ignorando el caché del resolvedor local y contactando directamente los servidores raíz, de TLD, y autoritativos. Si repites el comando, la salida podría variar ligeramente en:

  • Servidores contactados: Por ejemplo, h.root-servers.net en lugar de g.root-servers.net.
  • Tiempos de respuesta: Dependen de la latencia de la red.
  • TTL decreciente: Los valores de TTL disminuirán con el tiempo.
    A pesar de estas variaciones, la estructura de la resolución (raíz → TLD → autoritativo → IP) seguirá siendo la misma, salvo cambios en la configuración del dominio.
TOP