O Unbound é um dos resolvers DNS mais rápidos e confiáveis disponíveis hoje. Ele é leve, escalável e amplamente utilizado em ISPs e ambientes corporativos que precisam atender milhares de clientes simultâneos com baixa latência.
Neste artigo vamos mostrar como preparar o Unbound para provedores, suportando milhares de clientes (2000, 4000 ou mais), sem perder performance e mantendo a rede protegida contra abusos, principalmente com Rate Limiting.
Por que usar Unbound em provedor?
- Alto desempenho: facilmente suporta dezenas de milhares de consultas por segundo em hardware modesto.
- Cache eficiente: reduz tráfego externo e melhora a experiência do cliente.
- Segurança integrada: validação DNSSEC, Rate Limiting, bloqueio de domínios maliciosos.
- Configuração flexível: ajustes finos de cache, threads e limites de queries.
Requisitos de Hardware para 2000 a 4000 clientes
- CPU: mínimo 4 vCPUs (ideal 8 vCPUs para folga).
- RAM: 4 GB é o mínimo, 8 GB recomendado para caches grandes.
- Rede: 1 Gbps suficiente para milhares de clientes.
Um ponto importante: clientes não significam consultas simultâneas. A maioria dos usuários faz poucas consultas por minuto, o que permite atender milhares de clientes com facilidade.
Configuração Base do Unbound para ISP
Arquivo: /etc/unbound/unbound.conf
server:
# Threads igual ou próximo ao número de vCPUs
num-threads: 4
# Buffers de rede
so-rcvbuf: 8m
so-sndbuf: 8m
# Cache generoso
msg-cache-size: 256m
rrset-cache-size: 512m
key-cache-size: 128m
# Range de queries simultâneas
outgoing-range: 16384
num-queries-per-thread: 8192
infra-cache-numhosts: 40000
# TTLs
cache-max-ttl: 86400
cache-min-ttl: 60
# Segurança
hide-identity: yes
hide-version: yes
harden-glue: yes
harden-dnssec-stripped: yes
Rate Limiting – Protegendo contra abuso
Um resolver exposto na internet pode ser usado para amplificação de ataques DDoS.
O Rate Limiting no Unbound ajuda a mitigar isso, limitando consultas repetitivas de clientes ou ataques massivos.
Adicione ao unbound.conf:
server:
# Limita respostas para o mesmo cliente
ratelimit: 200
# Número máximo de consultas iguais por segundo
ratelimit-slabs: 4
ratelimit-size: 4m
# Evita amplificação em respostas NXDOMAIN
ratelimit-factor: 10
Como funciona?
ratelimit: 200→ permite até 200 queries/segundo por cliente para o mesmo domínio.ratelimit-sizeeslabs→ controlam a memória usada para armazenar estatísticas de rate limiting.ratelimit-factor→ aplica limite ainda mais forte em respostas negativas (NXDOMAIN), reduzindo abuso.
Assim, mesmo que alguém tente usar seu DNS como amplificador de ataque, as respostas serão cortadas após o limite definido.
Monitoramento
Use o comando abaixo para verificar o desempenho:
unbound-control stats_noreset
Principais métricas:
num.queries→ número total de consultas.num.cachehitsenum.cachemiss→ eficiência do cache.ratelimit.dropped→ quantas requisições foram bloqueadas pelo rate limiting.
Conclusão
Com a configuração correta, o Unbound DNS é capaz de atender milhares de clientes simultâneos (2000, 4000 ou mais) sem esforço, garantindo baixa latência, alto cache hit e proteção contra abusos.
Para provedores, a combinação de cache otimizado + rate limiting transforma o Unbound em uma solução robusta, econômica e segura.
