DNS Debian · 3 min read · Oct 02, 2025

Construindo Um Sistema DNS Debian

Construindo Um Sistema DNS Debian

Versão 1.0
Autor: Joe Topjian

OK, este é o último artigo sobre DNS… por um tempo, pelo menos.

Este artigo mostrará como construir um sistema DNS completo com Debian. Isso inclui um servidor Master, um servidor Slave, DDNS e um monte de DNSSEC. Estarei usando o BIND 9 para o servidor.

O Servidor Master

Primeiro, vamos colocar nosso servidor Master em funcionamento. Como o BIND é conhecido por ter sua cota de exploits, vamos colocá-lo em uma prisão chroot. Não vou cobrir isso, pois Falko escreveu um excelente guia sobre isso aqui.

Depois de ter tudo preso, faça o RNDC funcionar. RNDC é uma pequena ferramenta de linha de comando para controlar o BIND. Para usá-lo, copie o conteúdo de /etc/bind/rndc.key para /etc/bind/named.conf. Reinicie o BIND e você está pronto para começar. Agora você pode usar o RNDC para interagir com o BIND em vez de trabalhar diretamente com o BIND. Para mais informações sobre os comandos do RNDC, veja aqui.

Em seguida, é hora de criar o arquivo de zona. Para este exemplo, vou usar o TLD fictício hemingway. Não há razão realmente – apenas porque posso e sei com certeza que nunca entrará em conflito com um nome de domínio real.

Para organização, criei dois diretórios para armazenar os arquivos de zona, um master e um slave – para armazenar arquivos de zona master e slave, respectivamente.

/etc/bind/zones/master
/etc/bind/zones/slave

Não se esqueça de editar /etc/bind/named.conf.options e mudar a opção de diretório para “/etc/bind”.

O arquivo de zona ficará assim ( /etc/bind/zones/master/master.hemingway):

| $ORIGIN hemingway $TTL 1d @ IN SOA ns1 hostmaster ( 2005103008 ; serial 43200 900 604800 10800 ) NS hemingway. A 127.0.0.1 |

A zona reversa para o 192.168.1.0/24 ( /etc/bind/zones/192.168.1.rev) ficará assim:

| $TTL 1d ; $ORIGIN 1.168.192.IN-ADDR.ARPA. @ IN SOA ns1.hemingway. hostmaster.hemingway. ( 2005103001 2h 15m 2w 3h ) IN NS ns1.hemingway. IN NS ns2.hemingway. |

Agora edite /etc/bind/named.conf.local com as novas zonas:

| zone "hemingway" { type master; file "zones/master/master.hemingway"; }; |

| zone "1.168.192.IN-ADDR.ARPA" { type master; file "zones/192.168.1.rev"; }; |

Recarregue o DNS e verifique seus logs. Você não deve ter erros, mas você nunca sabe…

rndc reload

Agora que o BIND sabe qual domínio hospedar, é hora de adicionar alguns nomes de host a ele. Usaremos DDNS para isso. Para configurar o DDNS, você pode seguir meus artigos sobre DDNS aqui.

Para realmente adicionar os hosts com DDNS, vou usar meu script ddns.py.

ddns.py add jake.hemingway A 192.168.1.11
ddns.py add bill.hemingway A 192.168.1.12
ddns.py add robert.hemingway A 192.168.1.13
ddns.py add brett.hemingway A 192.168.1.14

Os arquivos PTR correspondentes também foram adicionados, mas estou pulando isso para economizar espaço.

Agora temos um servidor DNS Master totalmente funcional resolvendo quaisquer nomes de host que lhe dermos.

O Servidor Slave

Agora que o servidor Master está configurado, é hora de passar para o Slave. Em outra máquina, configure uma instalação do BIND em prisão, assim como o Master.

O Slave puxará transferências de zona do Master. Como essas transferências de zona vão pela rede em texto simples, vamos querer protegê-las.

Em ambos os arquivos /etc/bind/named.conf.options do master e do slave, adicione o seguinte

| dnssec-enable yes; |

Usando o comando dnssec-keygen descrito aqui, crie uma chave. Adicione o hash MD5 a uma nova declaração de chave em ambos os arquivos /etc/bind/named.conf:

| key "TRANSFER" { algorithm hmac-md5; secret "jXc2Lreaw4QHHTb/MjiHAw=="; }; |

No master, adicione a seguinte declaração de servidor a /etc/bind/named.conf:

| server IP-OF-SLAVE { keys { TRANSFER; }; }; |

No slave, faça o inverso:

| server IP-OF-MASTER { keys { TRANSFER; }; }; |

No master, adicione o seguinte aos blocos de zona em /etc/bind/named.conf.local:

| allow-transfer { key TRANSFER; }; |

O bloco de zona no Slave deve ficar assim:

| zone hemingway { type slave; file "zones/slave/slave.hemingway"; masters { IP-OF-MASTER; }; allow-notify { IP-OF-MASTER; }; }; |

Finalmente, certifique-se de que ambos os servidores tenham seus relógios sincronizados. As transferências de zona não ocorrerão se não estiverem.

Uma vez que você tenha terminado, inicie o servidor slave. Você deve agora ter um novo arquivo em /etc/bind/zones/slave/ da transferência de zona. Se não tiver, verifique seus logs – eles são muito verbosos com erros.

Finalizando

É isso! É muito trabalho e eu realmente passei por cima, mas isso deve colocá-lo em funcionamento. Para referência e mais informações, por favor, leia meus artigos sobre DDNS aqui e consulte o maravilhoso livro Pro DNS e BIND (não é uma propaganda – é realmente um bom livro!).

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.