09 - DNS

Domain Name System (DNS) es un sistema de nomenclatura jerárquica y distribuida para los recursos conectados a Internet o a una red privada. Su función principal es traducir nombres de dominio ()(cadena de texto que identifica a un sitio web, como example.com) legibles por humanos en direcciones IP numéricas que las máquinas utilizan para identificarse en la red.

El propósito del DNS es simplificar el uso de Internet al permitir que los usuarios utilicen nombres de dominio en lugar de recordar largas secuencias de números.

Entre las ventajas del DNS se incluyen:

  • Facilita la Navegación: Permite a los usuarios acceder a sitios web mediante nombres amigables como www.google.com en lugar de 142.250.190.78.
  • Estructura Jerárquica: Organiza los nombres de dominio en una estructura jerárquica que facilita la administración y resolución de nombres.
  • Distribución Global: El DNS está diseñado como un sistema distribuido, lo que distribuye la carga de trabajo y mejora la resiliencia del sistema, permitiendo una resolución rápida y eficiente de nombres a nivel mundial.
  • Escalabilidad: La arquitectura del DNS permite la expansión continua. A medida que se crean nuevos dominios y subdominios, el sistema DNS puede escalar para manejar la demanda sin problemas.

Facilita la Navegación: Permite a los usuarios acceder a sitios web mediante nombres amigables como www.google.com en lugar de 142.250.190.78. Estructura Jerárquica: Organiza los nombres de dominio en una estructura jerárquica que facilita la administración y resolución de nombres.

El funcionamiento básico del DNS se puede dividir en dos partes principales:

  • Resolución de Nombres: El proceso mediante el cual se convierte un nombre de dominio en una dirección IP. Cuando un usuario introduce un nombre de dominio en su navegador, se realiza una consulta DNS para obtener la dirección IP asociada a ese nombre.
  • Proceso de Resolución: Involucra varios pasos y componentes para encontrar la dirección IP correcta.

El proceso de resolución de nombres DNS sigue estos pasos:

  • Consulta del Cliente DNS: Cuando un usuario intenta acceder a un sitio web, el navegador consulta el servidor DNS local (recursivo) para resolver el nombre de dominio.
  • Servidor DNS Recursivo: Si el servidor DNS local no tiene la respuesta en su caché, realiza una búsqueda en nombre del cliente. Este servidor puede consultar otros servidores DNS para encontrar la respuesta.
  • Consulta al Servidor Raíz: El servidor DNS recursivo primero contacta a uno de los servidores raíz del DNS, que indica la dirección de los servidores DNS de nivel superior (TLD) responsables del dominio de nivel superior (por ejemplo, .com, .org).
  • Consulta a Servidores TLD: El servidor recursivo contacta a los servidores TLD para obtener la dirección del servidor DNS autoritativo que tiene la información sobre el dominio específico.
  • Consulta al Servidor Autoritativo: Finalmente, el servidor recursivo consulta al servidor DNS autoritativo para obtener la dirección IP del dominio solicitado.
  • Respuesta al Cliente: Una vez que se obtiene la dirección IP, el servidor DNS recursivo la devuelve al cliente, que puede entonces acceder al sitio web utilizando la dirección IP.

Raíz (.) ──> TLD (.com, .es) ──> Dominio (cesguiro.es) ──> Subdominio (www.cesguiro.es)
   ↑             ↑                      ↑                         ↑
Servidores      Servidores        Servidor                    Registro A
raíz globales   TLD públicos      autoritativo                (IP final)

  1. Cliente pregunta al recursivo local.

  2. Recursivo consulta caché; si no, va a raíz (obtiene TLD .es).

  3. Raíz envía a servidores TLD (.es, obtiene ns1.cesguiro.es).

  4. TLD envía a autoritativo (ns1.cesguiro.es, obtiene IP 192.0.2.1).

  5. Autoritativo responde; recursivo guarda en caché y devuelve al cliente.

Existen varios tipos de servidores DNS según la función que realizan. Los más habituales son los siguientes:

Tipo ¿Hace recursión? ¿Responde a cualquier cliente? ¿Almacena zonas propias? Ejemplo
Recursivo (o caché) No (sólo guarda caché) 8.8.8.8 (Google), el DNS del router
Autoritativo No Sí (sólo sus zonas) ns1.google.com, ns1.cesguiro.es, ns1.educa.madrid.org
Forwarder No El DNS que te da tu operador y que reenvía a Google o Cloudflare
Stub No Solo información parcial No Servidores esclavos que solo quieren saber dónde está el master
  • Recursivo/caché: También conocido como servidor DNS de resolución recursiva, se encarga de realizar consultas en nombre del cliente para resolver nombres de dominio. Su función es buscar la información requerida y devolverla al cliente.
    1. Proceso de Consulta: Cuando un cliente realiza una consulta, el servidor recursivo busca la respuesta en su caché. Si no la encuentra, realiza una búsqueda iterativa a través de otros servidores DNS hasta obtener la información.
    2. Rol: Sirve como intermediario entre el cliente y los servidores DNS autoritativos. Almacena en caché las respuestas para mejorar el tiempo de respuesta en futuras consultas.
  • Autoritativo: La “fuente oficial” de un dominio. Contiene la información definitiva sobre un dominio específico. Es responsable de proporcionar respuestas finales para las consultas de los nombres de dominio que gestiona. No busca nada fuera de lo que tiene configurado; simplemente responde con la información que le corresponde.
    1. Tipos de Servidores Autoritativos:
      1. Primario (Master): Almacena la base de datos de la zona y es la fuente principal de información para esa zona.
      2. Secundario (Slave): Obtiene y almacena una copia de la base de datos de la zona desde un servidor primario, proporcionando redundancia y balanceo de carga.
    2. Rol: Proporciona respuestas directas a las consultas sobre los dominios que administra, sin necesidad de realizar consultas adicionales a otros servidores.
  • Forwarder: Actúa como intermediario. Recibe la consulta y la pasa a otro DNS más potente; muy usado para simplificar y centralizar. Es un servidor recursivo “perezoso”. En lugar de hacer él mismo todo el recorrido (raíz → TLD → autoritativo), simplemente reenvía la consulta a uno o varios servidores DNS externos que sí hacen el trabajo completo (normalmente 8.8.8.8, 1.1.1.1 u otros públicos).
    1. Ventajas:
      1. Mucho más rápido de configurar y mantiene menos caché.
      2. Centraliza el tráfico: todo sale por los forwarders externos (útil para filtrar, monitorizar o aplicar políticas de seguridad).
      3. Muy usado en redes de empresa o en routers domésticos.
    2. Ejemplo real: Tu router de casa suele estar configurado como forwarder: recibe tus consultas y las manda directamente a los DNS del operador o a Google/Cloudflare.
  • Stub: Es un tipo especial de servidor autoritativo que no guarda la zona completa, sino únicamente los registros NS (y a veces las direcciones A/AAAA de esos NS) de una zona delegada.
    1. Normalmente lo usan servidores secundarios (slave) para saber en todo momento dónde está el primario actual (por si cambian sus IPs o hay varios masters). También se usa en delegaciones internas para mantener la información mínima.
    2. Diferencia clave con un slave normal:
      1. Slave → copia toda la zona (todos los A, MX, CNAME…).
      2. Stub → solo copia los NS y sus direcciones (muy poca información).
    3. Ejemplo práctico: Imagina que tienes el dominio empresa.local delegado a dos servidores internos. Un tercer servidor DNS de tu red puede configurarse como stub para esa zona: así siempre sabe a qué IPs preguntar sin tener que almacenar ni mantener toda la zona.

En el sistema DNS, los registros DNS son entradas que contienen información sobre un dominio específico y cómo se deben manejar las solicitudes para ese dominio. Los tipos principales de registros DNS son:

  • A (Address Record): Asocia un nombre de dominio con una dirección IPv4. Es uno de los registros más fundamentales en el DNS.

www.example.com. IN A 192.0.2.1

  • AAAA (IPv6 Address Record): Similar al registro A, pero asocia un nombre de dominio con una dirección IPv6. Permite que los dominios sean accesibles a través de IPv6.

www.example.com. IN AAAA 2001:db8::1

  • CNAME (Canonical Name Record): Permite redirigir un nombre de dominio a otro nombre de dominio. No proporciona una dirección IP directamente, sino que apunta a otro dominio que debe resolverse.

www.example.com. IN CNAME example.com.

  • MX (Mail Exchange Record): Define los servidores de correo electrónico responsables de recibir correos para el dominio. Los registros MX especifican la prioridad y el nombre del servidor de correo.

example.com. IN MX 10 mail.example.com.

  • NS (Name Server Record): Indica los servidores de nombres que son responsables de la zona de dominio. Los registros NS especifican qué servidores autoritativos responden por el dominio.

example.com. IN NS ns1.example.com.

  • SOA (Start of Authority Record): Proporciona información sobre la zona de dominio, incluyendo el servidor principal, el administrador del dominio, y parámetros de actualización y expiración.

example.com. IN SOA ns1.example.com. admin.example.com. ( 2024082201 3600 1800 1209600 86400 )

  • PTR (Pointer Record): Utilizado para la resolución inversa, asociando una dirección IP con un nombre de dominio. Es esencial para algunas aplicaciones de red, como la verificación de la identidad del servidor.

68.9.217.172.in-addr.arpa. IN PTR ord38s09-in-f4.1e100.net.

Registro Significado Ejemplo de sintaxis
A Dirección IPv4 www IN A 203.0.113.10
AAAA Dirección IPv6 www IN AAAA 2001:db8::1
CNAME Alias (nombre canónico) ftp IN CNAME servidor.lab.local.
MX Servidor de correo (prioridad 0-99) @ IN MX 10 mail.lab.local.
NS Servidor DNS autoritativo del dominio @ IN NS ns1.lab.local.
PTR Resolución inversa (IP → nombre) 2 IN PTR ns1.lab.local.
TXT Texto libre (SPF, DKIM, etc.) @ IN TXT “v=spf1 a mx ~all”

En el sistema DNS, una zona es una porción del espacio de nombres de dominio que es administrada por un servidor DNS específico. La delegación de zonas permite la distribución de la administración del espacio de nombres de dominio entre diferentes servidores DNS.

  • Zona DNS: Una zona DNS es una parte del espacio de nombres que se gestiona como una unidad. Cada zona contiene información sobre un dominio y sus subdominios. Los registros DNS en una zona son responsables de la resolución de nombres para esa zona. Por ejemplo, la zona para el dominio `example.com` podría contener registros para `www.example.com`, `mail.example.com`, y otros subdominios.
  • Delegación de Zonas: La delegación ocurre cuando un dominio se divide en varias partes, y cada parte es gestionada por servidores DNS diferentes. La delegación se realiza mediante registros NS en una zona superior que apuntan a los servidores DNS de una zona inferior. Por ejemplo, si `example.com` delega la administración de `subdomain.example.com` a otro conjunto de servidores DNS, se incluirían registros NS en la zona `example.com` que apuntan a los servidores responsables de `subdomain.example.com`.
  • Zona Principal (Master): Es la zona que contiene la base de datos de zona original y es la fuente primaria de información para esa zona. Los cambios en la zona principal se replican a las zonas secundarias.
  • Zona Secundaria (Slave): Es una copia de la zona principal que se mantiene sincronizada con ella. Las zonas secundarias proporcionan redundancia y ayudan a distribuir la carga de consultas.
  • Zona de Caching: Es una zona utilizada por servidores DNS recursivos para almacenar respuestas a consultas anteriores y reducir el tiempo de resolución para consultas repetidas.

En el sistema DNS, el cacheo y el TTL (Time To Live) son fundamentales para mejorar la eficiencia y reducir el tiempo de resolución de nombres.

  • Cacheo:
    1. El cacheo permite que los servidores DNS almacenen temporalmente las respuestas a las consultas. Esto evita tener que realizar la misma búsqueda repetidamente y reduce la carga en los servidores DNS autoritativos.
    2. Cuando un servidor DNS recursivo recibe una respuesta de un servidor autoritativo, almacena esta información en su caché. Si una consulta posterior requiere la misma información, el servidor recursivo puede responder directamente desde su caché, acelerando el proceso de resolución.
    3. El cacheo ayuda a distribuir la carga de consultas entre varios servidores y reduce el tiempo de espera para el usuario final.
  • TTL (Time To Live):
    1. El TTL es un valor asociado a cada registro DNS que indica cuánto tiempo la información debe permanecer en la caché antes de que se considere obsoleta.
    2. Un TTL bajo significa que los registros se actualizan con mayor frecuencia, lo que puede ser útil para cambios rápidos en la configuración de DNS, pero puede incrementar la carga en los servidores DNS.
    3. Un TTL alto reduce la carga en los servidores DNS y mejora el rendimiento al mantener la información en caché durante más tiempo, pero puede retrasar la propagación de cambios en los registros DNS.

La seguridad en DNS es crucial para proteger la integridad y la disponibilidad de la información de resolución de nombres.

  • DNSSEC (DNS Security Extensions):
    1. DNSSEC es un conjunto de extensiones para DNS que proporciona mecanismos de autenticación e integridad de datos. Permite que los clientes verifiquen que las respuestas DNS provienen de una fuente confiable y que los datos no han sido alterados.
    2. Utiliza firmas digitales y claves criptográficas para asegurar que las respuestas DNS no sean modificadas durante el tránsito. Los registros DNSSEC incluyen datos como firmas digitales y claves públicas.
  • Ataques Comunes:
    1. Cache Poisoning: Un ataque en el que un atacante inserta información falsa en la caché de un servidor DNS, redirigiendo a los usuarios a sitios web maliciosos.
    2. DDoS (Distributed Denial of Service): Un ataque que intenta saturar los servidores DNS con un volumen masivo de consultas para hacerlos inoperativos.
    3. Spoofing: Un ataque en el que el atacante envía respuestas DNS falsas para engañar a los clientes y redirigirlos a sitios no deseados.

Existen varias herramientas y comandos útiles para consultar y gestionar la información DNS. Estos comandos permiten a los administradores de red y a los usuarios verificar la configuración de DNS y diagnosticar problemas de red.

Comando interactivo y no interactivo. Muy común en Windows.

Modo Comando Qué hace
Básico `nslookup www.cesguiro.es` Consulta A (IPv4)
Inversa `nslookup 92.222.139.190` Resolución inversa (PTR)
Solo IP `nslookup -type=A www.google.com` Fuerza registro A
Solo MX `nslookup -type=MX cesguiro.es` Servidores de correo
Cambiar servidor `nslookup www.google.com 8.8.8.8` Consulta directamente a Google DNS
Modo interactivo `nslookup` → `server 1.1.1.1` → `cesguiro.es` Cambia el servidor dentro de la sesión

Mucho más potente y legible que nslookup.

Opción Comando ejemplo Resultado esperado
Solo la respuesta (limpio) `dig +noall +answer www.cesguiro.es` → `www.cesguiro.es. 3600 IN A 92.222.139.190`
Muy corto (solo el dato) `dig +short www.cesguiro.es` → `92.222.139.190`
Solo respuesta + TTL `dig +noall +answer +ttl www.cesguiro.es` → `www.cesguiro.es. 3589 IN A 92.222.139.190`
Registro específico `dig cesguiro.es MX +short` → `10 mail.cesguiro.es.`
Resolución inversa `dig -x 8.8.8.8 +short` → `dns.google.`
Traza completa (raíz → autoritativo) `dig +trace www.educa.madrid.org` Muestra todo el camino (ideal para entender la jerarquía)

Solo sección ANSWER | `dig +nocmd +noquestion +noadditional +noauthority +answer www.google.com` | Solo la línea con la IP | Consultar a servidor concreto | `dig @1.1.1.1 cesguiro.es` | Fuerza consulta a Cloudflare | Todos los registros (ANY) | `dig cesguiro.es ANY +short` | A, MX, NS, TXT… (cuidado: algunos servidores lo bloquean)

Información del registro del dominio.

Opción Comando ejemplo Qué hace
Básico `whois cesguiro.es` Toda la información del dominio
Solo registrador `whois -h whois.nic.es cesguiro.es` Fuerza servidor whois de .es
Solo fechas `whois cesguiro.es | grep -i date` Fechas de creación/expiración
Ocultar datos legales `whois google.com` (muchos .com los ocultan por RGPD) En .es suele verse el titular

Todos los comandos se ejecutan en la VM Alpine Linux (no en el host Windows, donde `dig` no está disponible por defecto).

Primero, instala las herramientas en la VM:

  
apk update  
apk add bind-tools  # Incluye dig, nslookup, whois  

Ejercicio 1

  • Utiliza nslookup para encontrar la dirección IP de www.google.com.
  • Utiliza dig para realizar la misma consulta y compara los resultados.
  • ¿Por qué podrían diferir las direcciones IP obtenidas con nslookup y dig?
  • Realiza una búsqueda inversa para obtener el nombre de dominio asociado a la dirección IP 172.217.9.68 utilizando dig -x.
  • Compara los resultados con nslookup.

Ejercicio 2

  • Utiliza dig para obtener el registro A y el registro AAAA de www.example.com.
  • Compara la información obtenida para direcciones IPv4 e IPv6.
  • Consulta los registros MX para example.com usando dig.
  • Consulta el registro CNAME para www.github.com y explica qué información proporciona.

Ejercicio 3

  • Realiza una consulta para www.example.com y documenta cada paso del proceso de resolución de nombres DNS, desde la consulta inicial hasta la respuesta final, utilizando dig +trace.

Ejercicio 4

  • Consulta el registro A de www.example.org utilizando dig y observa el valor de TTL.
  • Realiza una consulta de DNS para www.example.com y anota el tiempo de respuesta.
  • Repite la consulta varias veces y discute cómo el caché del servidor DNS afecta los tiempos de respuesta.

Ejercicio 5

  • Investiga y documenta al menos dos tipos comunes de ataques DNS (como el ataque de envenenamiento de caché o el ataque DDoS) y cómo se pueden mitigar.

Ejercicio 6

  • Utiliza el comando whois para obtener información sobre el dominio openai.com y describe la información obtenida.

Ejercicio 7

  • Escoge un dominio al azar y realiza una serie completa de consultas DNS utilizando nslookup y dig para los registros A, AAAA, MX, y CNAME.
  • Analiza el proceso de resolución de nombres para ese dominio, incluyendo el paso a paso de la consulta, el cacheo, el TTL, y la seguridad DNS.
  • Simula un escenario en el que un dominio no se resuelve correctamente y utiliza las herramientas nslookup, dig, y whois para diagnosticar y resolver el problema.
  • clase/smr/sr/2eval/dns.txt
  • Última modificación: 2025/11/25 10:31
  • por cesguiro