Nesse tutorial vamos dar todo o passo a passo para que você instale uma configuração básica do servidor DNS BIND9 no Linux.
Criado para resolver os problemas relacionados a tradução de nomes e IPs foi criado o DNS (Domain Name System) em 1983.
O DNS foi criado para ter uma estrutura hierárquica e com um banco de dados distribuídos geograficamente.
Instalando o BIND9 no Linux
Inicialmente, vamos instalar o Bind9 no Linux (Ubuntu). Para isso vamos iniciar fazendo o update dos repositórios do apt e depois vamos usar o comando para instalar o bind9.
Atualizar repositórios e fazer upgrade:
sudo apt update && sudo apt upgrade
Instalar o bind9 com apt:
sudo apt install bind9
Testando a instalação do bind9
Depois de instalar, vamos verificar se o servidor está operacional e funcionando corretamente. Para isso, vamos usar os comandos abaixo.
named -v
Em seguida vamos verificar o status do bind9 com os comandos abaixo.
sudo systemctl status bind9
ou
sudo service bind9 status
Para sair da tela de status do “systemctl status bind9” e do “service bind9 status” pressione CTRL + c.
Configurando o bind9 no Linux
Agora, vamos fazer a configuração do bind9 e para isso, vamos entrar no diretório de configuração que fica em “/etc/bind“.
Para entrar no diretório de configuração do bind9 vamos usar o comando abaixo.
cd /etc/bind/
Em seguida, podemos usar o comando “ls” para listar o conteúdo do diretório “/etc/bind“.
ls
Depois de usar o comando “ls” vamos ver 2 arquivos que vamos precisar alterar: “/etc/bind/named.conf.options” e “/etc/bind/named.conf.local“.
Antes de alterar os arquivo, vamos criar copias de segurança desses arquivos usando os comandos abaixo.
sudo cp named.conf.options named.conf.options_OLD
sudo cp named.conf.local named.conf.local_OLD
Configurando o named.conf.options
Vamos usar um editor para configurar o arquivo “named.conf.options“. Em nosso caso, vamos usar o editor nano. Para isso vamos usar o comando abaixo para abrir o arquivo “named.conf.options“.
sudo nano named.conf.options
Em seguida, vamos introduzir o texto abaixo no final do arquivo de configuração depois de “listen-on-v6 { any; };” e antes do “};”.
A figura abaixo mostra o local correto de onde introduzir o texto que vamos usar como exemplo.
Abaixo está o texto que vamos adicionar na configuração.
listen-on port 53 { localhost; 192.168.56.0/24; };
allow-query { localhost; 192.168.56.0/24; };
forwarders { 8.8.8.8; };
recursion yes;
Abaixo temos a descrição dos campos usados na configuração.
- listen-on port 53 { localhost; 192.168.56.0/24; };= aqui estamos indicando que o servidor DNS vai escutar na porta 53 e vai atender ao localhost(127.0.0.1) e a nossa rede que é a “192.168.56.0/24“.
- allow-query { localhost; 192.168.56.0/24; }; = os Endereços que podem fazer requisição ao nosso DNS.
- forwarders { 8.8.8.8; };= Para domínios externos vamos encaminhar para DNS externo. Nesse caso, estamos usando o DNS do google para fazer os encaminhamentos externos.
- recursion yes;= Vamos ativar as requisições recursivas.
Lembre-se que aqui estamos usando como exemplo a rede “192.168.56.0/24” e você precisa adaptar para seu endereço de rede. Além disso, estamos usando o DNS da google para encaminhamento externo e você pode escolher outro DNS como por exemplo o do seu provedor de Internet.
Configurando o named.conf.local
Agora, vamos configurar o seguindo arquivo do bind9, o “named.conf.local”. Para isso, precisamos ir até o diretório “/etc/bind/“.
cd /etc/bind/
Em seguida vamos usar o editor nano para editar o arquivo “named.conf.local”.
sudo nano named.conf.local
Dentro do arquivo “named.conf.local“, vamos adicional no final o texto abaixo como na figura a seguir.
zone "labredes.teste" {
type master;
file "/etc/bind/forward.labredes.teste";
};
zone "56.168.192.in-addr.arpa" {
type master;
file "/etc/bind/reverse.labredes.teste";
};
Abaixo temos a descrição da configuração da zona direta.
- type master = Define o servidor como mestre para o domínio labredes.teste.
- file “/etc/bind/forward.labredes.teste” = Define o arquivo de zona direta.
Em seguida, temos abaixo a descrição da configuração da zona reversa.
- type master = Define o servidor como mestre para a zona reversa.
- file “/etc/bind/reverse.labredes.teste” = Define o arquivo de zona reversa.
O próximo passo vai ser a criação dos arquivos de zona. Nesse caso, nossos arquivos terão os nomes: “forward.labredes.teste” e “reverse.labredes.teste“.
Criando o arquivo de zona forward
Agora, vamos criar o arquivo de zona forward. Em nosso caso, o arquivo terá o nome: “forward.labredes.teste“. Para criar esse arquivo, vamos usar o comando abaixo.
sudo nano /etc/bind/forward.labredes.teste
Em seguida, vamos inserir o texto abaixo no arquivo de zona forward que criamos.
$TTL 604800
@ IN SOA primario.labredes.teste. x.laberedes.teste. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS primario.labredes.teste.
primario IN A 192.168.56.12
labredes.teste. IN MX 10 mail.labredes.teste.
www IN A 192.168.56.102
mail IN A 192.168.56.103
web IN CNAME www.labredes.teste.
Abaixo está a descrição de cada campo apresentado na figura do arquivo “forward.labredes.teste“.
- 0 = Define o tempo de vida (em segundos) para os registros em cache do servidor DNS.
- 1 = Define o registro SOA (Start of Authority).
- 2 = Número de série da zona, incrementado a cada alteração.
- 3 = Tempo que um servidor secundário deve aguardar antes de verificar atualizações.
- 4 = Tempo que um servidor secundário deve aguardar antes de tentar novamente uma atualização.
- 5 = Tempo que um servidor secundário deve aguardar antes de descartar informações da zona.
- 6 = Tempo de armazenamento para registros inexistentes.
- 7 = Informação do servidor de nomes.
- 8 = Define o endereço IP do servidor de nomes “primario“.
- 9 = Define o registro MX (Mail Exchanger) para o domínio, apontando para o servidor de email.
- 10 = Define o endereço IP do host “www“.
- 11 = Define o endereço IP do host “mail“.
- 12 = Define um apelido (CNAME) “web” para o host “www“.
Criando o arquivo de zona reverse
Agora, vamos criar o arquivo de zona forward. Em nosso caso, o arquivo terá o nome: “reverse.labredes.teste“. Para criar esse arquivo, vamos usar o comando abaixo.
sudo nano /etc/bind/reverse.labredes.teste
Em seguida, vamos inserir o texto abaixo no arquivo de zona reverse que criamos.
$TTL 604800
@ IN SOA primario.labredes.teste. x.laberedes.teste. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS primario.labredes.teste.
primario IN A 192.168.56.12
12 IN PTR primario.labredes.teste.
102 IN PTR www.labredes.teste.
103 IN PTR mail.labredes.teste.
Abaixo está a descrição de cada campo apresentado na figura do arquivo “reverse.labredes.teste“.
- 0 = Define o tempo de vida (em segundos) para os registros em cache do servidor DNS.
- 1 = Define o registro SOA (Start of Authority).
- 2 = Número de série da zona, incrementado a cada alteração.
- 3 = Tempo que um servidor secundário deve aguardar antes de verificar atualizações.
- 4 = Tempo que um servidor secundário deve aguardar antes de tentar novamente uma atualização.
- 5 = Tempo que um servidor secundário deve aguardar antes de descartar informações da zona.
- 6 = Tempo de armazenamento para registros inexistentes.
- 7 e 8 = Informação do servidor de nomes.
- 9 = Define o nome do host “primario” para o endereço IP “192.168.56.12”.
- 10 = Define o nome do host “www” para o endereço IP “192.168.56.102”.
- 11 = Define o nome do host “mail” para o endereço IP “192.168.56.103”.
Reiniciando e Habilitando o BIND9
Agora, vamos reiniciar o servidor DNS BIND9 para que as modificações tenham efeito. Para reiniciar o servidor BIND9 vamos usar o comando abaixo.
sudo systemctl restart bind9
Vamos usar o comando abaixo para habilitar o bind9. Dessa forma, o servidor DNS BIND9 vai ser inicializado junto com o sistema operacional.
sudo systemctl enable named
Verificando se existem erros de configuração no BIND9
Depois de configurar os arquivos do BIND9 vamos usar os comandos abaixo para verificar se existe algum erro na nossa configuração.
Verificar erros de sintaxe no “named.conf.local“.
sudo named-checkconf /etc/bind/named.conf.local
Verificar erros na zona direta (forward).
named-checkzone labredes.teste /etc/bind/forward.labredes.teste
Verificar erros na zona reversa (reverse).
named-checkzone labredes.teste /etc/bind/reverse.labredes.teste
Caso tenha erros, vamos corrigir os erros e reiniciar o servidor com o comando abaixo.
sudo systemctl restart bind9
Se os erros forem apenas nos arquivos de zona, vamos corrigir e podemos reiniciar a zona com o comando abaixo.
sudo rndc reload
Testando o BIND9 localmente
Uma vez configurado o BIND9, vamos fazer alguns testes localmente para ver a resposta do nosso servidor DNS.
O primeiro teste que vamos fazer é verificar a resposta do servidor DNS a uma consulta sobre nosso domínio. Para isso, estamos usando o comando “dig” e em seguida vamos inserir o IP de nosso servidor DNS “192.168.56.12” e depois o nosso domínio “labredes.teste“.
dig @192.168.56.12 labredes.teste
Vamos entender a resposta da consulta a nosso DNS apresentada na figura acima.
- 1 = “@IP” é o IP de nosso servidor DNS, nesse caso, é o responsável por responder a consulta DNS do comando “dig“.
- 2 = Aqui está o endereço que queremos consultar. Nesse caso, o endereço é o nosso nome de domínio “labredes.teste“.
- 3 = Aqui temos a resposta da consulta. Nesse caso podemos ver que o servidor respondeu com informações sobre o registro SOA (Start of Authority) de nosso servidor BIND9.
No segundo teste, vamos verificar a resposta do servidor DNS a uma consulta sobre o nosso servidor de email. Para isso, estamos usando o comando “dig” e em seguida vamos inserir o IP de nosso servidor DNS “192.168.56.12” e depois o nome de nosso servidor de email seguido do nosso domínio “mail.labredes.teste“.
dig @192.168.56.12 mail.labredes.teste
- 1 = “@IP” é o IP de nosso servidor DNS, nesse caso, é o responsável por responder a consulta DNS do comando “dig“.
- 2 = Aqui está o endereço que queremos consultar. Nesse caso, o endereço é o nosso nome que demos para nosso servidor de email seguido do nosso domínio “mail.labredes.teste“.
- 3 = Aqui temos a resposta da consulta. Nesse caso podemos ver que o servidor BIND9 respondeu com o IP do nosso servidor de email “192.168.56.103“.
No próximo teste, vamos verificar a resposta do servidor DNS a uma consulta sobre o nosso servidor WEB. Para isso, estamos usando o comando “dig” e em seguida vamos inserir o IP de nosso servidor DNS “192.168.56.12” e depois o apelido e de nosso servidor WEB seguido do nosso domínio “web.labredes.teste“.
dig @192.168.56.12 web.labredes.teste
- 1 = “@IP” é o IP de nosso servidor DNS, nesse caso, é o responsável por responder a consulta DNS do comando “dig“.
- 2 = Aqui está o endereço que queremos consultar. Nesse caso, o endereço é o apelido “CNAME” que demos para nosso servidor WEB seguido do nosso domínio “web.labredes.teste“.
- 3 = Aqui temos a resposta da consulta. Nesse caso podemos ver que o servidor BIND9 respondeu com o nome do servidor WEB “www.labredes.teste” vinculado ao apelido do nosso servidor WEB “web.labredes.teste“. Além disso, a resposta também contém o IP do servidor WEB “192.168.56.102“.
Testando o servidor BIND9 com um cliente
Agora vamos criar uma rede interna para permitir que um host cliente possa usar o nosso DNS BIND9 como servidor de nomes. Para isso, vamos inserir uma segunda máquina na mesma rede que está a máquina do nosso servidor BIND9.
Quem desejar fazer a prova de conceito, pode criar uma rede com o VirtualBox.
Em nosso caso, vamos inserir uma máquina cliente com sistema operacional Lubuntu.
Antes de tudo, precisamos configurar o cliente para apontar para nosso servidor DNS.
Configurando um cliente Lubuntu para apontar para o DNS
Para fazer o host do cliente usar nosso DNS, vamos clicar no símbolo do lubuntu no canto inferior esquerdo.
Em seguida, vamos digitar network na aba de pesquisa.
Depois disso, vamos selecionar a opção “Edit connections”.
Agora, vamos selecionar a interface de rede que vamos usar e depois vamos clicar no símbolo de engrenagem na parte inferior a esquerda.
O próximo passo é escolher a aba “IPv4 Settings” e digitar o IP do nosso servidor DNS BIND9. Depois disso, clique em salvar “Salve”.
Reiniciando a interface do cliente após a nova configuração apontando para o nosso DNS. Para isso, vamos usar o comando abaixo.
sudo systemctl restart NetworkManager
Configurando um cliente Ubuntu para apontar para o DNS
Se você estiver usando um cliente com o Ubuntu, você pode procurar por rede “Network” e clicar no símbolo de engrenagem.
Depois disso, você vai clicar na aba de IPv4 e vai inserir o IP do servidor BIND9. Em seguida, clique em aplicar “Apply”.
Reiniciando a interface do cliente após a nova configuração apontando para o nosso DNS. Para isso, vamos usar o comando abaixo.
sudo systemctl restart NetworkManager
Testando o BIND9 no cliente
Agora que já configuramos a interface do cliente para apontar para nosso DNS BIND9, vamos fazer os testes para ver se o cliente está acessando os endereços que cadastramos no nosso BIND9.
O primeiro teste que vamos fazer é usar o comando “ping” para o endereço “primario” de nosso servidor DNS. Esse teste é importante porque somente o nosso servidor DNS sabe quem é o “primario.labredes.teste“.
Dessa forma, se não apontarmos para nosso servidor DNS não teremos como saber quem é o “primario.labredes.teste“.
Para testar vamos usar o comando abaixo.
ping primario.labredes.teste
Podemos ver que recebemos resposta do comando “ping” e inclusive temos a resposta do servidor BIND9 que está hospedado no IP “192.168.56.12“.
O segundo teste que vamos fazer é usar o comando “dig” para o nome do nosso servidor WEB. Nesse teste, não vamos informar o servidor DNS antes do nome que será consultado.
Dessa forma, o comando vai utilizar o servidor DNS default do host cliente.
Para fazer esse teste vamos usar o comando abaixo.
dig web.labredes.teste
Podemos verificar na consulta com o “dig” que tivemos uma resposta do servidor DNS informando que é um apelido para “www.labredes.teste” e inclusive apresentando o IP “192.168.56.102“.
Cliente não consegue usar meu servidor bind9 DNS
Se seu cliente não estiver usando seu DNS BIND9, altere o arquivo “/etc/resolv.conf“. Vamos forçá-lo a usar seu DNS BIND9 usando o comando abaixo:
sudo nano /etc/resolv.conf
Então, insira uma nova linha para “nameserver” apontando para seu servidor BIND9 DNS. No meu caso, meu servidor BIND9 DNS é “192.168.56.12“. Portanto, tenho que inserir a linha “nameserver 192.168.56.12” antes da linha “nameserver 127.0.0.53”.
Salve as alterações que fizemos no arquivo “/etc/resolv.conf”.
Reiniciando a interface do cliente após a nova configuração apontar para o nosso DNS. Use o comando abaixo:
sudo systemctl restart NetworkManager
Agora vamos ver se nosso cliente está apontando para nosso servidor DNS. Para isso, podemos usar o comando abaixo.
nmcli dev show | grep 'DNS'
Na figura acima, podemos ver que o cliente está apontando para o meu DNS que está com o IP “192.168.56.12”.
Abaixo vou mostrar um comando alternativo para ver se o cliente está apontando para o seu servidor BIND9 DNS.
sudo resolvectl status
Na figura acima, podemos ver que o cliente está apontando para o meu DNS que está com o IP “192.168.56.12”.
Veja mais:
Instalar Ubuntu 24 em VirtualBox
Como fazer X11 Forwarding com SSH
Juliana Mascarenhas
Data Scientist and Master in Computer Modeling by LNCC.
Computer Engineer