Servidor DNS Secundário

Vamos então instalar o nosso servidor secundário de DNS, caso o primário falhe, ele assume as querys DNS de domínios para as quais somos SOA.

De notar que no servidor secundário, não se configuram alterações nas zonas (domínios), sempre que houver uma alteração a uma zona, deve ser feita no servidor primário. O secundário de forma automática faz a transferência dessa zona já com as alterações.
Essa transferência é feita usando o protocolo de transporte TCP com o Porto 53.

Quando um cliente faz uma query DNS a um servidor DNS seja primário ou secundário, o protocolo de transporte é o UDP ao porto de destino 53

Vejam uma captura feita com wireshark a uma query DNS ao A Record de  www.google.com feita pelo portátil ao meu DNS primário (Gandalf)
O Porto de destino do pacote é ao porto UDP 53


e resposta do Gandalf com origem UDP na porta 53


Um servidor DNS secundário utiliza o Porto TCP 53 para receber as transferências de zonas iniciadas pelo DNS primário, por isso é que um servidor DNS fica à escuta de pedidos ao porto 53 tanto em UDP como em TCP. usa UDP para responder a querys e TCP para realizar transferências de zonas.


(leiam as wikis TCP e UDP para entender o modo de funcionamento dos dois protocolos de transporte)

Podemos dar então início ao processo de instalação do servidor secundário DNS:

O primeiro passo passa pelo: apt-get update para actualizar o repositório de software no raspberry
Depois a instalação do bind9 e dnsutils :
 apt-get install bind9 dnsutils 

Após a instalação deverão ver algo semelhante com isto



O utilizador bind é criado e o serviço e invocado por este mesmo utilizador.

Façam um ps -aux | grep bind e verifiquem quem é o user que invovou o serviço bind9

Recapitulando, o ns.gondor.pt com ip 192.168.100.253 é o servidor primário
e o ns2.gondor.pt com ip 192.168.100.246 será o servidor secundário para a zona se repararem no tutorial de configuração do servidor primário, eu já tenho lá uma entrada (no ficheiro da zona gondor.pt) para a maquina ns2


vamos então configurar o ficheiro named.conf.local para que este servidor seja DNS secundário do domínio gondor.pt reparem que o type (tipo da zona) está configurado como slave (informa que este servidor é secundário para a zona), mas também é necessário informar qual é o ip do servidor master do domínio


Existem duas formas do servidor secundário ser notificado de uma alteração numa das zonas para a qual é secundário.

  • através de um temporizador temporal em que o secundário vai ao primário verificar alterações
  • ou configurando o primário para notificar o secundário sempre que há uma alteração numa zona
Eu prefiro o segundo método.
Para o configurar, temos duas formas acrescentamos a linha notify yes;
  • ou na configuração de cada zona,  
  • ou configuramos por defeito para todas as zonas editando o ficheiro /etc/bind/named.conf.options 
O Servidor primário necessita saber o IP do servidor secundário a notifivcar em caso de alteração de uma zona. Esta configuração também pode ser feita por defeito no ficheiro /etc/bind/named.conf.options acrescentando :

also-notify { 192.168.100.246; };
com o ip do saruman o meu servidor secundário

Ou colocando a informação em cada zona (imaginem que tem vários servidores secundários, desta forma podem especificar por zona qual deles querem notificar para cada zona específica)

então vamos ao servidor primário acrescentar (no meu caso ao gandalf) as alterações às duas zonas criadas no tutorial anterior, a zona gondor.pr e a zona com a resolução inversa no ficheiro /etc/bind/named.conf.local




A próxima configuração serve para garantir que o servidor secundário aceite as notificações recebidas do primário.

editando o ficheiros /etc/bind/named.conf.local acerca das zonas para as quais será secundário, bem como o ip do servidor primário dessas mesmas zonas:


Reparem no DNS secundário, que o ficheiro após a transferência da zona, ficará guardado num directório diferente do que está no servidor primário. Isto tem a ver com questões de permissões de escrita, do user bind, é recomendável que as zonas transferidas sejam escritas na pasta /var/cache/bind
Há quem recomende que no servidor primário se use esta mesma pasta para gravar os ficheiros com as definições de cada zona.



Depois de tudo configurado, basta testar, a melhor forma é ir ao DNS primário e incrementar o número de série de uma das zonas, reiniciar o serviço bind e verificar no secundário se foi notificado e se a transferência foi bem sucedida. 

A verificação poder ser feita por exemplo verificando os log's no DNS secundário:



Outra forma de verificação é com o comando dig lançar uma query tanto ao DNS primário como secundário e  verificar se os números de série da zona coincidem  usando o comando:
  • dig @192.168.100.246 -t SOA gondor.pt  (para questionar o dns secundário)
  • dig @192.168.100.253 -t SOA gondor.pt  (para questionar o dns primário)
Aqui vai o output de ambos os comandos:



Ainda podem no secundário verificar o conteúdo da pasta /var/cache/bind e verão que tem uma cópia dos ficheiros das zonas transferidas.

Sem comentários:

Enviar um comentário