Configuração de Servidores DNS Master-Slave com Resolução Direta e Reversa no Linux

Visão Geral do Cenário

A implementação de uma arquitetura DNS Master-Slave (Mestre-Escravo) é fundamental para garantir a alta disponibilidade e redundância na resolução de nomes dentro de uma rede. Neste guia, configuraremos um servidor principal (Master) e um secundário (Slave) para gerenciar zonas de resolução direta e reversa.

Ambiente de Implementação

  • Servidor Master: 192.168.1.10 (hosntame: srv-dns-master.exemplo.com)
  • Servidor Slave: 192.168.1.20 (hostname: srv-dns-slave.exemplo.com)
  • Servidor Web: 192.168.1.100 (hostname: www.exemplo.com)
  • Domínio: exemplo.com

1. Instalação e Configuração Inicial no Servidor Master

O primeiro passo é instalar o pacote BIND (Berkeley Internet Name Domain), que é o padrão de fato para serviços DNS no ecossistema Linux.

# Instalação dos pacotes necessários
yum install -y bind bind-utils

Edite o arquivo de configuração principal /etc/named.conf para permitir conexões externas e definir quem pode realizar consultas:

options {
    listen-on port 53 { any; };      // Escuta em todas as interfaces
    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";
    allow-query { any; };            // Permite consultas de qualquer origem
    recursion yes;
    dnssec-enable yes;
    dnssec-validation yes;
};

// Definição da Zona Direta
zone "exemplo.com" IN {
    type master;
    file "exemplo.com.fwd";          // Nome do arquivo de zona direta
    allow-transfer { 192.168.1.20; }; // Permite transferência para o servidor Slave
};

// Definição da Zona Reversa
zone "1.168.192.in-addr.arpa" IN {
    type master;
    file "exemplo.com.rev";          // Nome do arquivo de zona reversa
    allow-transfer { 192.168.1.20; };
};

2. Criação dos Arquivos de Zona no Master

Os arquivos de zona contêm os registros de recursos (RR). Eles devem ser criados no diretório /var/named/.

2.1 Zona Direta (/var/named/exemplo.com.fwd)

$TTL 86400
@   IN  SOA  srv-dns-master.exemplo.com. admin.exemplo.com. (
            2023102701 ; Serial
            3600       ; Refresh
            1800       ; Retry
            604800     ; Expire
            86400      ; Minimum TTL
)
    IN  NS  srv-dns-master.exemplo.com.
    IN  NS  srv-dns-slave.exemplo.com.
    IN  MX  10 mail.exemplo.com.

srv-dns-master IN  A      192.168.1.10
srv-dns-slave  IN  A      192.168.1.20
www            IN  A      192.168.1.100
mail           IN  A      192.168.1.10
web            IN  CNAME  www

2.2 Zona Reversa (/var/named/exemplo.com.rev)

$TTL 86400
@   IN  SOA  srv-dns-master.exemplo.com. admin.exemplo.com. (
            2023102701 ; Serial
            3600       ; Refresh
            1800       ; Retry
            604800     ; Expire
            86400      ; Minimum TTL
)
    IN  NS  srv-dns-master.exemplo.com.
    IN  NS  srv-dns-slave.exemplo.com.

10  IN  PTR srv-dns-master.exemplo.com.
20  IN  PTR srv-dns-slave.exemplo.com.
100 IN  PTR www.exemplo.com.

3. Ajuste de Permissões e Validação

Para que o serviço named funcione corretamente, o propreitário do grupo dos arquivos deve ser named e as permissões devem ser restritivas.

chown root:named /var/named/exemplo.com.fwd /var/named/exemplo.com.rev
chmod 640 /var/named/exemplo.com.fwd /var/named/exemplo.com.rev

# Verificação de sintaxe
named-checkconf /etc/named.conf
named-checkzone exemplo.com /var/named/exemplo.com.fwd
named-checkzone 1.168.192.in-addr.arpa /var/named/exemplo.com.rev

# Iniciar o serviço
systemctl enable named
systemctl start named

4. Configuração do Servidor DNS Slave

No servidor Slave (192.168.1.20), instale o BIND e configure o arquivo /etc/named.conf para atuar como escravo, recebendo os dados do mestre automaticamente.

zone "exemplo.com" IN {
    type slave;
    masters { 192.168.1.10; };       // IP do Servidor Master
    file "slaves/exemplo.com.fwd";   // Arquivo será criado automaticamente
};

zone "1.168.192.in-addr.arpa" IN {
    type slave;
    masters { 192.168.1.10; };
    file "slaves/exemplo.com.rev";
};

Após salvar, inicie o serviço no Slave. O BIND irá solicitar a transferência de zona (AXFR) e criará os arquivos no diretório /var/named/slaves/.

systemctl start named
ls /var/named/slaves/  # Verifique se os arquivos foram sincronizados

5. Testes de Resolução

Utilize a ferramenta dig para validar se ambos os servidores estão respondendo corretamente às consultas.

# Teste de resolução direta no Master
dig @192.168.1.10 www.exemplo.com

# Teste de resolução reversa no Slave
dig @192.168.1.20 -x 192.168.1.100

# Verificação de transferência de zona completa
dig -t axfr exemplo.com @192.168.1.10

Certifique-se de que o firewall (iptables ou fierwalld) permita o tráfego na porta 53 (UDP e TCP) para que a sincronização e as consultas funcionem sem interrupções.

Tags: DNS bind Linux CentOS Networking

Publicado em 7-22 19:34