Como configurar um servidor DNS local no Linux
Compartilhar:

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 redirecione redesocial.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:

  1. Uma máquina Linux: Ubuntu, Debian ou Fedora são ótimas opções.
  2. Acesso root ou sudo: Você precisará de privilégios para instalar pacotes e editar configurações críticas.
  3. Conexão de rede estável: O servidor DNS precisa estar acessível aos dispositivos da rede.
  4. 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:

  1. Restrinja Consultas Externas:
    No named.conf, dentro da seção options, adicione:allow-query { 192.168.1.0/24; localhost; }; Isso limita consultas à sua rede local.
  2. Desative Recursão Pública:
    Na mesma seção options, adicione:recursion no; Impede que seu servidor seja usado em ataques de amplificação DNS.
  3. Execute o BIND com Privilégios Mínimos:sudo chown -R bind:bind /etc/bind sudo systemctl restart bind9
  4. Firewall:
    No Ubuntu, use o UFW:sudo ufw allow 53/tcp sudo ufw allow 53/udp

Personalizações que Fazem a Diferença

  1. Bloqueie Domínios Indesejados:
    Adicione um registro wildcard no arquivo de zona:*.redeocial.com IN A 127.0.0.1 Qualquer subdomínio de redeocial.com será redirecionado para localhost.
  2. 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.
  3. Integração com DHCP:
    Configure seu servidor DHCP para atribuir IPs e atualizar automaticamente o DNS quando novos dispositivos se conectarem. Use ferramentas como nsupdate 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:
    Use dig -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:

  1. Instale:sudo apt install dnsmasq
  2. Edite /etc/dnsmasq.conf:address=/meusite.local/192.168.1.100 server=8.8.8.8 # Usa o Google DNS como fallback
  3. 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 para 2024060102).
  • 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

Compartilhar:

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *