Ir para conteúdo

Featured Replies

Postado

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.


Postado
  • Autor

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

Postado

A melhor solução IMHO é replicação de banco de dados e usar o PowerDNS servindo desse banco de dados. 


Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.
Nota: Sua postagem exigirá aprovação do moderador antes de ficar visível.

Visitante
Infelizmente, seu conteúdo contém termos que não são permitimos. Edite seu conteúdo para remover as palavras destacadas abaixo.
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Informação Importante

Concorda com os nossos termos?