¿Qué es una Caché DNS?
El almacenamiento en caché DNS es el almacenamiento temporal de resultados de consultas DNS por resolutores, sistemas operativos, navegadores y aplicaciones. Cuando se realiza una búsqueda DNS, el resultado se almacena en caché durante un período definido por el TTL (Time To Live) del registro, lo que permite que las solicitudes posteriores del mismo dominio se respondan instantáneamente sin consultar servidores autorizados.
Por qué importa el almacenamiento en caché DNS
Sin almacenamiento en caché, cada solicitud web requeriría una búsqueda DNS completa, agregando latencia y generando un tráfico DNS masivo. El almacenamiento en caché DNS proporciona:
- Tiempos de respuesta más rápidos: Las respuestas en caché se devuelven en microsegundos frente a milisegundos para búsquedas completas
- Tráfico de red reducido: Menos consultas a servidores autorizados
- Resiliencia mejorada: La caché local proporciona respuestas incluso si los servidores DNS no están disponibles temporalmente
- Carga de servidor reducida: Los servidores autorizados manejan menos consultas
Cómo funciona el almacenamiento en caché DNS
La jerarquía de almacenamiento en caché
El almacenamiento en caché DNS ocurre en múltiples niveles:
Navegador Cache (segundos a minutos)
↓
OS Cache (segundos a minutos)
↓
Local Resolver Cache (minutos a horas)
↓
ISP Resolver Cache (minutos a horas)
↓
Authoritative Name Server (fuente de verdad)
Proceso de búsqueda en caché
1. El usuario solicita example.com
2. El navegador comprueba su caché
3. Si no está, el OS comprueba su caché
4. Si no está, el resolver comprueba su caché
5. Si no está, consulta recursiva a servidores autorizados
6. El resultado se almacena en caché en cada nivel según el TTL
7. La respuesta se devuelve al usuario
Expiración basada en TTL
Cada registro DNS incluye un valor TTL:
example.com. 300 IN A 203.0.113.50
^^^
TTL en segundos (5 minutos)
Las cachés almacenan este registro durante 300 segundos y luego lo descartan. La siguiente consulta activa una búsqueda nueva.
Capas de caché DNS
Caché del navegador
Los navegadores modernos almacenan resultados DNS de forma independiente:
Chrome: Utiliza su propia caché DNS (chrome://net-internals/#dns) Firefox: Mantiene caché interna (about:networking#dns) Safari: Utiliza el resolver del sistemaTTL típico de caché del navegador: 60 segundos (independientemente del TTL de DNS)
Caché del sistema operativo
Windows: El servicio DNS Client almacena resultados en caché# Ver caché
ipconfig /displaydns
# Vaciar caché
ipconfig /flushdns
macOS: mDNSResponder maneja el almacenamiento en caché
# Vaciar caché (macOS 10.15+)
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
Linux: Varía según el sistema, a menudo systemd-resolved
# Vaciar caché de systemd-resolved
sudo systemd-resolve --flush-caches
# Comprobar estadísticas
sudo systemd-resolve --statistics
Caché del resolver
Los resolutores DNS recursivos (ISP DNS, 8.8.8.8, 1.1.1.1) mantienen cachés grandes que sirven a millones de usuarios:
| Resolver | Estrategia de caché |
|---|---|
| Google (8.8.8.8) | Respeta TTL, caché global |
| Cloudflare (1.1.1.1) | Respeta TTL, distribuido |
| Resolutores de ISP | Pueden ignorar TTLs bajos |
Ejemplos de comportamiento de caché
Operación normal
Consulta 1: example.com
→ Búsqueda completa: 50ms
→ Almacenada en caché durante 300s (TTL)
Consulta 2: example.com (1 minuto después)
→ Acierto de caché: 1ms
Consulta 3: example.com (10 minutos después)
→ Caché expirada, búsqueda completa: 50ms
→ Re-almacenada en caché durante 300s
Actualización de registro DNS
Original: example.com → 203.0.113.50 (TTL: 300s)
Hora: 10:00 - DNS actualizado a 203.0.113.51
Cliente consulta a las 10:02
→ Todavía en caché: 203.0.113.50 (expira 10:05)
Cliente consulta a las 10:06
→ Caché expirada, nueva búsqueda: 203.0.113.51
→ Almacenada en caché hasta 10:11
Estrategia de TTL y almacenamiento en caché
Elegir valores TTL
| Caso de uso | TTL recomendado | Razonamiento |
|---|---|---|
| Infraestructura estática | 3600-86400s (1-24 horas) | Rara vez cambia, reduce carga DNS |
| Sitio web de producción | 300-1800s (5-30 minutos) | Balance entre rendimiento y flexibilidad |
| Migración activa | 60-300s (1-5 minutos) | Propagación más rápida durante cambios |
| Balanceo de carga | 60-120s | Conmutación rápida cuando cambian servidores |
Reducción de TTL previa a la migración
Mejor práctica cuando se planean cambios DNS:
Día -7: example.com TTL 3600s (1 hora)
Día -2: Reducir a 300s (5 minutos)
Día 0: Realizar cambio DNS
→ Retención máxima de caché de 5 minutos
Día +1: Restaurar TTL a 3600s
Envenenamiento de caché y seguridad
Ataque de envenenamiento de caché DNS
Los atacantes intentan inyectar registros DNS falsos en las cachés:
1. El atacante inunda el resolver con respuestas falsas
2. Si uno coincide con una consulta pendiente, se almacena en caché
3. Los usuarios reciben una IP maliciosa para un dominio legítimo
4. El envenenamiento en caché se sirve a muchos usuarios
Mitigaciones de seguridad
DNSSEC: Registros firmados criptográficamente previenen el envenenamientoexample.com. IN A 203.0.113.50
IN RRSIG A 8 2 300 ...
Aleatorización de puerto de origen: Hace que las respuestas sean más difíciles de falsificar
Codificación 0x20: Mayúsculas aleatorias en consultas ayuda en la validación
Seguridad del resolver: Utiliza resolutores acreditados (Cloudflare, Google, Quad9)
Comprobar caché DNS
Ver contenidos de caché
Windows:ipconfig /displaydns | more
macOS (información limitada):
sudo killall -INFO mDNSResponder
# Ver Console.app para registros
Linux (systemd-resolved):
sudo systemd-resolve --statistics
Probar comportamiento de caché
# Primera consulta (fallo de caché)
time dig example.com
# Repetición inmediata (acierto de caché)
time dig example.com
# Comparar tiempos
Problemas relacionados con caché
Caché obsoleta después del cambio DNS
Problema: Los registros DNS actualizados no se reflejan para los usuarios Solución:1. Esperar a que expire el TTL
2. Reducir el TTL antes de cambios futuros
3. Pedir a los usuarios que vacíen la caché local
Almacenamiento en caché demasiado agresivo
Algunos ISP ignoran TTL y almacenan en caché más tiempo:
Problema: Los cambios tardan horas/días en propagarse Solución:- Usar TTLs bajos (los ISP suelen respetar mínimo de 300s)
- Considerar DNS anycast para servicios críticos
- Documentar ISP problemáticos conocidos
Almacenamiento en caché negativo
Las búsquedas fallidas (NXDOMAIN) también se almacenan en caché:
Consulta: newsubdomain.example.com
Respuesta: NXDOMAIN (no existe)
Almacenada en caché: 3600s (TTL mínimo SOA)
Resultado: El nuevo subdominio no se resolverá durante 1 hora
Solución: Reducir TTL mínimo de SOA antes de agregar nuevos registros
Vaciar caché DNS
Cuándo vaciar
- Probar cambios DNS inmediatamente
- Solucionar problemas de resolución
- Después de migración de proveedor de DNS
- Sospecha de envenenamiento de caché
Cómo vaciar
Windows:ipconfig /flushdns
macOS:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
Linux (systemd-resolved):
sudo systemd-resolve --flush-caches
Chrome:
Navegar a: chrome://net-internals/#dns
Hacer clic en: "Clear host cache"
Firefox:
Alternar network.dnsCacheExpiration en about:config
O reiniciar navegador
Mejores prácticas
1. Establecer TTLs apropiados: Balance entre rendimiento y velocidad de cambio
2. Reducir TTL antes de cambios: Reducir TTL 24-48 horas antes de actualizar DNS
3. Monitorizar propagación: Usar herramientas para verificar resolución DNS global
4. Documentar comportamiento de caché: Comprender las capas de almacenamiento en caché de la infraestructura
5. Usar DNSSEC: Proteger contra envenenamiento de caché
6. Probar minuciosamente: Verificar que los cambios DNS funcionan según lo esperado antes de dar por finalizado
7. Educar a los usuarios: Proporcionar instrucciones claras para vaciar caché cuando sea necesario
Conceptos avanzados de almacenamiento en caché
Prefetching
Los navegadores y resolutores pueden hacer prefetch de DNS para enlaces en una página:
<!-- Sugerencia al navegador -->
<link rel="dns-prefetch" href="//cdn.example.com">
Cache Warming
Los balanceadores de carga y CDN pueden rellenar cachés previamente para registros críticos.
Anycast y almacenamiento en caché
DNS anycast encamina consultas al servidor más cercano, creando cachés distribuidas geográficamente para un rendimiento óptimo.
El almacenamiento en caché DNS es fundamental para el rendimiento de internet: comprender y configurar adecuadamente los TTLs garantiza que los cambios DNS se propaguen eficientemente mientras se mantienen tiempos de resolución rápidos.