Servidor DNS · 14 min read · Sep 08, 2025

Como Configurar um Servidor DNS com BIND no Ubuntu 22.04

BIND ou Berkeley Internet Name Domain é um software de servidor DNS gratuito e de código aberto. É um dos softwares de servidor DNS mais populares, usado por mais de 70% do DNS na Internet. O BIND existe desde a década de 1980, sendo conhecido por sua flexibilidade, desempenho e recursos. O BIND pode ser usado tanto como DNS autoritativo quanto como DNS de cache, suporta balanceamento de carga, atualização dinâmica, DNS dividido, DNSSEC, IPv6 e muito mais.

O software DNS BIND é um dos servidores DNS mais confiáveis para sistemas operacionais semelhantes ao Unix. Está disponível na maioria das distribuições Linux e fornece ferramentas adicionais para diagnóstico e teste do servidor DNS.

Este guia ensinará você a instalar o Servidor DNS com BIND no servidor Ubuntu 22.04. Este tutorial mostrará como configurar a instalação do servidor DNS BIND Master-Slave usando dois servidores Ubuntu.

Pré-requisitos

Antes de começar com este guia, você deve ter os seguintes requisitos:

  • Dois Servidores Ubuntu 22.04.
  • Um usuário não-root com privilégios de root/administração.

Configurando FQDN (Nome de Domínio Totalmente Qualificado)

Antes de começar a instalar os pacotes BIND, você deve garantir que o nome do host e o FQDN de seus servidores estejam corretos. Nesta demonstração, teremos dois servidores Ubuntu com os seguintes detalhes:

Hostname    IP Address      FQDN                Used As  
---------------------------------------------------------  
ns1         192.168.5.21    ns1.howtoforge.local     BIND Master  
ns2         192.168.5.22    ns2.howtoforge.local     BIND Slave

Agora faça login em cada servidor e execute o seguinte comando para configurar o FQDN (Nome de Domínio Totalmente Qualificado).

Configurar FQDN no servidor “ ns1 “.

sudo hostnamectl set-hostname ns1.howtoforge.local

Configurar FQDN no servidor “ ns2 “.

sudo hostnamectl set-hostname ns2.howtoforge.local

Em seguida, edite o arquivo “ /etc/hosts “ usando o seguinte comando.

sudo nano /etc/hosts

Adicione a seguinte configuração a cada servidor.

192.168.5.21 ns1.howtoforge.local ns1  
192.168.5.22 ns2.howtoforge.local ns2

Salve e feche o arquivo quando terminar.

Por último, verifique e confirme o FQDN em cada servidor usando o seguinte comando. No servidor “ ns1 “, você obterá o FQDN como “ ns1.howtoforge.local “, e no servidor “ ns2 “, você obterá a saída “ ns2.howtoforge.local “.

sudo hostname -f

Instalando Pacotes BIND

Os pacotes Bind estão disponíveis por padrão no repositório do servidor Ubuntu. Agora você pode instalar facilmente o Bind usando o comando apt em ambos os servidores “ns1” e “ns2”.

Execute o comando apt abaixo para atualizar e atualizar os repositórios do Ubuntu.

sudo apt update

Depois disso, instale os pacotes Bind usando o seguinte comando. Digite Y para confirmar a instalação e pressione ENTER para continuar. E a instalação começará.

sudo apt install bind9 bind9utils bind9-doc dnsutils

install bind

Após a instalação do Bind ser concluída, edite a configuração “ /etc/default/named “ usando o seguinte comando.

sudo nano /etc/default/named

A linha “ OPTIONS= “ permite que você configure opções específicas quando o serviço BIND estiver em execução. Nesta demonstração, você executará o Bind apenas com IPv4, então você precisará fazer a linha “ OPTIONS “ como abaixo.

OPTIONS="-u bind -4"

Salve e feche o arquivo quando terminar.

Agora execute o comando abaixo para reiniciar o serviço Bind “ named “. Em seguida, verifique e confirme o status do serviço BIND. Você deve ver que o serviço Bind “ named “ está em execução em ambos os servidores.

sudo systemctl restart named  
sudo systemctl status named

setup bind

Configurando BIND Master

Após instalar os pacotes BIND em ambos os servidores “ns1” e “ns2”, você estará configurando o servidor DNS BIND. Você configurará o servidor “ns1” como o Master do servidor DNS BIND. Você pode executar o BIND em um único servidor, mas é recomendado usar vários servidores para configurar o Servidor DNS de Alta Disponibilidade.

Volte para a sessão do terminal do servidor “ ns1 “.

Execute o comando abaixo para editar o arquivo de configuração “ /etc/bind/named.conf.options “.

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

Adicione a seguinte configuração ao arquivo no topo da linha, antes da linha “ options {….}; “.

Com esta configuração, você estará criando uma ACL (Lista de Controle de Acesso) com o nome “ trusted “, que inclui todos os endereços IP e redes confiáveis em seu ambiente. Além disso, certifique-se de adicionar o endereço IP do servidor local “ ns1 “ e o endereço IP do servidor DNS secundário “ ns2 “.

acl "trusted" {  
        192.168.5.21;    # ns1 - ou você pode usar localhost para ns1  
        192.168.5.22;    # ns2  
        192.168.5.0/24;  # redes confiáveis  
};

Agora faça alterações na seção “ options {..}; “ como abaixo.

No exemplo a seguir, estamos desativando o suporte para IPv6 comentando a opção “ listen-on-v6 “, habilitando e permitindo a recursão da ACL “ trusted “, e executando o serviço BIND em um endereço IP específico “ ns1 “ “ 192.168.5.21 “. Além disso, estamos desativando a transferência de zona padrão e definindo os encaminhadores específicos para o servidor DNS BIND para o Google Public DNS “ 8.8.8.8 “ e “ 8.8.4.4 “.

options {  
        directory "/var/cache/bind";  
        //listen-on-v6 { any; };        # desativar bind em IPv6  
        recursion yes;                 # habilita consultas recursivas  
        allow-recursion { trusted; };  # permite consultas recursivas de "trusted" - referenciado à ACL  
        listen-on { 192.168.5.21; };   # endereço IP ns1  
        allow-transfer { none; };      # desativar transferências de zona por padrão  
        forwarders {  
                8.8.8.8;  
                1.1.1.1;  
        };  
};

Salve e feche o arquivo quando terminar.

Por último, execute o seguinte comando para verificar e confirmar o arquivo de configuração “ /etc/bind/named.conf.options “. Se não houver mensagem de saída, então sua configuração está correta.

sudo named-checkconf /etc/bind/named.conf.options

Configurando Zonas

Após configurar a configuração básica do BIND master, agora você estará configurando zonas para seu nome de domínio. No exemplo a seguir, usaremos o nome de domínio “ howtoforge.local “ com o servidor de nomes “ ns1.howtoforge.local “ e “ ns2.howtoforge.local “.

Edite o arquivo de configuração “ /etc/bind/named.local “ usando o seguinte comando.

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

Nesta configuração, você estará definindo dois arquivos de zona, zona direta e zona reversa para seu nome de domínio. A zona direta conterá a configuração de onde seus nomes de domínio serão resolvidos para o endereço IP, enquanto a zona reversa traduzirá o endereço IP para qual nome de domínio.

No exemplo a seguir, definiremos a zona direta “ /etc/bind/zones/db.howtoforge.local “ para o domínio “ howtoforge.local “ e a zona reversa “ /etc/bind/zones/db.192.168.5 “.

zone "howtoforge.local" {  
    type master;  
    file "/etc/bind/zones/db.howtoforge.local"; # caminho do arquivo de zona  
    allow-transfer { 192.168.5.22; };           # endereço IP ns2 - DNS secundário  
};  
  
zone "5.168.192.in-addr.arpa" {  
    type master;  
    file "/etc/bind/zones/db.192.168.5";  # subnet 192.168.5.0/24  
    allow-transfer { 192.168.5.22; };  # endereço IP privado ns2 - DNS secundário  
};

Salve e feche o arquivo quando terminar.

Em seguida, execute o seguinte comando para criar um novo diretório “ /etc/bind/zones “ que será usado para armazenar arquivos de configuração de zona.

sudo mkdir -p /etc/bind/zones/

Depois disso, copie a configuração de zona direta padrão “/etc/bind/zones/db.howtoforge.local” e edite o arquivo usando o seguinte comando.

sudo cp /etc/bind/db.local /etc/bind/zones/db.howtoforge.local  
sudo nano /etc/bind/zones/db.howtoforge.local

Altere o registro SOA padrão com seu nome de domínio. Além disso, você precisará alterar o número “ Serial “ dentro dos registros SOA toda vez que fizer alterações no arquivo, e este deve ser o mesmo número “Serial” com o servidor DNS secundário/escravo.

Então, você pode definir registros NS e registros A para seu servidor DNS. Neste exemplo, o servidor de nomes será “ ns1.howtoforge.local “ com o endereço IP do registro A “ 192.168.5.21 “ e “ ns2.howtoforge.local “ com o registro A do endereço IP do servidor DNS secundário “ 192.168.5.22 “.

Por último, você pode definir outros nomes de domínio. Neste exemplo, definiremos um registro MX (manipulador de e-mail) para o domínio “ howtoforge.local “ que será tratado pelo servidor de e-mail “ mail.howtoforge.local “. Além disso, definiremos o nome de domínio “ howtoforge.local “ que será resolvido para o servidor com o endereço IP “ 192.168.5.100 “ e o subdomínio para o servidor de e-mail “ mail.howtoforge.local “ para o endereço IP do servidor “ 192.168.5.120 “.

;  
; Arquivo de dados BIND para a interface de loopback local  
;  
$TTL    604800  
@       IN      SOA     ns1.howtoforge.local. admin.howtoforge.local. (  
                              3         ; Serial  
                         604800         ; Refresh  
                          86400         ; Retry  
                        2419200         ; Expire  
                         604800 )       ; Negative Cache TTL  
;  
; Registros NS para servidores de nomes  
    IN      NS      ns1.howtoforge.local.  
    IN      NS      ns2.howtoforge.local.  
; Registros A para servidores de nomes  
ns1.howtoforge.local.          IN      A       192.168.5.21  
ns2.howtoforge.local.          IN      A       192.168.5.22  
; Manipulador de e-mail ou registro MX para o domínio howtoforge.local  
howtoforge.local.    IN     MX   10   mail.howtoforge.local.  
; Registros A para nomes de domínio  
howtoforge.local.            IN      A      192.168.5.100  
mail.howtoforge.local.       IN      A      192.168.5.120

Salve e feche o arquivo quando terminar.

setup forward zone

Em seguida, copie o arquivo de configuração da zona reversa padrão para “ /etc/bind/zones/db.192.168.5 “ e edite o novo arquivo usando o seguinte comando.

sudo cp /etc/bind/db.127 /etc/bind/zones/db.192.168.5  
sudo nano /etc/bind/zones/db.192.168.5

Altere o registro SOA padrão usando seu nome de domínio. Além disso, não se esqueça de alterar o número “ Serial “ dentro do registro SOA.

Defina registros NS para seus servidores DNS. Estes são os mesmos servidores de nomes que você usou na zona direta.

Por último, defina os registros PTR para seus nomes de domínio. O número nos registros PTR é o último número do endereço IP. Neste exemplo, o servidor de nomes “ ns1.howtoforge.local “ é resolvido para o endereço IP “ 192.168.5.21 “, então agora o registro PTR será “ 21 “ e assim por diante para outros nomes de domínio.

;  
; Arquivo de dados reverso BIND para a interface de loopback local  
;  
$TTL    604800  
@       IN      SOA     ns1.howtoforge.local. admin.howtoforge.local. (  
                              3         ; Serial  
                         604800         ; Refresh  
                          86400         ; Retry  
                        2419200         ; Expire  
                         604800 )       ; Negative Cache TTL  
;  
; servidores de nomes - registros NS  
      IN      NS      ns1.howtoforge.local.  
      IN      NS      ns2.howtoforge.local.  
; Registros PTR  
21   IN      PTR     ns1.howtoforge.local.    ; 192.168.5.21  
22   IN      PTR     ns2.howtoforge.local.    ; 192.168.5.22  
100  IN      PTR     howtoforge.local.        ; 192.168.5.100  
120  IN      PTR     mail.howtoforge.local.   ; 192.168.5.120

Salve e feche o arquivo quando terminar.

setup reverse zone

Agora execute o seguinte comando para verificar as configurações do BIND e ter certeza de que não há mensagens de erro.

sudo named-checkconf

Em seguida, execute o seguinte comando para verificar e confirmar cada arquivo de zona que você acabou de criar, o arquivo de configuração da zona direta e da zona reversa. Se seus arquivos de zona não tiverem erro, você deve ver a mensagem de saída como “ OK “. Se não houver erro, o comando mostrará qual linha do arquivo causou um erro.

sudo named-checkzone howtoforge.local /etc/bind/zones/db.howtoforge.local  
sudo named-checkzone 5.168.192.in-addr.arpa /etc/bind/zones/db.192.168.5

check zone files

Para finalizar a configuração do BIND Master, execute o comando abaixo para reiniciar o serviço BIND e aplicar as novas alterações nas configurações que você fez.

sudo systemctl restart named

Configurando BIND Slave

Agora você terminou a configuração do Servidor DNS Master BIND. É hora de configurar o servidor “ns2” como o secundário ou escravo do servidor DNS BIND.

O servidor Master armazena arquivos de zona que contêm a configuração DNS do seu domínio e lida com consultas recursivas ou iterativas. O servidor DNS secundário/escravo armazena registros DNS por um período de tempo temporariamente, e esses registros DNS são transferidos automaticamente do servidor Master BIND.

Agora vá para a sessão do terminal do “ ns2 “ e comece a configurar o servidor “ ns2 “ como um Secundário/Escravo do servidor DNS BIND.

Execute o seguinte comando para editar o arquivo de configuração “ /etc/bind/named.conf.options

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

No topo da linha, adicione a seguinte configuração. Isso criará a mesma ACL (Lista de Controle de Acesso) que no servidor Master.

acl "trusted" {  
        192.168.5.21;    # ns1  
        192.168.5.22;    # ns2 - ou você pode usar localhost para ns2  
        192.168.5.0/24;  # redes confiáveis  
};

Dentro da linha “ options {…}; “, você pode alterar a configuração como abaixo. Esta configuração ainda é a mesma que no servidor DNS BIND Master, e a única diferença aqui é a opção “ listen-on “ que é especificada para o endereço IP do “ ns2 “.

options {  
        directory "/var/cache/bind";  
        //listen-on-v6 { any; };        # desativar bind em IPv6  
        recursion yes;                 # habilita consultas recursivas  
        allow-recursion { trusted; };  # permite consultas recursivas de "trusted" - referenciado à ACL  
        listen-on { 192.168.5.22; };   # endereço IP ns2  
        allow-transfer { none; };      # desativar transferências de zona por padrão  
        forwarders {  
                8.8.8.8;  
                1.1.1.1;  
        };  
};

Salve e feche o arquivo quando terminar.

Em seguida, edite o arquivo de configuração “ /etc/bind/named.conf.local “ usando o seguinte comando para configurar o servidor “ ns2 “ como o Servidor DNS Secundário/Escravo.

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

Adicione a seguinte configuração ao arquivo. Como você pode ver, estamos definindo as zonas direta e reversa, mas com o “ type slave “ e definindo o servidor Master DNS “ 192.168.5.21 “. Você não precisa criar o arquivo de zona porque os registros e dados DNS serão transferidos automaticamente do servidor Master DNS e serão armazenados temporariamente por um período de tempo no servidor DNS secundário/escravo.

zone "howtoforge.local" {  
    type slave;  
    file "/etc/bind/zones/db.howtoforge.local";  
    masters { 192.168.5.21; };           # endereço IP ns1 - DNS master  
};  
  
zone "5.168.192.in-addr.arpa" {  
    type slave;  
    file "/etc/bind/zones/db.192.168.5";  
    masters { 192.168.5.21; };  # endereço IP ns1 - DNS master  
};

Salve e feche o arquivo quando terminar.

Agora execute o seguinte comando para verificar e confirmar a configuração do BIND e ter certeza de que todas as configurações estão corretas. Em seguida, você pode reiniciar o serviço BIND “named” no servidor “ ns2 “ para aplicar novas alterações. E você agora terminou a configuração no servidor “ ns2 “ como um secundário/escravo do Servidor DNS BIND.

sudo named-checkconf  
sudo systemctl restart named

setup secondary dns

Por último, execute o seguinte comando para verificar e confirmar o serviço BIND “ named “ no servidor “ ns2 “. E tenha certeza de que o serviço “ named “ está em execução.

sudo systemctl status named

check named status secondary dns

Verificando o Servidor DNS a partir da Máquina Cliente

Na máquina cliente, existem várias maneiras de configurar o resolvedor DNS. Você pode configurar o resolvedor DNS a partir do NetworkManager ou da configuração do netplan. Mas, a maneira mais fácil é configurar o resolvedor DNS manualmente através do arquivo “/etc/resolv.conf”. Isso permite que você configure um resolvedor DNS estático para máquinas clientes.

Execute o seguinte comando para remover o arquivo de link padrão “ /etc/resolv.conf “ e criar um novo arquivo usando o editor nano.

sudo unlink /etc/resolv.conf  
sudo nano /etc/resolv.conf

Adicione a seguinte configuração ao arquivo. Na configuração a seguir, estamos definindo três resolvedores diferentes, o BIND DNS Master, o Servidor DNS BIND Secundário e o resolvedor DNS público do Google. Quando a máquina cliente solicitar informações sobre o nome de domínio, as informações serão obtidas do resolvedor DNS, de cima para baixo.

nameserver 192.168.5.21  
nameserver 192.168.5.22  
nameserver 8.8.8.8  
search howtoforge.local

Salve e feche o arquivo quando terminar.

Em seguida, execute o comando abaixo para instalar algumas utilidades DNS em sua máquina cliente. Neste exemplo, a máquina cliente é um sistema Ubuntu, então estamos instalando a utilidade DNS usando o comando apt como abaixo.

sudo apt install dnsutils bind9-utils

Após instalar a utilidade DNS em seu sistema, você pode começar a verificar todos os registros DNS a partir da máquina cliente.

Execute o comando dig abaixo para verificar o nome de domínio “ howtoforge.local “ e “ mail.howtoforge.local “. E você deve ver que “ howtoforge.local “ é resolvido para o endereço IP do servidor “ 192.168.5.100 “, enquanto o subdomínio “ mail.howtoforge.local “ é tratado pelo endereço IP do servidor “ 192.168.5.120 “.

dig howtoforge.local +short  
dig howtoforge.local

check dns records dig

dig mail.howtoforge.local +short  
dig mail.howtoforge.local

check dns record using dig

Em seguida, execute o comando dig como abaixo para verificar o manipulador de e-mail para o nome de domínio “howtoforge.local”. E você deve obter a saída de que “ mail.howtoforge.local “ é o manipulador de e-mail para o domínio principal “ howtoforge.local “.

dig howtoforge.local MX +short  
dig howtoforge.local MX

check mx records

Agora você também pode verificar a configuração da zona reversa para seu nome de domínio usando o comando nslookup.

Execute o comando nslookup abaixo para verificar e confirmar o DNS reverso para alguns endereços IP.

Agora você deve ver que o endereço IP “ 192.168.5.21 “ é revertido para o servidor de nomes “ ns1.howtoforge.local “, o endereço IP “ 192.168.5.22 “ é revertido para o servidor de nomes “ ns2.howtoforge.local “, e o endereço IP “ 192.168.5.100 “ é revertido para o nome de domínio principal “ howtoforge.local “, e por último o endereço IP “ 192.168.5.120 “ é revertido para o subdomínio “ mail.howtoforge.local “.

slookup 192.168.5.21  
slookup 192.168.5.22  
slookup 192.168.5.100  
slookup 192.168.5.120

check reverse dns

Conclusão

Parabéns! Ao longo deste tutorial, você aprendeu a instalação e configuração do Servidor DNS BIND nos servidores Ubuntu 22.04. Você configurou com sucesso o Servidor DNS BIND Master-Slave usando dois servidores Ubuntu diferentes. Além disso, você aprendeu os comandos básicos do Dig e Nslookup para verificar e confirmar registros e configurações DNS.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.