DNS Setup · 5 min read · Oct 03, 2025

[Debian Sarge] Instalando um Sistema DNS Master/Slave Bind9

[Debian Sarge] Instalando um Sistema DNS Master/Slave Bind9

Versão: 1.0 - 23 de agosto de 2006

Bem-vindo

Neste tutorial, instalaremos 2 servidores DNS bind, um como o servidor master e o outro como o servidor slave. Por razões de segurança, faremos o chroot do bind9 em sua própria jaula.

Usar dois servidores para um domínio é uma configuração comumente utilizada e, para hospedar seu próprio domínio, você precisa ter pelo menos 2 servidores de domínio. Se um falhar, o outro pode continuar a atender seu domínio.

Nossa configuração usará o Debian Sarge 3.1 (estável) como base. Uma instalação simples, limpa e atualizada será suficiente, pois instalaremos os pacotes necessários com este tutorial.

Neste tutorial, usarei o domínio fictício “linux.lan”. Os servidores de nomes usarão 192.168.254.1 e 192.168.254.2 como seus IPs.

Algumas palavras finais antes de começarmos: eu li o tutorial do Joe (também neste site) e mais alguns tutoriais, mas nenhum deles funcionou sem algumas modificações. Portanto, fiz meu próprio tutorial. E ele DEVE funcionar de imediato :)


Instalando Software

Primeiro, você precisará de uma instalação limpa do Debian Sarge. Certifique-se de que está atualizado!

apt-get update; apt-get upgrade

Também precisamos de algumas ferramentas de construção do Debian, pois precisamos baixar pacotes fonte:

apt-get install devscripts

Em seguida, instalaremos o software necessário para o Bind. Para usar criptografia na transferência do arquivo de zona entre o master e o slave, precisamos de uma versão mais atualizada do Bind9 (versão >=9.3) do que a encontrada no repositório do Sarge. Usaremos a fonte do ramo -testing. Portanto, certifique-se de ter uma linha como esta em seu

/etc/apt/sources.list

:

deb-src http://---seu.mirrored.debian---/debian testing main contrib non-free

O Bind9 do testing depende do lsb-base do testing. Vamos pegá-lo:

(Explicação da sintaxe: o -y diz ao apt para responder sim a todas as perguntas, build-dep instala todos os pacotes necessários para -testing_packageX- do repositório do sarge e com -b a fonte é construída imediatamente.)

cd ~/a/dir/for/lsb-base/
apt-get -y build-dep lsb-base
apt-get source lsb-base -b
dpkg-i lsb-base*.deb

Em seguida, é a vez do Bind9:

cd ~/a/dir/for/bind9
apt-get -y build-dep bind9
apt-get source bind9 -b
dpkg -i *.deb

Agora todo o nosso software está instalado e pronto para ser configurado.

Configurando o Master

Primeiro, precisamos parar o bind9:

/etc/init.d/bind9 stop

Para fazer o chroot do bind, precisamos definir uma opção em

/etc/default/bind9

:

De:

OPTIONS="-u bind"

Para:

OPTIONS="-u bind -t /var/lib/named"

Agora ele será executado como o usuário ‘bind’ chrooted em ‘/var/lib/named’.

Em seguida, editamos a linha de forwarders em

/etc/bind/named.conf.options

para corresponder ao DNS do nosso ISP:

forwarders { 194.109.6.66; };

Esses passos são necessários para a jaula chroot:

mkdir -p /var/lib/named/etc
mkdir /var/lib/named/dev
mkdir -p /var/lib/named/var/cache/bind
mkdir -p /var/lib/named/var/run/bind/run
mv /etc/bind /var/lib/named/etc
ln -s /var/lib/named/etc/bind /etc/bind
mknod /var/lib/named/dev/null c 1 3
mknod /var/lib/named/dev/random c 1 8
chmod 666 /var/lib/named/dev/
chown -R bind:bind /var/lib/named/var/

chown -R bind:bind /var/lib/named/etc/bind

O Bind agora tem seu próprio diretório com espaço para arquivos .pid e arquivos de configuração. Para manter as coisas claras, fizemos um symlink de volta para /etc/.

Agora edite /etc/init.d/sysklogd para permitir o registro da atividade do bind:
De:

SYSLOGD=""

Para:

SYSLOGD="-a /var/lib/named/dev/log"

O passo final é adicionar o IP deste servidor DNS recém-instalado (o localhost) ao seu

/etc/resolv.conf

para usá-lo: echo “search linux.lan” > /etc/resolv.conf
echo “nameserver 127.0.0.1” >> /etc/resolv.conf

Agora reinicie o sysklogd e o bind9:

/etc/init.d/sysklogd restart
/etc/init.d/bind9 start

E teste !

ping www.google.com

Se você receber uma resposta, então seu servidor DNS master está funcionando e pronto para uso. Agora preencheremos e usaremos o domínio linux.lan com nosso novo servidor master.


Configurando o domínio linux.lan

O servidor DNS master está atualmente apenas encaminhando solicitações para o servidor do seu ISP. Portanto, agora instalaremos e configuraremos nosso próprio domínio e deixaremos nosso novo servidor lidar com todas as solicitações relacionadas a esse domínio.

Vamos começar criando o diretório onde armazenaremos o arquivo de zona. Este arquivo contém todas as informações sobre o domínio.

mkdir /etc/bind/zones/

Em seguida, criaremos o arquivo de zonas,

/etc/bind/zones/master_linux.lan

:

$TTL 3D  

@       IN      SOA     ns1.linux.lan. hostmaster.linux.lan. (
                        199802151       ; serial, data de hoje + número de série de hoje
                        8H              ; refresh, segundos
                        2H              ; retry, segundos
                        4W              ; expire, segundos
                        1D )            ; minimum, segundos
;
                TXT     "Linux.LAN, servindo SEU domínio :)"
                NS      ns1             ; Endereço Inet do servidor de nomes
        NS    ns2
                MX      10 mail        ; Exchanger de Email Primário
localhost    A    127.0.0.1
ns1        A    192.168.254.1
ns2        A    192.168.254.2
www        CNAME    ns1

Aqui criamos um arquivo de zona simples com ambos os servidores de nomes e um alias www para ns1. Só para o caso de termos um apache em execução no ns1 ;)

Agora edite /etc/bind/named.conf.local e adicione:

zone "linux.lan" {
        type master;
        file "/etc/bind/zones/master_linux.lan";
};

É isso, agora podemos reiniciar o bind e verificar se funciona:

/etc/init.d/bind9 restart
ping ns1.linux.lan

Neste estágio, você deve ter um servidor DNS funcionando e utilizável :)

Se disser que não consegue encontrar o domínio, talvez o dhclient tenha mudado sua entrada de servidor de nomes… Então mate-o.


Instalando o Slave

Basicamente, o slave usa o mesmo sistema básico que construímos na primeira parte (logo antes de adicionarmos o arquivo de zona). Faremos algumas pequenas mudanças tanto no master quanto no slave para que funcionem juntos. O arquivo de zonas será transferido pela rede usando criptografia.

A menos que indicado de outra forma, esses comandos são apenas para o slave.

Crie o diretório de zonas:

mkdir /etc/bind/zones

Para ambos, master E slave, edite /etc/bind/named.conf.options

e adicione:

dnssec-enable yes;

Agora precisamos de uma chave segura. Isso gerará um arquivo .private e um arquivo .key. A linha ‘key=’ no arquivo .private representa a chave hash.

dnssec-keygen -a hmac-md5 -b 128 -n host linux.lan

Adicione isso em seu

/etc/bind/named.conf

no master E no slave:

key "TRANSFER" {
        algorithm hmac-md5;
        secret "---HASHKEY---";
};

No master, adicionamos o IP do slave em

/etc/bind/named.conf

:

server 192.168.254.2 {
        keys {
        TRANSFER;
    };
};

E no slave, adicionamos o IP do master em

/etc/bind/named.conf

:

server 192.168.254.1 {
        keys {
        TRANSFER;
    };
};

Adicione a

/etc/bind/named.conf.local

:

zone "linux.lan" {
        type slave;
        file "/etc/bind/zones/slave_linux.lan";
        masters { 192.168.254.1; };
        allow-notify { 192.168.254.1; };
};

A última coisa necessária em AMBOS os hosts é adicionar isso a

/etc/bind/named.conf

:

include "/etc/bind/rndc.key";

Para ter uma transferência de zona bem-sucedida, ambos os sistemas precisam ter um relógio sincronizado, então:

apt-get -y install ntpdate

Reinicie o bind em ambas as máquinas e note o novo arquivo de zona no slave :)

Se você está se perguntando por que as atualizações no arquivo de zona em seu master parecem falhar, verifique as configurações de expiração etc. dentro do arquivo de zona.

Boa sorte com sua nova configuração DNS master/slave!

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.