Replicar Zonas NS1 para o NS2 [RESOLVIDO]

1. Replicar Zonas NS1 para o NS2 [RESOLVIDO]

Heber Martins
hebermo

(usa Ubuntu)

Enviado em 23/04/2020 - 16:20h

Montei um servidor dedicado de hospedagem rodando o painel DirectAdmin, montei os servidores NS1 e NS2 com a seguinte estrutura: NS1 dns master e painel e NS2 dns slave. Quando cadastro um novo domínio no painel ele atualiza o named.conf do master com o registro do novo domínio, mas o named.conf do NS2 slave não é atualizado automaticamente. O Bind faz essa atualização de forma automática ou só pode ser feito via script rodando no Cron? Já testei várias configurações e nenhuma funcionou, tenho que editar manualmente o named.conf do NS2 para que o domínio seja reconhecido no registro.br. Segue a minha configuração.

## NS1 MASTER ##
#named.conf

zone "dominio1.com.br" { type master; file "/etc/bind/dominio1.com.br.db"; allow-transfer { ip-slave; }; };
zone "dominio2.com.br" { type master; file "/etc/bind/dominio2.com.br.db"; allow-transfer { ip-slave; }; };

#named.options
acl "trusted" {
master-ip; #ns1
slave-ip; #ns2
};

options {
directory "/var/cache/bind";
recursion yes;
allow-recursion { trusted; };
listen-on { master-ip; };
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};


## NS2 SLAVE ##
#named.conf

zone "dominio1.com.br" { type slave; file "/etc/bind/dominio1.com.br.db"; masters { ip-master; }; };

#named.options
acl "trusted" {
master-ip; #ns1
slave-ip; #ns2
registro.br-ip; #registro.br
};

options {
directory "/var/cache/bind";
recursion yes;
allow-recursion { trusted; };
listen-on { slave-ip; };
allow-query {any; };
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};


  


2. Replicar Zonas NS1 para o NS2

Heber Martins
hebermo

(usa Ubuntu)

Enviado em 27/04/2020 - 09:30h

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







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts