DNS Server · 15 min read · Sep 08, 2025

Como Instalar um Servidor DNS com BIND no Rocky Linux 9

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, utilizado por mais de 70% dos 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, e 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 tutorial mostrará como configurar um Servidor DNS com BIND em um servidor Rocky Linux 9. O BIND é um dos softwares de Servidor DNS mais populares que fornece vários recursos, como DNS Autoritativo, DNS Apenas de Cache, Balanceamento de Carga DNS Básico, DNS Dividido, DNSSEC, IPv6 e muito mais.

Pré-requisitos

Com este tutorial, você configurará e implementará um Servidor DNS BIND com arquitetura Master-Slave. Portanto, você precisará de dois servidores Rocky Linux. Além disso, você precisará de privilégios de root/administrador em cada servidor.

Para configurar um servidor DNS público que possa gerenciar seu domínio (Servidor DNS Autoritativo), você também deve ter o nome de domínio registrado e ‘Glue Records’ configurados.

Além disso, neste guia, assumiremos que o SELinux está em execução no modo ‘permissivo’.

Preparando o Sistema

Para começar com este guia, você configurará o FQDN (Nome de Domínio Totalmente Qualificado) correto em cada um de seus servidores Rocky Linux. Isso pode ser feito através do utilitário de comando ‘hostnamectl‘ e do arquivo ‘/etc/hosts‘.

Abaixo estão os detalhes dos servidores que serão usados como exemplo para este guia:

Hostname    IP Address          FQDN                    Used as  
---------------------------------------------------------------  
ns1         192.168.5.100       ns1.howtoforge.local         Master  
ns2         192.168.5.120       ns2.howtoforge.local         Slave

No servidor mestre, execute o comando hostnamectl abaixo para configurar o fqdn para ‘ns1.howtoforge.local‘.

sudo hostnamectl set-hostname ns1.howtoforge.local

Abaixo, você também precisa executar o comando hostnamectl no servidor Slave para configurar o fqdn para ‘ns2.howtoforge.local‘.

sudo hostnamectl set-hostname ns2.howtoforge.local

Em seguida, abra o arquivo ‘/etc/hosts’ em ambos os servidores Master e Slave usando o seguinte comando do editor nano.

sudo nano /etc/hosts

Adicione a seguinte linha ao arquivo.

192.168.5.100   ns1.howtoforge.local     ns1  
192.168.5.120   ns2.howtoforge.local     ns2

Salve o arquivo e saia do editor quando terminar.

Por último, execute o seguinte comando ‘hostname’ para verificar o fqdn em cada servidor. Você deve ver que o servidor Master tem o fqdn como ‘ns1.howtoforge.local‘, e o servidor Slave tem o fqdn ‘ns2.howtoforge.local‘.

sudo hostname -f

Abaixo está a saída do servidor Master.

fqdn master server

E abaixo está a saída do servidor Slave.

fqdn slave server

Com o fqdn configurado, você está pronto para instalar o BIND nos servidores Rocky Linux.

Instalando Pacotes BIND

Por padrão, o repositório AppStream do Rocky Linux fornece a versão estável mais recente do pacote BIND. No momento da redação deste texto, a versão estável atual do BIND é a v9.16.

Nesta etapa, você instalará pacotes BIND em ambos os servidores Master e Slave. Em seguida, configure o BIND para rodar apenas no IPv4 e configure o firewalld para permitir a porta DNS.

Execute o comando dnf abaixo para instalar pacotes BIND em ambos os servidores Master e Slave. Quando solicitado para confirmação, digite y para confirmar e pressione ENTER para prosseguir.

sudo dnf install bind bind-utils

install bind named

Após a instalação dos pacotes BIND, abra a configuração ‘/etc/sysconfig/named‘ usando o seguinte comando do editor nano.

sudo nano /etc/sysconfig/named

Adicione a opção padrão ‘OPTIONS=..‘ com a seguinte linha. Esta opção de comando para ‘bind’ ou ‘named’ fará com que o BIND funcione apenas no IPv4.

OPTIONS="-4"

Salve o arquivo e saia do editor quando terminar.

Em seguida, execute o comando systemctl abaixo para iniciar e habilitar o serviço BIND ‘named‘. O serviço ‘named’ deve agora estar em execução e habilitado, o que fará com que ele inicie automaticamente na inicialização.

sudo systemctl start named  
sudo systemctl enable named

start enable named

Agora verifique o serviço ‘named’ para garantir que o serviço está em execução e habilitado através do seguinte comando.

sudo systemctl is-enabled named  
sudo systemctl status named

Você receberá uma saída semelhante à seguinte - O serviço BIND ‘named’ está habilitado e atualmente está em execução.

verify named

Com o serviço BIND ‘named’ em execução, você precisará adicionar a porta DNS ao firewalld, que está habilitado e em execução por padrão no Rocky Linux.

Execute o comando firewall-cmd abaixo para adicionar o serviço DNS ao firewalld. Em seguida, recarregue o firewalld para aplicar as alterações.

sudo firewall-cmd --add-service=dns --permanent  
sudo firewall-cmd --reload

Se você verificar a lista de serviços habilitados no firewalld, deverá ver que o serviço DNS está habilitado. Execute o comando firewall-cmd abaixo para verificar a lista de serviços.

sudo firewall-cmd --list-services

Saída:

setup firewalld

Neste ponto, você terminou a configuração do fqdn, instalou os pacotes BIND e também configurou o firewalld. Com isso em mente, você pode agora começar a configurar o BIND Master no servidor Master.

Configurando o Servidor DNS BIND Master

Nesta etapa, você configurará o servidor BIND Master usando o Rocky Linux ‘ns1.howtoforge.local‘ e o endereço IP do servidor é ‘192.168.5.100‘. Certifique-se de que você execute os seguintes comandos no servidor Master.

Você configurará o servidor BIND Master com os seguintes passos:

  • A Configuração Básica incluirá a configuração de ACLs (Listas de Controle de Acesso), definindo qual endereço IP executará o serviço BIND, configurando encaminhadores e muito mais.
  • Configurando Zonas - É aqui que você cria configurações para seu domínio. Isso inclui a configuração do domínio principal e a configuração do DNS reverso.

Configuração Básica

A configuração padrão do BIND na distribuição baseada em RHEL está disponível em ‘/etc/named.conf’.

Agora abra o arquivo ‘/etc/named.conf‘ usando o seguinte comando do editor nano abaixo.

sudo nano /etc/named.conf

Altere a configuração padrão com as seguintes linhas.

acl "trusted" {  
        192.168.5.100;    # ns1 - ou você pode usar localhost para ns1  
        192.168.5.120;    # ns2  
        192.168.5.0/24;  # redes confiáveis  
};  
  
options {  
        listen-on port 53 { 192.168.5.100; };  
  
        // listen-on-v6 port 53 { ::1; };  
          
        directory       "/var/named";  
        dump-file       "/var/named/data/cache_dump.db";  
        statistics-file "/var/named/data/named_stats.txt";  
        memstatistics-file "/var/named/data/named_mem_stats.txt";  
        secroots-file   "/var/named/data/named.secroots";  
        recursing-file  "/var/named/data/named.recursing";  
          
        allow-query     { localhost; trusted; };  
  
        recursion yes;  
        allow-recursion { trusted; };  
        allow-transfer { localhost; 192.168.5.120; };  
  
        forwarders {  
                8.8.8.8;  
                1.1.1.1;  
        };

Salve o arquivo e saia do editor quando terminar.

named.conf file

Com esta configuração, você configurará o BIND com as seguintes configurações:

  • Configure uma ACL ‘trusted‘ que permite qualquer consulta de redes locais.
  • Execute o serviço BIND em ‘192.168.5.100‘ com a porta padrão ‘53‘.
  • Habilite a recursão e permita a recursão das redes da ACL ‘trusted‘.
  • Permita a transferência de zonas para o servidor Slave com o endereço IP ‘192.168.5.120‘.
  • Configure encaminhadores com o servidor DNS público 1.1.1.1 do Cloudflare e 8.8.8.8 do Google.

Em seguida, execute o comando abaixo para verificar a configuração do BIND ‘/etc/named.conf‘.

sudo named-checkconf /etc/named.conf

Por último, execute o comando systemctl abaixo para reiniciar o serviço BIND ‘named’ e aplicar as alterações.

sudo systemctl restart named

Você agora terminou a configuração básica do Servidor DNS BIND.

Configurando Zonas

Agora você configurará zonas com o Servidor DNS BIND. Você criará um novo Servidor DNS com o endereço ‘ns1.howtoforge.local’ e ‘ns2.howtoforge.local’.

Para começar, abra a configuração do BIND ‘/etc/named.conf‘ através do comando do editor nano abaixo.

sudo nano /etc/named.conf

Adicione a seguinte configuração ao final da linha.

include "/etc/named/zones.conf.local";

Salve o arquivo e saia do editor quando terminar.

Em seguida, crie uma nova configuração ‘/etc/named/zones.conf.local‘ usando o comando do editor nano abaixo.

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

Adicione as seguintes linhas ao arquivo.

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

Salve e feche o arquivo quando terminar.

Com esta configuração, você definirá as seguintes configurações:

  • Crie duas zonas para o domínio ‘howtoforge.local‘ e o DNS reverso ‘5.168.192.in-addr.arpa‘.
  • Ambas as zonas do tipo ‘master‘.
  • Permita a transferência de zona para o Servidor DNS Slave que estará em execução no endereço IP do servidor ‘192.168.5.120‘.

zones list

Em seguida, crie uma nova configuração de zona DNS, ‘/var/named/db.howtoforge.local’, usando o seguinte comando do editor nano.

sudo nano /var/named/db.howtoforge.local

Adicione as seguintes linhas ao arquivo.

;  
; 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.100  
ns2.howtoforge.local.          IN      A       192.168.5.120  
  
; 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.50  
mail.howtoforge.local.       IN      A      192.168.5.15

Salve e feche o arquivo quando terminar.

Neste exemplo, você configurará zonas com as seguintes configurações:

  • Defina os registros do Servidor de Nomes ‘ns1.howtoforge.local‘ com o endereço IP ‘192.168.5.100‘ e o ‘ns2.howtoforge.local‘ com o endereço IP ‘192.168.5.120‘.
  • Defina dois domínios adicionais, ‘howtoforge.local‘, que serão resolvidos para o endereço IP do servidor ‘192.168.5.50‘ e o domínio ‘mail.howtoforge.local‘ para o endereço IP ‘192.168.5.15‘.
  • Você também criará um registro MX para o domínio ‘howtoforge.local‘ que o servidor de e-mail ‘mail.howtoforge.local’ irá gerenciar.

zones nameserver

Em seguida, você começará a configurar o DNS reverso para o domínio howtoforge.local.

Crie uma nova configuração de DNS reverso ‘/var/named/db.192.168.5‘ usando o comando do editor nano abaixo.

sudo nano /var/named/db.192.168.5

Adicione as seguintes linhas ao arquivo.

;  
; 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  
100   IN      PTR     ns1.howtoforge.local.    ; 192.168.5.100  
120   IN      PTR     ns2.howtoforge.local.    ; 192.168.5.120  
50    IN      PTR     howtoforge.local.        ; 192.168.5.50  
15    IN      PTR     mail.howtoforge.local.   ; 192.168.5.15

Salve e feche o arquivo quando terminar.

Com esta configuração, você configurará o DNS reverso ou registros PTR como abaixo.

  • Na configuração de DNS reverso, você também definirá o servidor de nomes ns1.howtoforge.local e ns2.howtoforge.local.
  • Cada configuração de DNS reverso usa o último número do endereço IP que é resolvido para cada domínio. Neste exemplo, o servidor de nomes ns1.howtoforge.local com o endereço IP ‘192.168.5.100’, e o registro PTR deve ser ‘100‘.
  • O restante dos registros PTR é o mesmo que descrito acima.

zones reverse dns

Neste ponto, você criou duas configurações de zona para o domínio ‘howtoforge.local‘ e criou um servidor de nomes ‘ns1.howtoforge.local‘ e ‘ns2.howtoforge.local‘.

Agora execute o comando chmod abaixo para alterar a propriedade de ambas as configurações de zona.

sudo chown -R named: /var/named/{db.howtoforge.local,db.192.168.5}

Em seguida, verifique os arquivos de configuração de zona através do utilitário de comando ‘named-checkconf‘ abaixo.

sudo named-checkconf
sudo named-checkzone howtoforge.local /var/named/db.howtoforge.local  
sudo named-checkzone 5.168.192.in-addr.arpa /var/named/db.192.168.5

Se você tiver configurações BIND adequadas, receberá a saída como a seguinte captura de tela.

setup master bind dns server

Por último, execute o comando systemctl abaixo para reiniciar o serviço BIND ‘named’ e aplicar as alterações. Em seguida, verifique o status do serviço BIND para garantir que o serviço está em execução.

sudo systemctl restart named  
sudo systemctl status named

Você receberá uma saída semelhante à seguinte - o serviço BIND ‘named‘ está em execução e você terminou a configuração do BIND Master.

restart verify master

Na próxima etapa, você configurará o servidor BIND Slave.

Configurando o Servidor DNS BIND Slave

Após configurar o servidor DNS Master, você começará a configurar o servidor BIND Slave no servidor ‘ns2.howtoforge.local’ com o endereço IP ‘192.168.5.120’.

A configuração básica para ‘named.conf’ é semelhante à do BIND Master, e para os arquivos de zona, você pode definir o nome do arquivo sem criar um arquivo real no servidor BIND Slave.

Antes de começar, certifique-se de que você execute os seguintes comandos no servidor BIND Slave.

Agora abra a configuração do BIND ‘/etc/named.conf‘ no servidor Slave através do comando do editor nano abaixo.

sudo nano /etc/named.conf

Altere a configuração padrão com as seguintes linhas.

acl "trusted" {  
        192.168.5.100;    # ns1 - ou você pode usar localhost para ns1  
        192.168.5.120;    # ns2  
        192.168.5.0/24;  # redes confiáveis  
};  
  
options {  
        listen-on port 53 { 192.168.5.120; };  
  
        //listen-on-v6 port 53 { ::1; };  
          
        directory       "/var/named";  
        dump-file       "/var/named/data/cache_dump.db";  
        statistics-file "/var/named/data/named_stats.txt";  
        memstatistics-file "/var/named/data/named_mem_stats.txt";  
        secroots-file   "/var/named/data/named.secroots";  
        recursing-file  "/var/named/data/named.recursing";  
  
        allow-query     { any; };  
  
        recursion yes;  
        allow-recursion { trusted; };  
        allow-transfer { none; };  
  
        forwarders {  
                8.8.8.8;  
                1.1.1.1;  
        };  

};

As configurações são semelhantes ao servidor BIND Master, e abaixo estão algumas diferenças nas configurações.

  • O serviço BIND estará em execução no endereço IP ‘192.168.5.120‘ no servidor Slave.
  • A recursão está habilitada, mas a ‘allow-transfer’ está configurada como ‘none‘.

named.conf slave dns bind

Agora adicione a seguinte linha ao final do arquivo ‘named.conf’ para definir zonas.

include "/etc/named/zones.conf.local";

Salve o arquivo e saia do editor quando terminar.

Em seguida, crie uma nova configuração ‘/etc/named/zones.conf.local’ usando o comando do editor nano.

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

Adicione as seguintes linhas ao arquivo.

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

Salve e feche o arquivo quando terminar.

Com isso, você definirá algumas configurações abaixo no servidor BIND Slave:

  • Defina duas zonas para o domínio ‘howtoforge.local‘ e seu DNS reverso.
  • Ambas as zonas do tipo ‘slave‘.
  • O arquivo de zona para cada uma será retirado do diretório ‘/var/named/slaves‘, que é transferido do servidor BIND Master.

zones settings

Em seguida, execute o comando ‘named-checkconf’ abaixo para verificar as configurações BIND. Em seguida, reinicie o serviço BIND ‘named’ no servidor Slave através do comando systemctl como abaixo.

sudo named-checkconf  
sudo systemctl restart named

Você não terá mensagens de erro se tiver uma configuração BIND adequada.

Por último, execute o comando systemctl abaixo para verificar o serviço BIND ‘named‘ no servidor Slave para garantir que o serviço está em execução.

sudo systemctl status named

Você agora receberá uma saída semelhante à seguinte - o serviço BIND ‘named’ está em execução no servidor BIND Slave.

check named

Neste ponto, você terminou a instalação do BIND DNS com a arquitetura Master-Slave. Você agora estará pronto para começar a testar a partir da máquina cliente.

Testando a partir do Cliente

Este exemplo usa um sistema Debian como a máquina cliente, então instale alguns pacotes abaixo via APT antes de começar.

sudo apt install dnsutils bind9-utils

Digite y quando solicitado para confirmação e pressione ENTER para prosseguir.

install dnsutils

Em seguida, 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 Cloudflare. Quando a máquina cliente solicitar informações sobre o nome de domínio, as informações serão retiradas do resolvedor DNS, de cima para baixo.

nameserver 192.168.5.100  
nameserver 192.168.5.120  
nameserver 1.1.1.1  
search howtoforge.local

Salve e feche o arquivo quando terminar.

Agora você está pronto para verificar seu servidor 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.50“, enquanto o subdomínio “mail.howtoforge.local“ é tratado pelo endereço IP do servidor “192.168.5.15“.

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

Verificando o nome de domínio howtoforge.local.

verify domain

verificando o subdomínio mail.howtoforge.local.

verify domain name

Em seguida, execute o comando dig 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 responsável pelo e-mail do domínio principal “howtoforge.local“.

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

verify mx records

Você 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 validar o DNS reverso para alguns endereços IP.

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

slookup 192.168.5.100  
slookup 192.168.5.120  
slookup 192.168.5.50  
slookup 192.168.5.15

verify nslookup

Neste ponto, você terminou a instalação do Servidor DNS BIND com a arquitetura Master-Slave no Rocky Linux. Você também aprendeu como testar o Servidor DNS através de vários utilitários de comando, como dig e nslookup.

Conclusão

Parabéns! Ao longo deste tutorial, você aprendeu a instalação e configuração do Servidor DNS BIND nos servidores Rocky Linux 9. Você configurou com sucesso o Servidor DNS BIND Master-Slave usando dois servidores Rocky Linux diferentes. Além disso, você aprendeu os comandos básicos do Dig e Nslookup para verificar e validar 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.