Se você já imaginou ter o poder de decidir quais domínios existem na sua rede, redirecionar sites indesejados para o limbo ou até criar atalhos personalizados para seus servidores internos, este guia é para você. Vamos mergulhar em cada etapa da configuração de um servidor DNS local no Linux, com explicações claras, exemplos práticos e dicas que só quem já tropeçou em configurações complexas pode oferecer.
O Que é DNS e Por Que Ter um Servidor Local?
O DNS (Domain Name System) é a espinha dorsal da internet. Ele funciona como um tradutor invisível, convertendo nomes de domínio como google.com
em endereços IP numéricos que os computadores entendem. Agora, imagine controlar esse tradutor dentro da sua própria rede:
- Velocidade sob demanda: Domínios frequentemente acessados (como um servidor interno de arquivos) são resolvidos instantaneamente, sem depender de servidores externos.
- Personalização sem limites: Crie domínios como
projeto.test
para desenvolvimento ou redirecioneredesocial.com
para um IP inválido, bloqueando distrações. - Privacidade reforçada: Evite que todas as suas consultas DNS vazem para provedores externos, mantendo suas atividades dentro da rede.
Para desenvolvedores, admins de rede ou até usuários domésticos curiosos, um DNS local é como ter uma chave mestra para a infraestrutura da sua internet.
Pré-requisitos: Prepare o Terreno
Antes de começar, garanta que você tem:
- Uma máquina Linux: Ubuntu, Debian ou Fedora são ótimas opções.
- Acesso root ou sudo: Você precisará de privilégios para instalar pacotes e editar configurações críticas.
- Conexão de rede estável: O servidor DNS precisa estar acessível aos dispositivos da rede.
- Paciente persistência: Configurar DNS envolve detalhes, mas cada erro é uma lição.
Escolha seu software:
- BIND9: O padrão ouro para servidores DNS, ideal para redes complexas.
- dnsmasq: Leve e simples, perfeito para redes pequenas ou domésticas.
- Unbound: Focado em segurança e privacidade, com suporte a DNSSEC.
Vamos focar no BIND9 pela sua flexibilidade, mas ao final, mostrarei alternativas rápidas.
Leia também: Design Patterns em Java
Configurando o BIND9 Passo a Passo
Instalação do BIND9
No Debian/Ubuntu:
sudo apt update && sudo apt install bind9
No Fedora:
sudo dnf install bind
Estrutura de Arquivos:
/etc/bind/named.conf
: Arquivo de configuração principal./etc/bind/zones/
: Diretório para armazenar zonas DNS (crie-o se não existir).
Criando uma Zona de Resolução Direta (Forward Zone)
Um arquivo de zona define como os domínios são mapeados para IPs. Crie um arquivo chamado meudominio.local.db
em /etc/bind/zones/
:
$TTL 86400
@ IN SOA ns1.meudominio.local. admin.meudominio.local. (
2024060101 ; Número serial (YYYYMMDDVV)
3600 ; Atualização secundária a cada 1h
1800 ; Retentativa após 30min
604800 ; Expiração após 1 semana
86400 ; TTL mínimo
)
; Servidores de Nome
@ IN NS ns1.meudominio.local.
; Registros A (Domínio → IP)
ns1 IN A 192.168.1.100
www IN A 192.168.1.101
servidor IN CNAME www.meudominio.local.
Criando uma Zona de Resolução Reversa (Reverse Zone)
Essa zona traduz IPs de volta para domínios. Crie reverse.1.168.192.db
no mesmo diretório:
$TTL 86400
@ IN SOA ns1.meudominio.local. admin.meudominio.local. (
2024060101
3600
1800
604800
86400
)
@ IN NS ns1.meudominio.local.
; Registros PTR (IP → Domínio)
100 IN PTR ns1.meudominio.local.
101 IN PTR www.meudominio.local.
Vinculando as Zonas ao BIND9
Edite /etc/bind/named.conf
e adicione:
zone "meudominio.local" {
type master;
file "/etc/bind/zones/meudominio.local.db";
};
zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/zones/reverse.1.168.192.db";
};
Reiniciando e Testando
sudo systemctl restart bind9
dig www.meudominio.local @localhost # Deve retornar 192.168.1.101
nslookup 192.168.1.101 # Deve apontar para www.meudominio.local
Protegendo Seu Servidor DNS
Um DNS mal configurado pode se tornar uma porta aberta para ataques. Siga estas práticas:
- Restrinja Consultas Externas:
Nonamed.conf
, dentro da seçãooptions
, adicione:allow-query { 192.168.1.0/24; localhost; };
Isso limita consultas à sua rede local. - Desative Recursão Pública:
Na mesma seçãooptions
, adicione:recursion no;
Impede que seu servidor seja usado em ataques de amplificação DNS. - Execute o BIND com Privilégios Mínimos:
sudo chown -R bind:bind /etc/bind sudo systemctl restart bind9
- Firewall:
No Ubuntu, use o UFW:sudo ufw allow 53/tcp sudo ufw allow 53/udp
Personalizações que Fazem a Diferença
- Bloqueie Domínios Indesejados:
Adicione um registro wildcard no arquivo de zona:*.redeocial.com IN A 127.0.0.1
Qualquer subdomínio deredeocial.com
será redirecionado para localhost. - Aliases para Serviços Internos:
Crie registros CNAME para simplificar acesso:nuvem IN CNAME servidor.meudominio.local.
Agora,nuvem.meudominio.local
aponta para o mesmo IP do servidor. - Integração com DHCP:
Configure seu servidor DHCP para atribuir IPs e atualizar automaticamente o DNS quando novos dispositivos se conectarem. Use ferramentas comonsupdate
para dynamic DNS.
Solução de Problemas: Quando o DNS Resmunga
- Erro “Servfail”:
Verifique a sintaxe dos arquivos de zona:sudo named-checkzone meudominio.local /etc/bind/zones/meudominio.local.db
- Consultas Não Respondem:
Confira se o BIND está rodando:sudo systemctl status bind9
E verifique o firewall. - Problemas de Zona Reversa:
Usedig -x 192.168.1.101
para testar se o IP resolve para o domínio correto.
Alternativas Rápidas: Quando o BIND9 é Exagero
Para redes pequenas, o dnsmasq oferece configuração em minutos:
- Instale:
sudo apt install dnsmasq
- Edite
/etc/dnsmasq.conf
:address=/meusite.local/192.168.1.100 server=8.8.8.8 # Usa o Google DNS como fallback
- Reinicie:
sudo systemctl restart dnsmasq
Pronto! Agora meusite.local
resolve para 192.168.1.100
, e consultas não locais são encaminhadas para o DNS público.
Mantenha Seu DNS Funcionando Sem Surpresas
- Atualize o Número Serial: Sempre que modificar uma zona, incremente o serial (ex: de
2024060101
para2024060102
). - Monitore Logs:
sudo tail -f /var/log/syslog | grep named
- Backups Automatizados: Use um script para copiar
/etc/bind/zones
periodicamente.
Conclusão: Seu Mundo, Suas Regras
Configurar um servidor DNS local no Linux é como ganhar superpoderes de administração de rede. Você não só acelera o acesso a recursos internos, mas também bloqueia distrações, cria atalhos e protege sua privacidade. Comece com configurações simples, experimente bloqueios de domínios e, aos poucos, explore recursos avançados como integração com DHCP ou DNS dinâmico.
E se algo der errado, lembre-se: cada erro é um passo para dominar de vez essa ferramenta. Agora, conte nos comentários: qual domínio você vai criar primeiro?
Leia também: Organização de Computadores