- Objetivo
- Topologia
- Compreensão dos requisitos
- Instalação do bind9
- Configuração do bind9
- Verificação das configurações
- Testar o serviço de DNS
- Referencias
Este repositório é destinado a armazenar a documentação de configuração de servidor autoritativo DNS utilizando o pacote BIND9 no Ubuntu Server 24.04.2 para a empresa fictícia Technocorp.
A configuração será baseada na seguinte tabela de Resources Records1
| Nome | Classe | Tipo | Prioridade | Host | Comentário |
|---|---|---|---|---|---|
| @ | IN | NS | ns1.technocorp.emp | Servidores de nome | |
| ns1 | IN | A | 127.0.0.1 | A Records para Servidores de Nomes | |
| @ | IN | A | 127.0.0.1 | A Records | |
| ftp | IN | A | 127.0.0.1 | A Records | |
| IN | A | 127.0.0.1 | A Records | ||
| dhcp | IN | A | 127.0.0.1 | A Records | |
| dns | IN | A | 127.0.0.1 | A Records | |
| www | IN | CNAME | @ | CNAME Records | |
| IN | MX | 10 | mail.technocorp.emp | MX Records |
- Distribuição Ubuntu Server na versão 24.04.x
- Acesso ao usuário
rootou usuário com sudo - Meio para instalação dos pacotes (geralmente acesso à Internet)
- Editor de texto (ex:
nano,vim,micro)
Utilizaremos o comando abaixo para a instalação dos pacotes bind9 e relacionados
sudo apt install bind9 bind9utils bind9-doc dnsutils -y| Pacote | Distribuição |
|---|---|
bind9 |
Servidor DNS (Serviço principal) |
bind9utils |
Ferramentas auxiliares como rndc, named-checkconf, named-checkzone |
bind9-doc |
Documentação oficial do BIND9 (instalada em /usr/share/doc/bind9-doc). |
dnsutils |
Ferramentas de teste como dig, nslookup e host |
Para facilitar a criação do arquivo de zona, iremos cria-lo a partir de uma copia de /etc/bind/db.local
sudo cp /etc/bind/db.local /etc/bind/db.technocorp.empE em seguida vamos editar o arquivo com o comando:
sudo editor /etc/bind/db.technocorp.empImportant
Lembre-se de substituir editor pelo editor de sua preferência (ex: nano, vim, micro, emacs).
Ao abrir o arquivo, o seu conteúdo atual pode ser algo parecido com isso:
;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA localhost. root.localhost. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS localhost.
1 IN PTR localhost.
O conteúdo acima ainda é da versão original do arquivo (/etc/bind/db.local) que contem um modelo padrão de zona reversa 2 utilizado para resolução reversa 3, que retorna o endereço de loobpack 5 127.0.0.1, por isso o seu conteúdo é simples, possuindo apenas um PTR Record 5 6 apontando IP 127.0.0.1 para localhost, o que não seria adequado para o nosso cenário. Então, seguindo como os requisitos documentados em Topologia o conteúdo do arquivo deve configurar uma zona direta 7 8 necessária para o nosso domínio fictício da Technocorp, então assim teremos:
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA ns1.technocorp.emp. admin.technocorp.emp. (
2025060602 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
; Servidores de Nomes
@ IN NS ns1.technocorp.emp.
; A Records para Servidores de Nomes
ns1 IN A 127.0.0.1
; A Records para Subdomínios
@ IN A 127.0.0.1
www IN A 127.0.0.1
dns IN A 127.0.0.1
dhcp IN A 127.0.0.1
ftp IN A 127.0.0.1
mail IN A 127.0.0.1
; CNAME
www IN CNAME @
; MX Record
@ IN MX 10 mail.technocorp.emp.
Agora falando um pouco sobre as diferenças dos arquivos podemos perceber que ao configurar uma Forwarding Zone (ou zona direta), temos definidos os seguintes elementos:
- Servidor de nome autoritativo
ns1.technocorp.emppor registrosNSeA - Diversos subdomínios (
www,dns,dhcp,ftp,mail) apontando para endereços locais específicos todos com registrosA - Um registro (alias) do tipo
CNAMEdewwwque aponta para o domínio raiz (@), o que evita repetição de IP pois "recebe" o host do registro@outechnocorp.emp - Um registro do tipo
MXque defini o servidor de e-mails da zona, apontando paramail.technocorp.emp - Alteração no valor Serial de
2para2025060602que segue a convenção de basear o valor na data
Agora vamos utilizar o seguinte comando para declarar a zona recém criada:
sudo editor /etc/bind/named.conf.localE lá vamos inserir o conteúdo abaixo que informa ao bind9 que ele é a autoridade responsável pela zona technocorp.emp e informa o caminho do arquivo de registro da zona.
zone "technocorp.emp" {
type master;
file "/etc/bind/db.technocorp.emp";
};
Na linha 1 temos zone "technocorp.emp"que define o nome da zona a ser referenciada, enquanto na 2 temos type master; que define o servidor como autoridade sobre a zona, a 3 com file "/etc/bind/db.technocorp.emp";definindo o o caminho absoluto do arquivo de registro daquela zona e por último a 4 com }; fechando as chaves abertas na 1 e finalizando a definição da regra.
Além da criação e configuração da zona, é importante verificar e ajustar as opções globais do servidor BIND, geralmente definidas no arquivo /etc/bind/named.conf.options.
Além da criação e configuração de uma zona, precisamos verificar e ajustas algumas opções globais do nosso servidor, para isso vamos usar o comando abaixo para editar o arquivo responsável:
sudo editor /etc/bind/named.conf.optionsE nele cole o seguinte conteúdo:
options {
directory "/var/cache/bind";
recursion yes;
allow-query { localhost; };
forwarders {
8.8.8.8;
8.8.4.4;
};
dnssec-validation auto;
auth-nxdomain no;
listen-on { any; };
};
| Diretiva | Descrição |
|---|---|
directory |
Aqui definimos onde o BIND armazena arquivos temporários e de cache, não precisa ser alterado. |
recursion yes; |
Permite ao servidor realizar consultas recursivas (buscar por outras zonas além das que ele é autoritativo). |
allow-query { localhost; }; |
Restringe as consultas DNS ao próprio servidor (mais seguro em ambientes locais). Pode ser ampliado para redes específicas, como 192.168.0.0/24. |
forwarders |
Define servidores DNS externos (ex.: Google DNS) para os quais o BIND encaminhará as consultas que ele não puder resolver localmente. |
dnssec-validation auto; |
Ativa a validação de segurança DNSSEC automaticamente. Pode ser deixada como está em testes locais, ou desabilitada com no; se causar problemas. |
auth-nxdomain no; |
Compatibilidade com RFCs. Usar no evita que o servidor se declare autoritativo por padrão para domínios inexistentes. |
listen-on { any; }; |
Define em quais interfaces de rede o servidor vai escutar. any permite em todas; pode ser restrito (ex.: 127.0.0.1; para uso local apenas). |
- dos arquivos de configuração com
sudo named-checkconf - do arquivo da zona criada com
sudo named-checkzone technocorp.emp /etc/bind/db.technocorp.emp
Tudo pronto, mas antes de habilitarmos o serviço vamos verificar se está tudo configurado corretamente, para isso utilize:
Para validar a sintaxe dos arquivos de configuração (named.conf, named.conf.local)
sudo named-checkconfSaída esperada: Nenhuma mensagem significa que está tudo correto.
Para verificar o arquivo de definição de zona /etc/bind/db.technocorp.emp
sudo named-checkzone technocorp.emp /etc/bind/db.technocorp.empSaída esperada:
zone technocorp.emp/IN: loaded serial 2025060602
OK
Após teste e confirmação de que tudo está certo, ative e inicie o serviço:
Habilitar inicialização automática do bind9 com o sistema:
sudo systemctl enable bind9Reiniciar o serviço do bind9:
sudo systemctl restart bind9Verificar o estado do serviço:
sudo systemctl status bind9- é importante notar se o estado está como
active (running), caso contrario terá tido falha e encontrará alguma mensagem de erro nas linhas finais - Aperta
qpara sair da tela e voltar normalmente ao terminal
- Pela própria máquina
- Por outra máquina (Windows)
Caso tenha instalado as ferramentas e pacotes extras em [Instalação do bind9](#Instalação do bind9) então poderá testes de forma local utilizando o dig:
dig @127.0.0.1 technocorp.emp
dig @127.0.0.1 www.technocorp.emp
dig @127.0.0.1 mail.technocorp.emp MXNo terminal do Windows (CMD ou PowerShell), execute os comandos abaixo para definir temporariamente o DNS para apontar ao seu servidor e testar requisições dos subdomínios configurados:
nslookup
> server [IP_DO_SERVIDOR]
> technocorp.emp
> www.technocorp.emp
> mail.technocorp.emp
E para sair utilize > exit
List of DNS Record Types - Wikipedia
Domain Name System, Resource Records - Wikipedia
Setting up a forward zone on a BIND primary server - RedHat
Virtual Loopback Interface - Wikipedia