O que é Cache de DNS?
O cache de DNS é o armazenamento temporário dos resultados de consultas de DNS por resolvedores, sistemas operacionais, navegadores e aplicações. Quando uma busca de DNS é realizada, o resultado é armazenado em cache por um período definido pelo TTL (Time To Live) do registro, permitindo que solicitações posteriores para o mesmo domínio sejam respondidas instantaneamente sem consultar os servidores autoritativos.
Por que o Cache de DNS é Importante
Sem cache, cada solicitação web única exigiria uma busca de DNS completa, adicionando latência e gerando tráfego de DNS massivo. O cache de DNS oferece:
- Tempos de Resposta Mais Rápidos: Respostas em cache retornam em microssegundos vs milissegundos para buscas completas
- Tráfego de Rede Reduzido: Menos consultas para servidores autoritativos
- Resiliência Melhorada: Cache local fornece respostas mesmo se servidores DNS estiverem temporariamente indisponíveis
- Carga de Servidor Reduzida: Servidores autoritativos lidam com menos consultas
Como Funciona o Cache de DNS
A Hierarquia de Cache
O cache de DNS ocorre em vários níveis:
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)
Processo de Consulta em Cache
1. Usuário solicita example.com
2. Navegador verifica seu cache
3. Se miss, SO verifica seu cache
4. Se miss, resolvedor verifica seu cache
5. Se miss, consulta recursiva aos servidores autoritativos
6. Resultado em cache em cada nível com base no TTL
7. Resposta retornada ao usuário
Expiração Baseada em TTL
Cada registro de DNS inclui um valor de TTL:
example.com. 300 IN A 203.0.113.50
^^^
TTL in seconds (5 minutes)
Os caches armazenam este registro por 300 segundos e depois o descartam. A próxima consulta dispara uma busca atualizada.
Camadas de Cache de DNS
Cache do Navegador
Os navegadores modernos armazenam resultados de DNS independentemente:
Chrome: Usa seu próprio cache de DNS (chrome://net-internals/#dns) Firefox: Mantém cache interno (about:networking#dns) Safari: Usa resolvedor do sistemaTTL do cache típico do navegador: 60 segundos (independentemente do TTL de DNS)
Cache do Sistema Operacional
Windows: Serviço de Cliente DNS armazena em cache resultados# View cache
ipconfig /displaydns
# Flush cache
ipconfig /flushdns
macOS: mDNSResponder lida com cache
# Flush cache (macOS 10.15+)
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
Linux: Varia por sistema, frequentemente systemd-resolved
# Flush systemd-resolved cache
sudo systemd-resolve --flush-caches
# Check statistics
sudo systemd-resolve --statistics
Cache do Resolvedor
Resolvedores DNS recursivos (DNS ISP, 8.8.8.8, 1.1.1.1) mantêm caches grandes servindo milhões de usuários:
| Resolvedor | Estratégia de Cache |
|---|---|
| Google (8.8.8.8) | Respeita TTL, cache global |
| Cloudflare (1.1.1.1) | Respeita TTL, distribuído |
| Resolvedores ISP | Podem ignorar TTLs baixos |
Exemplos de Comportamento de Cache
Operação 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
Atualização de Registro de 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
Estratégia de TTL e Cache
Escolhendo Valores de TTL
| Caso de Uso | TTL Recomendado | Motivo |
|---|---|---|
| Infraestrutura estática | 3.600-86.400s (1-24 horas) | Raramente muda, reduz carga de DNS |
| Website em produção | 300-1.800s (5-30 minutos) | Equilibra desempenho e flexibilidade |
| Migração ativa | 60-300s (1-5 minutos) | Propagação mais rápida durante mudanças |
| Balanceamento de carga | 60-120s | Failover rápido quando servidores mudam |
Redução de TTL Pré-Migração
Melhor prática ao planejar mudanças de 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
Envenenamento de Cache e Segurança
Ataque de Envenenamento de Cache de DNS
Os atacantes tentam injetar registros de DNS falsos em caches:
1. Atacante inunda resolvedor com respostas falsas
2. Se uma corresponder a uma consulta pendente, é armazenada em cache
3. Usuários recebem IP malicioso para domínio legítimo
4. Cache envenenado fornecido a muitos usuários
Mitigações de Segurança
DNSSEC: Registros assinados criptograficamente previnem envenenamentoexample.com. IN A 203.0.113.50
IN RRSIG A 8 2 300 ...
Randomização de Porta de Origem: Torna respostas mais difíceis de falsificar
Codificação 0x20: Caso aleatório em consultas ajuda validação
Segurança do Resolvedor: Use resolvedores reputados (Cloudflare, Google, Quad9)
Verificando Cache de DNS
Ver Conteúdo do Cache
Windows:ipconfig /displaydns | more
macOS (informações limitadas):
sudo killall -INFO mDNSResponder
# Check Console.app for logs
Linux (systemd-resolved):
sudo systemd-resolve --statistics
Testar Comportamento de Cache
# First query (cache miss)
time dig example.com
# Immediate repeat (cache hit)
time dig example.com
# Compare times
Problemas Relacionados a Cache
Cache Antigo Após Mudança de DNS
Problema: Registros DNS atualizados não refletem para usuários Solução:1. Aguardar TTL expirar
2. Reduzir TTL antes de mudanças futuras
3. Pedir aos usuários para limpar cache local
Cache Excessivamente Agressivo
Alguns ISPs ignoram TTL e cache mais tempo:
Problema: Mudanças levam horas/dias para se propagarem Solução:- Usar TTLs mais baixos (ISPs geralmente respeitam 300s mínimo)
- Considerar DNS anycast para serviços críticos
- Documentar ISPs problemáticos conhecidos
Cache Negativo
Buscas com falha (NXDOMAIN) também são armazenadas em cache:
Query: newsubdomain.example.com
Response: NXDOMAIN (does not exist)
Cached: 3600s (SOA minimum TTL)
Result: New subdomain won't resolve for 1 hour
Solução: Reduzir TTL mínimo de SOA antes de adicionar novos registros
Limpando Cache de DNS
Quando Limpar
- Testando mudanças de DNS imediatamente
- Solucionando problemas de resolução
- Após migração de provedor de DNS
- Suspeita de envenenamento de cache
Como Limpar
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
Melhores Práticas
1. Definir TTLs apropriados: Equilibrar desempenho e velocidade de mudança
2. Reduzir TTL antes de mudanças: Reduzir 24-48 horas antes de atualizações de DNS
3. Monitorar propagação: Usar ferramentas para verificar resolução de DNS global
4. Documentar comportamento de cache: Compreender as camadas de cache da infraestrutura
5. Usar DNSSEC: Proteger contra envenenamento de cache
6. Testar completamente: Verificar que mudanças de DNS funcionam como esperado
7. Educar usuários: Fornecer instruções claras para limpeza de cache quando necessário
Conceitos Avançados de Cache
Pré-carregamento
Navegadores e resolvedores podem prefetch DNS para links em uma página:
<!-- Hint to browser -->
<link rel="dns-prefetch" href="//cdn.example.com">
Aquecimento de Cache
Balanceadores de carga e CDNs podem pré-popular caches para registros críticos.
Anycast e Cache
DNS Anycast roteia consultas para servidor mais próximo, criando caches geograficamente distribuídos para desempenho ideal.
O cache de DNS é fundamental para o desempenho da internet — entender e configurar corretamente TTLs garante que mudanças de DNS se propaguem eficientemente enquanto mantém tempos de resolução rápidos.