Jump to content

Replicar zonas DNS automaticamente entre NS Master e NS Slave


hebero

Recommended Posts

Olá,

Estou configurando um servidor de hospedagem utilizando o painel Directadmin, tive alguns problemas referente a e-mails mas que foram resolvidos com ajuda desse fórum.

Agora estou com um problema referente ao DNS, quando informo o NS1 e NS2 no Registro.br ele acusa no Slave 1, domínio desconhecido, o NS1 master ele aceita normalmente. Verificando o named.conf.local do NS slave vejo que o registro referente ao domínio não foi criado. e ao verificar o status do bind ele apresenta essa mensagem:  

client xxx.xxx.40.14#43765: received notify for zone 'dominio.com.br': not authoritative

Se eu informar no named.conf.local do NS2 Slave o registro da zona apontando para o master, o registro.br reconhece o domínio normalmente.

A dúvida que eu tenho é: no dns master está tudo certo, arquivo de zona .db e registro no named.conf criados pelo painel corretamente, mas não está replicando para o NS2 Slave. É possível realizar essa atualização automática? Ou ela vai ter que ser feita manualmente a cada registro de domínio no painel?

Segue minhas configurações.

NS1 MASTER ############

### named.conf.options ###

acl "trusted" {
   xxx.xxx.xxx.14;    #ns1
   xxx.xxx.xxx.205; #ns2
};

options {
    directory "/var/cache/bind";
    
    recursion yes;
    allow-recursion { trusted; };
    listen-on { xxx.xxx.xxx.14; };
    allow-transfer { xxx.xxx.xxx.205; };    


    //forwarders {
    //    8.8.8.8;
    //    8.8.4.4;
    //};
   

   dnssec-validation auto;

 auth-nxdomain no;    # conform to RFC1035
    listen-on-v6 { any; };
};


 

NS1 MASTER #######

### named.conf - ns1 master ###

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
zone "dominio_server.net" { type master; file "/etc/bind/dominio_server.net.db"; allow-transfer{xxx.xxx.xxx.205;}; };
zone "dominio.com.br" { type master; file "/etc/bind/dominio.com.br.db";  };

 

 

NS2 Slave ############

### named.conf.options ###

acl "trusted" {
   xxx.xxx.xxx.14;    #ns1
   xxx.xxx.xxx.205; #ns2
};

options {
    directory "/var/cache/bind";
    
    recursion yes;
    allow-recursion { trusted; };
    listen-on { xxx.xxx.xxx.205; };
    allow-transfer { xxx.xxx.xxx.14; };    

    allow-query { any; };


    //forwarders {
    //    8.8.8.8;
    //    8.8.4.4;
    //};
   

   dnssec-validation auto;

 auth-nxdomain no;    # conform to RFC1035
    listen-on-v6 { any; };
};

 

### named.conf.local - NS2 slave###

zone "dominio_server.net" { type slave; file "dominio_server.net.db"; masters { xxx.xxx.xxx.14; };  };
 

Veja que o named.conf.local do NS2 não possui o registro de zona do dominio.com.br a menos que seja informado manualmente. É possível replicar automaticamente? Estou utilizando o Debian 9 como server.

Link to comment
Share on other sites

Para não deixar o tópico sem resposta e também poder ajudar mais alguém que possa ter o mesmo problema e dúvida que eu, vou postar aqui a solução que eu achei para resolver o meu problema.

Bom o que eu fiz foi criar um script e colocar ele para rodar no cron de minuto em minuto, esse script, fica testando o arquivo named.conf para ver se ele é mais recente que named.conf.valida que é uma copia do named.conf, se for mais recente significa que ele foi atualizado ou manualmente ou via painel directadmin, se ele não for mais recente não executa nada. segue o script.

Não sei se é a melhor solução, mas neste momento resolveu o meu problema, se alguém tiver outra solução compartilhem.

 

#!/bin/bash

## carrega named.conf no arquivo 1
## carrega named.conf.valida no arquivo 2 (cópia do named.conf)
arquivo1=/etc/bind/named.conf
arquivo2=/etc/bind/scripts/named.conf.valida

## testa se named.conf é mais recente que named.conf.valida
if [ $arquivo1 -nt $arquivo2 ]
then
## se named.conf for mais recente faça
   ## troca o tipo master por slave e salva em /etc/bind/scripts/named.conf.local
   echo "$(sed 's/ type master; / type slave; /g' /etc/bind/named.conf)" > /etc/bind/scripts/named.conf.local

   ## remove caminho do arquivo no parametro file e salva em /etc/bind/scripts/named.conf.local
   echo "$(sed 's|/etc/bind/||g' /etc/bind/scripts/named.conf.local)" > /etc/bind/scripts/named.conf.local

   ## troca allow-transfer{ip slave} por masters{ip master} e salva em /etc/bind/scripts/named.conf
   echo "$(sed 's/ allow-transfer { ip-slave; }; / masters { ip-master; }; /g' /etc/bind/scripts/named.conf.local)" > /etc/bind/scripts/named.conf.local

   ## deleta todas as linhas que começam com include
   sed -i '/include/d' /etc/bind/scripts/named.conf.local

   ## transfere o arquivo /etc/bind/scripts/named.conf.local do NS1 para o NS2 salvando como /etc/bind/named.conf.local
   scp /etc/bind/scripts/named.conf.local root@ip-slave:/etc/bind/named.conf.local

   ## pausa execução por 5 segundos (para garantir que o arquivo foi transferido antes do restart)
   sleep 5

   ## restarta o bind no NS2
   ssh root@ip-slave '/etc/init.d/bind9 restart'

   ## copia o named.conf atualizado para named.conf.valida na pasta scripts
   cp /etc/bind/named.conf /etc/bind/scripts/named.conf.valida

   ## registra um log da execução em /etc/bind/scripts/log_execucao
   echo "Rodou em " $(date +%d/%m/%Y" - "%H:%M:%S) >> /etc/bind/scripts/log_execucao
fi
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

Do you agree with our terms?