Como Configurar um Servidor DNS no Linux com BIND

O Sistema de Nomes de Domínio (DNS) é essencial para a comunicação na internet, convertendo domínios legíveis por humanos em endereços IP. Configurar seu próprio servidor DNS permite controlar a resolução de nomes para redes locais ou fornecer serviços DNS para clientes externos. O BIND (Berkeley Internet Name Domain) é uma das soluções mais populares para essa tarefa no Linux, oferecendo flexibilidade e robustez.

Neste guia, você aprenderá como instalar, configurar e gerenciar um servidor DNS utilizando o BIND.

O que é o BIND?

O BIND é uma implementação de código aberto do protocolo DNS. Ele permite gerenciar resoluções de nomes, hospedar zonas DNS locais e encaminhar consultas para servidores DNS externos.

Principais recursos do BIND:

  • DNS Autoritativo: Hospeda registros DNS para domínios específicos.
  • DNS Caching: Armazena em cache respostas DNS para acelerar consultas futuras.
  • DNS Forwarding: Encaminha consultas para servidores DNS superiores quando não pode resolvê-las internamente.

1. Instalando o BIND no Linux

O BIND está disponível nos repositórios padrão da maioria das distribuições Linux.

Em sistemas Debian/Ubuntu:

sudo apt update
sudo apt install bind9 bind9utils bind9-doc

Em sistemas CentOS/RHEL:

sudo yum install bind bind-utils

Após a instalação, o BIND estará pronto para ser configurado como seu servidor DNS.

2. Configurando o BIND

Os arquivos principais de configuração do BIND são:

  • /etc/bind/named.conf (Debian/Ubuntu) ou /etc/named.conf (CentOS/RHEL)
  • Arquivos de zona, que armazenam os registros DNS

Configurando opções globais do BIND

Edite o arquivo de configuração:

Debian/Ubuntu:

sudo nano /etc/bind/named.conf.options

CentOS/RHEL:

sudo nano /etc/named.conf

Exemplo de configuração:

options {
    directory "/var/cache/bind";
    forwarders {
        8.8.8.8;  // Google DNS
        8.8.4.4;  // Google DNS
    };
    allow-query { 192.168.1.0/24; };
    recursion no;
    listen-on { 127.0.0.1; 192.168.1.100; };
    listen-on-v6 { none; };
};

3. Configurando as Zonas DNS

As zonas DNS contêm os registros de um domínio. Edite o arquivo de zonas:

Debian/Ubuntu:

sudo nano /etc/bind/named.conf.local

CentOS/RHEL:

sudo nano /etc/named.conf

Adicione a zona do domínio:

zone "nerdexpert.com.br" {
    type master;
    file "/etc/bind/zones/db.nerdexpert.com.br";
};

Criando o Arquivo de Zona

Crie um diretório para armazenar arquivos de zona:

sudo mkdir /etc/bind/zones

Crie o arquivo da zona:

sudo nano /etc/bind/zones/db.nerdexpert.com.br

Adicione os registros DNS:

$TTL 86400
@   IN  SOA ns1.nerdexpert.com.br. admin.nerdexpert.com.br. (
        2024011201  ; Serial
        3600        ; Refresh
        1800        ; Retry
        1209600     ; Expiry
        86400       ; Minimum TTL
)
@       IN  NS  ns1.nerdexpert.com.br.
ns1     IN  A   192.168.1.100
@       IN  A   192.168.1.200
@       IN  MX 10 mail.nerdexpert.com.br.
mail    IN  A   192.168.1.150

Lembre-se de atualizar o serial no registro SOA sempre que modificar a zona.

4. Testando e Iniciando o Servidor DNS

Antes de iniciar o BIND, verifique a sintaxe da configuração:

Debian/Ubuntu:

sudo named-checkconf

CentOS/RHEL:

sudo named-checkconf /etc/named.conf

Verifique a zona:

sudo named-checkzone nerdexpert.com.br /etc/bind/zones/db.nerdexpert.com.br

Se não houver erros, reinicie o BIND:

Debian/Ubuntu:

sudo systemctl restart bind9

CentOS/RHEL:

sudo systemctl restart named

Verifique se o BIND está em execução:

sudo systemctl status bind9  # Debian/Ubuntu
sudo systemctl status named  # CentOS/RHEL

5. Testando a Resolução DNS

Para testar se o servidor DNS está funcionando corretamente, utilize o dig:

dig @192.168.1.100 nerdexpert.com.br

Teste a resolução reversa:

dig -x 192.168.1.100

6. Melhorando a Segurança do Servidor DNS

Algumas medidas para proteger seu servidor DNS:

Desativar Recursão (para servidores autoritativos)

recursion no;

Restringir consultas ao servidor

allow-query { 192.168.1.0/24; localhost; };

Configurar firewall para restringir acesso

sudo ufw allow from 192.168.1.0/24 to any port 53

Com este guia, você configurou um servidor DNS no Linux usando BIND, capaz de gerenciar resolução de domínios para redes locais ou externas. O BIND é uma ferramenta poderosa que pode ser usada como um servidor DNS autoritativo, de cache ou encaminhador.

No próximo artigo, exploraremos técnicas de network bridging e bonding, combinando interfaces de rede para melhor desempenho e redundância.