PowerDNS: Replicação AXFR
Replicação utilizando AXFR e IXFR é um padrão antigo utilizando no DNS. A grande vantagem dele é a interoperabilidade com outros servidores de DNS. Grande parte das empresas não possuem o luxo da padronização, ou da utilização de replicação de banco de dados, como o slony explicado aqui anteriormente.
Explicado isso, mãos à massa. O setup será o seguinte:
Aproveite o que for necessário à sua estrutura.
Master
A operação de um master não é muito complicada, e em DNS na verdade as coisas nunca são realmente complicadas (exceção: DNSSEC).
--- /etc/pdns/pdns.conf --- # configuracao do master master=yes allow-axfr-ips=192.0.2.0/24 # Essas flags sao padrao, mas mostradas para mostrar a utilidade disable-axfr=no disable-tcp=no # Banco de dados launch=gpgsql gpgsql-user=pdns gpgsql-dbname=powerdns gpgsql-dnssec=yes
O backend (pensando em um PostgreSQL), será configurado da seguinte maneira:
insert into domains (name, type) values ('example.com', 'MASTER');
insert into records values (default, currval('domains_id_seq'), 'example.com', 'SOA', 'ns1.example.com postmaster.example.com 2012013001 3600 600 1209600 3600', 3600, default, default);
insert into records values (default, currval('domains_id_seq'), 'example.com', 'NS', 'ns1.example.com', 3600, default, default);
insert into records values (default, currval('domains_id_seq'), 'example.com', 'NS', 'ns2.example.com', 3600, default, default);
insert into records values (default, currval('domains_id_seq'), 'ns1.example.com', 'A', '192.0.2.2', 3600, default, default);
insert into records values (default, currval('domains_id_seq'), 'ns2.example.com', 'A', '192.0.2.3', 3600, default, default);
insert into records values (default, currval('domains_id_seq'), 'example.com', 'A', '192.0.2.4', 3600, default, default);
Agora falta só o DNSSEC:
pdnssec secure-zone example.com
Qual a diferença entre MASTER e NATIVE? Quando o processo do powerdns se inicia, ele procura por todos os domínios que possuem o tipo MASTER para notificar aos respectivos slaves.
Slave
A operação do slave também é simples:
--- /etc/pdns/pdns.conf --- # configuracao do slave slave=yes allow-axfr-ips=192.0.2.0/24 # Essas flags sao padrao, mas mostradas para mostrar a utilidade disable-axfr=no disable-tcp=no # Banco de dados launch=gpgsql gpgsql-user=pdns gpgsql-dbname=powerdns gpgsql-dnssec=yes
O banco de dados fica desta maneira:
insert into domains (name, type) values ('example.com', 'SLAVE');
Após realizar essa configuração, execute o comando abaixo para o serviço entender que os registros de DNSSEC vieram de um AXFR e mostrá-los de maneira correta:
pdnssec set-presigned example.com
Da mesma maneira que o tipo MASTER afeta o comportamento do PowerDNS para o master, o tipo SLAVE é consultado quando o serviço se inicia para buscar as atualizações conforme os tempos estipulados no SOA. Caso tenha feito alguma mudança e quer que ela se propague de imediato, existe o comando abaixo:
pdns_control notify example.com
Pronto, feita a replicação AXFR. O setup acima é um exemplo de um master e um slave ambos rodando PowerDNS, mas nessa situação existem alguns atalhos para facilitar a vida. Veremos isso em um post futuro sobre SUPERMASTERS.
Posted at 10:53PM Jan 29, 2012 by ze in PowerDNS | Comments[0]
