O VyOS é um sistema operacional de roteamento baseado em Linux, amplamente utilizado por provedores de internet (ISPs), empresas e entusiastas de redes para gerenciar tráfego com alta performance e flexibilidade. Uma das melhores práticas de segurança e privacidade em infraestruturas modernas é a implementação de DNS recursivo local. Em vez de confiar nos servidores DNS públicos do seu provedor de internet, que podem registrar logs ou sofrer de latência, o VyOS pode atuar como um resolver recursivo confiável para toda a sua rede interna.
Neste tutorial, você aprenderá a configurar o Unbound, um servidor de DNS recursivo seguro, estável e leve, diretamente dentro do VyOS. Essa configuração garante que as resoluções de nomes sejam feitas com validação DNSSEC nativa, protegendo sua rede contra ataques de envenenamento de cache e redirecionamentos maliciosos.
Pré-requisitos e Visão Geral
Antes de iniciar a configuração, certifique-se de que você tem acesso SSH ao seu roteador VyOS com privilégios de superusuário. A configuração será realizada via linha de comando (CLI) do VyOS, que utiliza uma estrutura hierárquica similar ao Cisco IOS ou Juniper Junos.
O Unbound será configurado para:
- Ouvir apenas nas interfaces locais (LAN).
- Validar todas as respostas DNS usando DNSSEC.
- Usar cache eficiente para melhorar a velocidade de navegação.
- Encaminhar consultas não resolvidas ou falhas de validação para upstreams confiáveis, como Google DNS ou Cloudflare, conforme necessário.
Acessando o Modo de Configuração
O VyOS opera em dois modos: modo de operação (onde os comandos afetam apenas a sessão atual) e modo de configuração (onde as mudanças são salvas na base de dados). Para modificar a infraestrutura, você deve entrar no modo de configuração.
Abra seu terminal ou cliente SSH e conecte-se ao VyOS. Em seguida, ingresse no modo de configuração:
vconfigure
Você notará que o prompt mudará para indicar que está no modo de edição. Agora, todas as alterações serão feitas dentro dessa sessão.
Configurando o Servidor DNS Recursivo (Unbound)
O VyOS utiliza o Unbound como motor padrão para resolução recursiva. Vamos começar definindo os parâmetros globais do serviço.
1. Definindo a Interface de Escuta
Por segurança, o servidor DNS não deve expor seus serviços à internet pública (WAN). Ele deve ouvir apenas nas interfaces que representam sua rede local (LAN). Suponha que sua interface LAN seja eth0 ou uma VLAN específica como vlan100. Se você tiver múltiplas sub-redes, pode listar várias interfaces.
set service dns forwarding unbound listen-address '192.168.1.1'
set service dns forwarding unbound listen-address '::1'
Substitua 192.168.1.1 pelo IP real da sua interface interna. O endereço ::1 é para IPv6, caso você utilize o protocolo na sua infraestrutura.
2. Configurando o Cache e Desempenho
O Unbound possui parâmetros finos de ajuste de performance. Para a maioria dos ambientes corporativos e de pequeno porte, os padrões funcionam bem, mas é recomendável garantir que o cache esteja habilitado e com tamanho adequado.
set service dns forwarding unbound cache-size '10000'
Este comando define o número máximo de entradas no cache. Um valor de 10.000 é suficiente para a maioria das redes. Você também pode ajustar o tempo de vida (TTL) mínimo e máximo se precisar de controle mais fino sobre a frescura dos dados.
set service dns forwarding unbound minimum-ttl '60'
set service dns forwarding unbound maximum-ttl '86400'
3. Habilitando a Validação DNSSEC
A segurança do DNS recursivo depende fortemente da validação DNSSEC. Isso garante que a resposta recebida para um domínio é autêntica e não foi manipulada em trânsito.
set service dns forwarding unbound trust-anchor-file '/var/lib/unbound/root.hints'
O VyOS geralmente já vem com o arquivo root.hints pré-configurado para validação da raiz. Verifique se a opção de validação está ativa:
set service dns forwarding unbound validate
4. Configurando Upstreams (Servidores Remotos)
Embora o Unbound possa resolver diretamente as raízes, em alguns cenários de firewall estrito ou para garantir disponibilidade extrema, é útil definir servidores upstream como fallback ou para consultas específicas. No entanto, a arquitetura moderna do Unbound no VyOS já lida com a resolução da raiz automaticamente.
Se você deseja forçar o uso de upstreams específicos para zonas não validadas ou para testes, pode configurar os servers upstream:
set service dns forwarding unbound forward-addr '8.8.8.8'
set service dns forwarding unbound forward-addr '1.1.1.1'
Nota: Com a validação DNSSEC habilitada e o trust-anchor-file correto, o Unbound tentará resolver diretamente as raízes primeiro. Os upstreams listados acima são usados como fallback se a resolução direta falhar ou se você configurar regras de encaminhamento específicas.
Habilitando a Resolução Local (Stub Resolver)
Agora que o servidor recursivo está configurado, precisamos garantir que o próprio VyOS e os clientes da rede utilizem esse serviço para resolver nomes. Existem duas partes: a resolução interna do roteador e a distribuição para os clientes.
1. Configurando o Resolver Local
O VyOS precisa saber para onde enviar as consultas de DNS feitas pelo próprio sistema operacional (para atualizações, verificações de tempo, etc.). Vamos configurar o system resolve para usar o Unbound local.
set system name-server '127.0.0.1'
set system name-server '::1'
Ao apontar para 127.0.0.1, você garante que o roteador usa seu próprio serviço Unbound, reduzindo a latência e evitando vazamentos de DNS para fora do firewall.
2. Configurando o DHCP para Distribuir o DNS
Para que os clientes da rede (computadores, celulares, IoT) usem o VyOS como seu servidor DNS, o servidor DHCP deve enviar o endereço IP do VyOS na opção de DNS. Se você já usa o VyOS como servidor DHCP, faça a seguinte configuração:
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 dns-server '192.168.1.1'
Substitua LAN pelo nome da sua rede compartilhada e 192.168.1.0/24 pela subnet correta. Isso garante que, ao fazer o lease do IP, cada dispositivo receba o endereço do seu VyOS como resolver DNS.
Ajustes de Firewall (Firewall Rules)
Por padrão, o VyOS possui políticas de firewall que podem bloquear a entrada de tráfego nas interfaces WAN. Embora o Unbound esteja escutando apenas na LAN, é uma boa prática auditar as regras de firewall para garantir que não haja bloqueios acidentais no tráfego UDP/TCP porta 53 vindo da interface interna.
Verifique as regras aplicadas à sua interface LAN (geralmente eth0 ou vlan100):
show firewall local name LOCAL_IN
Se você tiver regras customizadas, certifique-se de permitir tráfego UDP e TCP na porta 53 (DNS) da zona interna para a zona local. Em configurações padrão do VyOS, o tráfego interno geralmente é permitido por políticas de confiança, mas em ambientes hardened, essa regra explícita é necessária.
set firewall local name LOCAL_IN rule 10 description 'Allow DNS from LAN'
set firewall local name LOCAL_IN rule 10 action 'accept'
set firewall local name LOCAL_IN rule 10 destination port '53'
set firewall local name LOCAL_IN rule 10 protocol 'udp_tcp'
set firewall local name LOCAL_IN rule 10 source address '192.168.1.0/24'
Adapte o source address para a sua sub-rede real.
Validando a Configuração
Após aplicar todas as configurações, é crucial verificar se o serviço Unbound está rodando e respondendo corretamente antes de sair do modo de configuração.
1. Sincronizando e Salvando
No VyOS, as mudanças não são aplicadas imediatamente ao sistema em execução até que você sincronize a configuração. Faça:
commit
save
O comando commit aplica as mudanças. Se houver erros de sintaxe, o VyOS informará onde está o problema.
2. Verificando o Status do Serviço
Verifique se o processo Unbound está ativo:
systemctl status unbound
Você deve ver uma saída indicando que o serviço está active (running).
3. Testando a Resolução DNS
Use ferramentas de linha de comando para validar a resolução. O dig é a ferramenta padrão da indústria para testes de DNS.
dig @127.0.0.1 google.com
A resposta deve incluir o status NOERROR. Além disso, verifique se o campo AD (Authenticated Data) está presente na resposta, indicando que o DNSSEC foi validado com sucesso.
; <<>> DiG 9.16.1-Ubuntu <<>> @127.0.0.1 google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345
;; flags: qr rd ra ad; ...
A presença do flag ad confirma que a validação DNSSEC está funcionando.
4. Testando de um Cliente
De um computador na sua rede LAN, verifique se o DHCP entregou o IP correto do VyOS como servidor DNS e teste a resolução:
nslookup google.com 192.168.1.1
Se a consulta retornar um endereço IP válido rapidamente, sua configuração está completa.
Manutenção e Monitoramento Contínuo
A configuração do Unbound no VyOS é "configure and forget" na maioria dos casos, mas alguns pontos de manutenção são importantes para a longevidade da infraestrutura.
1. Atualização das Raízes DNS (Root Hints)
O arquivo /var/lib/unbound/root.hints contém os endereços dos servidores raiz da internet. Embora seja estável, é recomendável atualizá-lo periodicamente ou garantir que o VyOS baixe uma versão atualizada via script ou cron job se sua versão do pacote não incluir a última atualização.
Você pode verificar a data do arquivo:
ls -l /var/lib/unbound/root.hints
2. Logs e Depuração
Se algo der errado, os logs do Unbound são seus melhores aliados. No VyOS, os logs geralmente vão para o syslog local.
tail -f /var/log/syslog | grep unbound
Procure por erros de validação ou falhas de conexão. O nível de verbosidade pode ser aumentado temporariamente editando a configuração do serviço para adicionar verbosity '2', mas lembre-se de removê-lo após a depuração para não sobrecarregar o disco.
3. Backup da Configuração
Sempre que realizar mudanças significativas na infraestrutura, faça um backup da configuração do VyOS.
configure
save /tmp/vyos-config-backup-$(date +%Y%m%d).cfg
exit
Transfira esse arquivo para um local seguro externo ao roteador.
Considerações Finais sobre Segurança e Performance
A implementação de um DNS recursivo como o Unbound no VyOS oferece benefícios tangíveis:
- Privacidade: Seus clientes não dependem dos logs do seu ISP.
- Velocidade: O cache local reduz a latência percebida na navegação.
- Segurança: A validação DNSSEC protege contra ataques de man-in-the-middle no DNS.
Lembre-se de que o Unbound consome recursos da CPU e memória do roteador. Em roteadores de baixo custo ou com tráfego massivo (milhares de consultas por segundo), monitore o uso de CPU. Se necessário, ajuste o cache-size ou considere hardware dedicado para a resolução DNS em infraestruturas muito grandes.
Além disso, certifique-se de que suas regras de firewall não estejam causando vazamentos de DNS (DNS Leak). Se você utiliza túneis VPN (WireGuard ou IPsec), verifique se o tráfego de DNS está sendo corretamente roteado através do túnel ou bloqueado na saída, dependendo da sua política de segurança.
Com esta configuração, seu VyOS não é apenas um roteador, mas uma barreira inteligente e segura para a identidade e navegação dos seus usuários. Para mais detalhes sobre otimizações avançadas do Unbound, consulte a documentação oficial do projeto Unbound e o wiki do VyOS.