Software · Infraestrutura & Sistemas
Domain Name System (DNS): Resolução Hierárquica, Registros e Roteamento Anycast em Nuvem
Da consulta do resolver recursivo aos servidores autoritativos: a mecânica interna do DNS, estratégias de TTL, mitigação de falhas e balanceamento de tráfego global em arquiteturas distribuídas.
A navegação na internet e a comunicação entre microsserviços em nuvem apoiam-se em uma camada invisível de tradução. Computadores e roteadores operam exclusivamente por endereçamento numérico através do Internet Protocol (IPv4 e IPv6), mas sistemas distribuídos e seres humanos dependem de identificadores alfanuméricos estáveis e expressivos. O Domain Name System (DNS) é o banco de dados distribuído e hierárquico responsável por essa correspondência, funcionando como a infraestrutura de diretório de toda a rede global.
Longe de ser uma simples tabela de pesquisa estática, o DNS moderno atua como a primeira linha de balanceamento de carga, isolamento de falhas e roteamento por proximidade geográfica em provedores de computação em nuvem e redes de distribuição de conteúdo (CDNs).
A Árvore Hierárquica de Resolução de Nomes
Nenhum servidor central possui o mapa completo da internet. Em vez disso, o espaço de nomes de domínio é particionado em zonas delegadas organizadas em árvore invertida:
flowchart TD
Root["1. Servidores Raiz (.)<br/>13 clusters lógicos Anycast em centenas de locais físicos"] --> TLD["2. Servidores TLD (Top-Level Domain)<br/>Domínios genéricos (.com, .org) e territoriais (.br, .io)"]
TLD --> Auth["3. Servidores Autoritativos (ex: ns1.exemplo.com.br)<br/>Hospedam os registros oficiais da zona configurada"]
Auth --> Host["4. Recursos Finais<br/>Endereços IP (A/AAAA), Canonical Names (CNAME), MX, TXT"]
Quando um cliente requisita um endereço como api.exemplo.com.br, a consulta percorre essa cadeia quando não há registros presentes nos caches locais:
sequenceDiagram
autonumber
actor Cliente as Navegador / App
participant Resolver as Recursive Resolver (ISP / 1.1.1.1)
participant Root as Root Server (.)
participant TLD as TLD Server (.br)
participant Auth as Servidor Autoritativo
Cliente->>Resolver: Consulta "api.exemplo.com.br"
Note over Resolver: Verifica cache local. Se ausente:
Resolver->>Root: Quem responde por ".br"?
Root-->>Resolver: Referência: Servidores TLD Registro.br
Resolver->>TLD: Quem responde por "exemplo.com.br"?
TLD-->>Resolver: Referência: NS autoritativo da zona
Resolver->>Auth: Qual o registro A/AAAA de "api.exemplo.com.br"?
Auth-->>Resolver: Retorna IP 203.0.113.50 (TTL: 300s)
Resolver-->>Cliente: Entrega IP ao cliente e armazena em cache
Dicionário de Registros DNS Essenciais
A configuração correta de uma zona DNS exige compreender as responsabilidades de cada tipo de registro e suas restrições operacionais.
| Tipo de Registro | Função Primária | Exemplo de Valor | Restrições e Particularidades |
|---|---|---|---|
| A | Mapeia nome para endereço IPv4 de 32 bits | 198.51.100.24 |
Obrigatório para resolução direta IPv4. |
| AAAA | Mapeia nome para endereço IPv6 de 128 bits | 2001:0db8:85a3::8a2e:0370:7334 |
Recomendado para conformidade dual-stack moderna. |
| CNAME | Cria alias canônico apontando para outro domínio | lb-ext.azurewebsites.net. |
Não pode coexistir com outros registros no apex (@). |
| ALIAS / ANAME | Pseudo-registro que resolve CNAME em nível de apex | Aponta para CNAME mas responde como A/AAAA | Solução técnica de provedores DNS modernos para o apex. |
| MX | Roteia tráfego de e-mail com prioridades | 10 mail.provedor.com. |
Valor numérico menor indica maior prioridade de entrega. |
| TXT | Armazena texto arbitrário e validações de domínio | v=spf1 include:_spf.google.com ~all |
Usado para SPF, DKIM, DMARC e validação de certificados SSL. |
| CAA | Restringe quais autoridades certificadoras emitem SSL | 0 issue "letsencrypt.org" |
Previne emissão fraudulenta de certificados por CAs não autorizadas. |
| SRV | Localização de serviços por protocolo e porta | _sip._tcp.exemplo.com. 0 5 5060 sip.exemplo.com. |
Padrão para descoberta de serviços VoIP, Active Directory e Kubernetes. |
Dinâmica de Cache e o Impacto Crítico do TTL
O Time to Live (TTL) define quantos segundos um servidor de DNS recursivo ou um sistema operacional pode manter uma resposta em cache antes de realizar uma nova consulta aos servidores autoritativos.
Definir o TTL é um compromisso direto entre tolerância a falhas e velocidade de propagação:
-
TTL Longo (ex: 86.400 segundos / 24 horas):
- Vantagens: Reduz o volume de consultas aos servidores autoritativos, diminui a latência percebida pelos usuários e protege a aplicação caso o servidor DNS autoritativo sofra instabilidades transitórias.
- Riscos: Em caso de falha física de um datacenter ou necessidade de migração emergencial de IP, os clientes continuarão enviando tráfego para o endereço antigo durante horas, amplificando o tempo de indisponibilidade (RTO).
-
TTL Curto (ex: 60 a 300 segundos):
- Vantagens: Permite migrações quase em tempo real e chaveamentos rápidos de failover entre datacenters.
- Riscos: Aumenta a quantidade de requisições DNS geradas pela internet, expondo as conexões a pequenos atrasos na resolução inicial do handshake de rede.
Em procedimentos planejados de manutenção ou migração de servidores em nuvem, a boa prática de engenharia dita reduzir o TTL para 300 segundos com alguns dias de antecedência. Após a estabilização da nova infraestrutura, o valor pode ser gradativamente restaurado para patamares mais econômicos.
DNS Anycast e Alta Disponibilidade Global
No modelo unicast tradicional, um endereço IP corresponde a uma única placa de rede física ou virtual em um servidor específico. Se essa máquina cair ou se a rota de rede sofrer saturação, o tráfego é interrompido.
Com o roteamento Anycast, o mesmo endereço IP público é anunciado simultaneamente por dezenas de datacenters distribuídos pelo planeta via protocolo BGP (Border Gateway Protocol):
flowchart LR
UserBR["Usuário em São Paulo"] --> BGP["Roteamento BGP"]
UserEU["Usuário em Frankfurt"] --> BGP
BGP -->|"Menor salto AS"| NodeSP["Edge POP São Paulo (IP: 198.51.100.1)"]
BGP -->|"Menor salto AS"| NodeFR["Edge POP Frankfurt (IP: 198.51.100.1)"]
O protocolo de roteamento da internet direciona cada pacote para o nó fisicamente mais próximo em número de saltos de rede autônomos (Autonomous Systems). Se o ponto de presença em São Paulo for desligado para manutenção, os roteadores BGP convergem automaticamente e encaminham as próximas consultas para o próximo POP mais próximo (como Santiago ou Miami), sem que o cliente receba qualquer mensagem de erro de resolução.
Split-Horizon DNS em Nuvem Privada
Em arquiteturas corporativas e ambientes em nuvem gerenciados (Azure Private DNS, AWS Route 53 Private Zones), emprega-se a técnica de Split-Horizon (ou Split-DNS).
O mesmo nome de domínio (db-interno.exemplo.com.br) possui duas respostas distintas dependendo da origem da consulta:
- Origem Externa (Internet pública): O servidor autoritativo retorna erro NXDOMAIN ou aponta para um IP de firewall de inspeção de borda.
- Origem Interna (VNet / Subnet privada): O servidor DNS interno retorna o endereço IP privado da máquina (ex:
10.0.4.15), impedindo o vazamento de topologia de infraestrutura confidencial para o tráfego público e garantindo que o tráfego entre microsserviços nunca saia do backbone protegido da nuvem.