====== 05 - DNS ======
[[https://es.wikipedia.org/wiki/Sistema_de_nombres_de_dominio|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.
===== 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.
* **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.
{{ :clase:smr:sr:1eval:dns.png?400 |}}
===== Tipos de Servidores DNS =====
En el sistema DNS, existen varios tipos de servidores que desempeñan roles específicos en la resolución de nombres de dominio. Los dos tipos principales de servidores DNS son:
* **Servidor DNS Recursivo:** 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.
* **Servidor DNS Autoritativo:** Este servidor 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.
- **Tipos de Servidores Autoritativos:**
- **Primario (Master):** Almacena la base de datos de la zona y es la fuente principal de información para esa zona.
- **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.
- **Rol:** Proporciona respuestas directas a las consultas sobre los dominios que administra, sin necesidad de realizar consultas adicionales a otros servidores.
===== 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
;#;
* **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.
;#;
===== 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 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.
{{ :clase:smr:sr:1eval:dns-zone.png?400 |}}
===== 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.
{{ :clase:smr:sr:1eval:ttl.png?400 |}}
===== 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:**: Herramienta de línea de comandos que permite realizar consultas de DNS. Puede ser utilizada para obtener la dirección IP de un nombre de dominio o viceversa.
nslookup example.com
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
Name: example.com
Address: 93.184.215.14
Name: example.com
Address: 2606:2800:21f:cb07:6820:80da:af6b:8b2c
nslookup 8.8.8.8
8.8.8.8.in-addr.arpa name = dns.google.
Authoritative answers can be found from:
* **dig:**: Herramienta de línea de comandos más avanzada que proporciona información detallada sobre registros DNS. Es ampliamente utilizada para diagnóstico y resolución de problemas DNS.
dig www.example.com
; <<>> DiG 9.18.28-0ubuntu0.20.04.1-Ubuntu <<>> www.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30652
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;www.example.com. IN A
;; ANSWER SECTION:
www.example.com. 3488 IN A 93.184.215.14
;; Query time: 8 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Fri Aug 23 11:21:27 CEST 2024
;; MSG SIZE rcvd: 60
dig www.example.com MX
<<>> DiG 9.18.28-0ubuntu0.20.04.1-Ubuntu <<>> www.example.com MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53976
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;www.example.com. IN MX
* **whois:**: Comando utilizado para obtener información sobre el registro de un dominio, incluyendo el propietario, los servidores DNS asociados y los datos de contacto.
whois example.com
Domain Name: EXAMPLE.COM
Registry Domain ID: 2336799_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.iana.org
Registrar URL: http://res-dom.iana.org
Updated Date: 2024-08-14T07:01:34Z
Creation Date: 1995-08-14T04:00:00Z
Registry Expiry Date: 2025-08-13T04:00:00Z
Registrar: RESERVED-Internet Assigned Numbers Authority
Registrar IANA ID: 376
Registrar Abuse Contact Email:
Registrar Abuse Contact Phone:
Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited
Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
Domain Status: clientUpdateProhibited https://icann.org/epp#clientUpdateProhibited
Name Server: A.IANA-SERVERS.NET
Name Server: B.IANA-SERVERS.NET
DNSSEC: signedDelegation
DNSSEC DS Data: 370 13 2 BE74359954660069D5C63D200C39F5603827D7DD02B56F120EE9F3A86764247C
URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf/
Algunos TLDs (dominios de nivel superior) pueden no tener un servidor whois dedicado. Por ejemplo, para dominios con el TLD **.es**, la consulta whois se puede realizar a través del servicio web proporcionado por [[https://www.dominios.es/es|dominios.es]]
===== Ejercicios =====
**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.