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.
Sou um profissional na área de Tecnologia da informação, especializado em monitoramento de ambientes, Sysadmin e na cultura DevOps. Possuo certificações de Segurança, AWS e Zabbix.