¿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:
Browser Cache (seconds to minutes)
↓
OS Cache (seconds to minutes)
↓
Local Resolver Cache (minutes to hours)
↓
ISP Resolver Cache (minutes to hours)
↓
Authoritative Name Server (source of truth)
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 in seconds (5 minutes)
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é# View cache
ipconfig /displaydns
# Flush cache
ipconfig /flushdns
macOS: mDNSResponder maneja el almacenamiento en caché
# Flush cache (macOS 10.15+)
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
Linux: Varía según el sistema, a menudo systemd-resolved
# Flush systemd-resolved cache
sudo systemd-resolve --flush-caches
# Check statistics
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
Query 1: example.com
→ Full lookup: 50ms
→ Cached for 300s (TTL)
Query 2: example.com (1 minute later)
→ Cache hit: 1ms
Query 3: example.com (10 minutes later)
→ Cache expired, full lookup: 50ms
→ Re-cached for 300s
Actualización de registro DNS
Original: example.com → 203.0.113.50 (TTL: 300s)
Time: 10:00 - DNS updated to 203.0.113.51
Client queries at 10:02
→ Still cached: 203.0.113.50 (expires 10:05)
Client queries at 10:06
→ Cache expired, new lookup: 203.0.113.51
→ Cached until 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:
Day -7: example.com TTL 3600s (1 hour)
Day -2: Reduce to 300s (5 minutes)
Day 0: Make DNS change
→ Max 5 minute cache retention
Day +1: Restore TTL to 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
# Check Console.app for logs
Linux (systemd-resolved):
sudo systemd-resolve --statistics
Probar comportamiento de caché
# First query (cache miss)
time dig example.com
# Immediate repeat (cache hit)
time dig example.com
# Compare times
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é:
Query: newsubdomain.example.com
Response: NXDOMAIN (does not exist)
Cached: 3600s (SOA minimum TTL)
Result: New subdomain won't resolve for 1 hour
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:
Navigate to: chrome://net-internals/#dns
Click: "Clear host cache"
Firefox:
Toggle network.dnsCacheExpiration in about:config
Or restart browser
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é
Precarga
Los navegadores y resolutores pueden hacer prefetch de DNS para enlaces en una página:
<!-- Hint to browser -->
<link rel="dns-prefetch" href="//cdn.example.com">
Cache Warming: precalentamiento de caché
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.