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.
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.
Funcionamiento básico
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.
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)
Cliente pregunta al recursivo local.
Recursivo consulta caché; si no, va a raíz (obtiene TLD .es).
Raíz envía a servidores TLD (.es, obtiene ns1.cesguiro.es).
TLD envía a autoritativo (ns1.cesguiro.es, obtiene IP 192.0.2.1).
Autoritativo responde; recursivo guarda en caché y devuelve al cliente.
Tipos de Servidores DNS
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é) | Sí | Sí | No (sólo guarda caché) | 8.8.8.8 (Google), el DNS del router |
| Autoritativo | No | Sí (sólo sus zonas) | Sí | ns1.google.com, ns1.cesguiro.es, ns1.educa.madrid.org |
| Forwarder | Sí | Sí | 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.
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.
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.
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).
Ventajas:
Mucho más rápido de configurar y mantiene menos caché.
Centraliza el tráfico: todo sale por los forwarders externos (útil para filtrar, monitorizar o aplicar políticas de seguridad).
Muy usado en redes de empresa o en routers domésticos.
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.
Registros DNS
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
www.example.com. IN AAAA 2001:db8::1
www.example.com. IN CNAME example.com.
example.com. IN MX 10 mail.example.com.
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” |
Zonas DNS y Delegación
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 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.
Cacheo y TTL
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:
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.
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.
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):
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.
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.
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.
Seguridad en 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):
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.
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:
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.
DDoS (Distributed Denial of Service): Un ataque que intenta saturar los servidores
DNS con un volumen masivo de consultas para hacerlos inoperativos.
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.
Herramientas y Comandos
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.
nslookup
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 |
dig (la herramienta favorita de Linux)
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) |
whois
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 |
Ejercicios
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
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
Ejercicio 7