hebero Postado Abril 20, 2020 Compartilhar Postado Abril 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
hebero Postado Abril 29, 2020 Autor Compartilhar Postado Abril 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
rubensk Postado Abril 30, 2020 Compartilhar Postado Abril 30, 2020 A melhor solução IMHO é replicação de banco de dados e usar o PowerDNS servindo desse banco de dados. 1 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados
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.