PowerDNS: İkincil DNS yapılandırması

PowerDNS’de DNS Master Slave çoğaltmasını bir profesyonel gibi yapılandırın.

 

PowerDNS’de DNS Master Slave çoğaltması nasıl yapılandırılır

PowerDNS’de DNS Master-Slave replikasyonunu yapılandırmak için ön koşullar kapsamında PowerDNS’i kurup yapılandırmamız gerekmektedir.  Bundan sonra bu yazımızda bahsettiğimiz değişiklikleri pdns.conf dosyasında yapacağız.  Devam etmeden önce aşağıdaki varsayımları aklınızda bulundurun:

  • ns1 – master – 192.168.250.52
  • ns2 – slave – 192.168.250.152
  • ns3 – slave – 192.168.250.252

DNS Ana İkincil çoğaltma: Ana Yapılandırma

Here, burada izin ver-axfr-ips ve master olmak üzere iki seçenek tanımlıyoruz. Allow-axfr-ips seçeneği, PowerDNS’e bölge aktarımlarını başlatabilen ve alabilen uç noktalar hakkında bilgi verir.

Örneğin, burada ns2.example.com 192.168.250.152’de çalışır ve ns3.example.com 192.168.250.252’de çalışır.  Yani bu IP’ler bölge aktarımları için temizlenmiştir.

192.168.250.0/25 gibi tam aralıkları da tanımlayabiliriz.  Bölge transferlerinin minimum düzeyde tutulması tercih ediyor.

cp -pv /etc/powerdns/pdns.conf /etc/powerdns/pdns.conf-bkp22;
vim /etc/powerdns/pdns.conf
allow-axfr-ips=192.168.250.152,192.168.250.252

Daha sonra master parametresini aşağıda görüldüğü gibi “evet” olarak ayarlayacağız:

master=yes

Bu değişikliklerden sonra PowerDNS’i şu komutla yeniden başlatacağız:

systemctl restart pdns

DNS Ana İkincil çoğaltma: İkincil Yapılandırma

Köle sunucularda, pdns.conf dosyasında köleyi evet olarak ayarlayacağız.  Bu, PowerDNS’e bunun bir bağımlı sunucu olduğunu bildirir.  Ayrıca aşağıda görüldüğü gibi NOTIFY komutunu beklemeden de slave-cycle-interval seçeneği ile ikincil sunucuyu ana bilgisayarıyla güncel tutabiliyoruz:

cp -pv /etc/powerdns/pdns.conf /etc/powerdns/pdns.conf-bkp23;
vim /etc/powerdns/pdns.conf
slave=yes
slave-cycle-interval=60

Daha sonra ana sunucuyu arka uç yapılandırmasına da ekleyeceğiz.  Veriler aşağıdaki üç değeri içerir:

  1. Bu senaryoda DNS sunucusunun IP adresi, 192.168.250.52
  2. İkincil sunucunun FQDN’si
  3. Atanacak rol, bu senaryoda yönetici rolü

 Her bir ikincil sunucunun kendi FQDN’sine sahip olacağını hatırlayın.

Dolayısıyla NS2’de:

mysql
use pdns;
insert into pdns.supermasters values ('192.168.250.52', 'ns2.example.com', 'admin');

Benzer şekilde NS3’te:

mysql
use pdns;
insert into pdns.supermasters values ('192.168.250.52', 'ns3.example.com', 'admin');

Daha sonra PowerDNS’i bu komutla yeniden başlatacağız.

systemctl restart pdns

Replikasyonu test etme

Ana sunucuya yeni bir bölge ekledikten sonra hiçbir şey olmazsa aşağıdaki kodu çalıştıracağız:

root@master:~# pdnsutil create-zone replicateme.dev
Creating empty zone 'replicateme.dev'

Etki alanının kölede görünmemesi durumunda şu kodu çalıştıracağız:

root@slave:~# pdns_control list-zones | grep replicateme

Ayrıca bölgede henüz NS girişi bulunmadığından sonraki adım, aşağıdaki komutla NS1 ve NS2 için NS girişlerini yapmaktır:

pdnsutil add-record replicateme.dev @ NS ns1.example.com;

pdnsutil add-record replicateme.dev @ NS ns2.example.com;

Örneğin:

root@master:~# pdnsutil add-record replicateme.dev @ NS ns1.example.com
New rrset:
replicateme.dev. IN NS 3600 ns1.example.com

root@master:~# pdnsutil add-record replicateme.dev @ NS ns2.example.com
New rrset:
replicateme.dev. IN NS 3600 ns1.example.com
replicateme.dev. IN NS 3600 ns2.example.com

Bundan sonra bölgenin seri numarasını artıracağız ve ardından notify komutunu kullanacağız:

pdnsutil increase-serial replicateme.dev;

pdns_control notify replicateme.dev;

Örneğin:

root@master:~# pdnsutil increase-serial replicateme.dev
SOA serial for zone replicateme.dev set to 2019040101

root@master:~# pdns_control notify replicateme.dev
Added to queue

Bu, ikincil sunucuda aşağıdaki günlük girişleriyle sonuçlanır:

Apr  3 11:00:10 slave pdns_server[19627]: Received NOTIFY for replicateme.dev from 192.168.250.52 for which we are not authoritative
Apr  3 11:00:10 slave pdns_server[19627]: Created new slave zone 'replicateme.dev' from supermaster 192.168.250.52
Apr  3 11:00:10 slave pdns_server[19627]: 1 slave domain needs checking, 0 queued for AXFR
Apr  3 11:00:10 slave pdns_server[19627]: Received serial number updates for 1 zone, had 0 timeouts
Apr  3 11:00:10 slave pdns_server[19627]: Domain 'replicateme.dev' is stale, master serial 2019040101, our serial 0
Apr  3 11:00:10 slave pdns_server[19627]: Initiating transfer of 'replicateme.dev' from remote '192.168.250.52'
Apr  3 11:00:10 slave pdns_server[19627]: Starting AXFR of 'replicateme.dev' from remote 192.168.250.52:52
Apr  3 11:00:10 slave pdns_server[19627]: AXFR started for 'replicateme.dev'
Apr  3 11:00:10 slave pdns_server[19627]: AXFR of 'replicateme.dev' from remote 192.168.250.52:52 done
Apr  3 11:00:10 slave pdns_server[19627]: Backend transaction started for 'replicateme.dev' storage
Apr  3 11:00:10 slave pdns_server[19627]: AXFR done for 'replicateme.dev', zone committed with serial number 2019040101

Ayrıca bu, domainin kölede görünmesine neden olur ve onu aşağıda görüldüğü gibi sorgulayabiliriz:

pdns_control list-zones | grep replicateme;

dig -t NS replicateme.dev @localhost +short;

Örneğin:

root@slave:~# pdns_control list-zones | grep replicateme
replicateme.dev.

root@slave:~# dig -t NS replicateme.dev @localhost +short
ns1.example.com.
ns2.example.com.

Sonuç olarak, /etc/powerdns/pdns.conf dosyasındaki ana yapılandırma şu şekilde görünecektir:

allow-axfr-ips=135.181.95.52
allow-dnsupdate-from=127.0.0.0/8,::1
allow-notify-from=0.0.0.0/0,::/0
api=yes
api-key=oL7TzKcAGGgmkdkb
default-soa-content=pdns1.maxihoster.com. sysadmin.maxihoster.com. 2021101402 21600 3600 1209600 21600
disable-axfr=no
disable-syslog=no
include-dir=/etc/powerdns/pdns.d
launch=
log-dns-queries=yes
log-timestamp=yes
loglevel=5
master=yes
primary=yes
query-logging=yes

Ayrıca, /etc/powerdns/pdns.conf dosyasındaki yardımcı yapılandırma şuna benzer olacaktır:

api=yes
api-key=lgAw2d170Y4mzyQw
disable-syslog=no
include-dir=/etc/powerdns/pdns.d
launch=
local-address=0.0.0.0, ::
local-port=52
log-dns-queries=yes
log-timestamp=yes
query-logging=yes
slave=yes
slave-cycle-interval=60
superslave=yes

 

Yazının orijinalini buradan okuyabilirsiniz.