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:
Cache do Navegador (segundos para minutos)
↓
Cache do SO (segundos para minutos)
↓
Cache do Resolvedor Local (minutos para horas)
↓
Cache do Resolvedor ISP (minutos para horas)
↓
Servidor de Nome Autoritativo (fonte de verdade)
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 em segundos (5 minutos)
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# Ver cache
ipconfig /displaydns
# Limpar cache
ipconfig /flushdns
macOS: mDNSResponder lida com cache
# Limpar cache (macOS 10.15+)
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
Linux: Varia por sistema, frequentemente systemd-resolved
# Limpar cache systemd-resolved
sudo systemd-resolve --flush-caches
# Ver estatísticas
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
Consulta 1: example.com
→ Busca completa: 50ms
→ Em cache por 300s (TTL)
Consulta 2: example.com (1 minuto depois)
→ Hit em cache: 1ms
Consulta 3: example.com (10 minutos depois)
→ Cache expirado, busca completa: 50ms
→ Re-armazenado em cache por 300s
Atualização de Registro de DNS
Original: example.com → 203.0.113.50 (TTL: 300s)
Horário: 10:00 - DNS atualizado para 203.0.113.51
Cliente consulta às 10:02
→ Ainda em cache: 203.0.113.50 (expira 10:05)
Cliente consulta às 10:06
→ Cache expirado, nova busca: 203.0.113.51
→ Em cache até 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:
Dia -7: example.com TTL 3.600s (1 hora)
Dia -2: Reduzir para 300s (5 minutos)
Dia 0: Fazer mudança de DNS
→ Retenção máxima de cache 5 minutos
Dia +1: Restaurar TTL para 3.600s
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
# Ver logs em Console.app
Linux (systemd-resolved):
sudo systemd-resolve --statistics
Testar Comportamento de Cache
# Primeira consulta (miss em cache)
time dig example.com
# Repetição imediata (hit em cache)
time dig example.com
# Comparar tempos
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:
Consulta: newsubdomain.example.com
Resposta: NXDOMAIN (não existe)
Armazenado em cache: 3.600s (TTL mínimo SOA)
Resultado: Novo subdomínio não será resolvido por 1 hora
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:
Navegar para: chrome://net-internals/#dns
Clic: "Clear host cache"
Firefox:
Alternar network.dnsCacheExpiration em about:config
Ou reiniciar navegador
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
Prefetching
Navegadores e resolvedores podem prefetch DNS para links em uma página:
<!-- Sugestão ao navegador -->
<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.