hebero Posted April 20, 2020 Share Posted April 20, 2020 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. 0 Quote Link to comment Share on other sites More sharing options...
hebero Posted April 29, 2020 Author Share Posted April 29, 2020 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 0 Quote Link to comment Share on other sites More sharing options...
rubensk Posted April 30, 2020 Share Posted April 30, 2020 A melhor solução IMHO é replicação de banco de dados e usar o PowerDNS servindo desse banco de dados. 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.