Golfreeze.packetlove.com: Life style of Golfreeze Canon400D Family kammtan.com Jazz Freebsd Unix Linux System Admin guitar Music
All about unix linux freebsd and FAQ for Packetlove.com Web hosting , Mail hosting , VoIP + IP PBX server => Os kernel การปรับแต่ง เพิ่มเติม ลงโปรแกรม บน OS และ ControlPanel Directadmin,Cloud server => Topic started by: golfreeze on มิถุนายน 10, 2016, 01:15:33 pm
-
วันนี้ มีโจทย์คือทำ dns slave ให้กับ dns master ที่เป็น direct admin (DA) ครับ
ในกรณีมีเครื่อง Master dns เป็น DirectAdmin และต้องการทำ Slave dns ไว้ที่อีกเครื่อง โดยมีข้อแม้ว่า
1. ถ้า zone file ของ domain name มีการ เพิ่ม/อัฟเดท/หรือลบ ที่เครื่อง Master ให้ทำการ transfer มายังเครื่อง slave ด้วย
#server1
192.168.1.1 ( Master DNS )
#server2
192.168.1.2 (Slave DNS)
เริ่มเลยครับ ที่เครื่อง DNS Server1 ใน DA ทำการอัฟเดท configure ดังนี้เพื่อทำการ transfer ไปยังเครื่อง slave
server1#cp /etc/named.conf /etc/named.conf.ori
ทำการเพิ่ม configure ลงใน ส่วนที่เป็น options { }
server1#vi /etc/named.conf
options {
notify explicit;
also-notify { 192.168.1.2; };
allow-notify { 192.168.1.2; };
allow-transfer { 192.168.1.2; };
}
ต่อไปทำการ generate ssh key เพื่อใช้ในการ transfer ครับ
server1:~# cd /root/
server1:~# ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa): <PRESS ENTER TO ACCEPT DEFAULT>
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): <PRESS ENTER FOR NO PASSPHRASE>
Enter same passphrase again: <PRESS ENTER FOR NO PASSPHRASE>
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
15:24:ab:aa:c2:bd:40:50:65:bc:ee:22:22:dd:24:22 root@server1
หลังจากนั้นทำการ copy public key ไปยัง server2 เพื่อให้สามารถส่งไฟล์ไปได้ อัตโนมัติ โดยไม่ต้องใส่รหัส
server1:~# scp /root/.ssh/id_dsa.pub 192.168.1.2:/root/.ssh/authorized_keys
ที่เครื่อง Server2 ทำการเพิ่ม configure ลงไปที่ไฟล์ /etc/bind/named.conf.options
listen-on { any;};
version "packetlove";
notify explicit;
also-notify { 192.168.1.1; };
allow-notify { 192.168.1.1; };
allow-transfer { 192.168.1.1; };
หลังจากนั้นทำการสร้าง script dns_create_post.sh กับ dns_delete_post.sh ในเครื่อง Server1 (DA) ครับ
server1#cd /usr/local/directadmin/scripts/custom
server1# touch dns_create_post.sh
server1# touch dns_delete_post.sh
server1# chmod 700 *.sh
server1# chown diradmin:diradmin *.sh
เพิ่ม script ลงในเครื่อง Server1 (DA) ตามไฟล์ /usr/local/directadmin/scripts/custom/dns_create_post.sh ดังค่าด้านล่าง
#!/bin/sh
/usr/bin/ssh root@192.168.1.2 '/bin/echo "zone \"'$domain'\" { type slave; file \"/var/cache/bind/'$domain'\"; masters { 192.168.1.1; }; };" >> /etc/bind/named.conf; /etc/init.d/bind9 restart'
exit 0;
เพิ่ม script ลงในเครื่อง Server1 (DA) ตามไฟล์ /usr/local/directadmin/scripts/custom/dns_delete_post.sh ดังค่าด้านล่าง
#!/bin/sh
/usr/bin/ssh root@192.168.1.2 -- /bin/sed -e "'/^zone \"$domain\"/d'" -i /etc/bind/named.conf \&\& /bin/rm -f /var/cache/bind/$domain \&\& /etc/init.d/bind9 restart
exit 0;
เท่านี้ก็เรียบร้อยครับ : )
เวลาที่มีการอัฟเดท ที่ DNS Master ค่าจะถูกส่งมาที่ DNS Slave เลย ไม่ต้องรอdelay
ในกรณีถ้าต้องการเพิ่ม zone ที่มีอยู่แล้วแต่ไม่ใช่การสร้างใหม่ ต้องทำการนำ configure ไปใส่ในเครื่อง slave ก่อนนะครับ
เช่นจะเพิ่ม packetlove.com ก็
zone "packetlove.com" { type slave; file "/etc/named/packetlove.com"; masters { 192.168.1.1; }; };
เสร็จแล้วทำการ reload named ที่ slave node 1 ครั้งครับ
#/etc/init.d/bind9 reload
เสร็จแล้วก็สามารถไปเช็ค zone ได้ว่ามีการส่งมาจาก master มายัง dns slave หรือเปล่านะครับ
ถ้าทำถูกต้องจะต้องปรากฏ zone packetlove.com ในเครื่อง dns slave นะครับผม
ขอบพระคุณข้อมูลจาก ทีม Support Packetlove.com ครับ
บริษัท Packetlove IT Service and Consulting Co., Ltd. ;)
-
ถ้าตัว Master DNS เป็นตระกูล debian / ubuntu
ให้ทำการเพิ่ม allow interface ipv4 listen ไว้ด้วยนะครับ
vi named.conf.options
เพิ่มในส่วนของ options
listen-on { any; };
-
ถ้าใน freebsd ต้องทำการ generate configure key ใหม่สำหรับ rndc ก่อนนะครับ ถึงจะใช้งาน
rndc reload ได้ โดยการ
#rndc-confgen
1.เสร็จแล้วทำการเขียน ค่า configure ที่ถูกปริ้นออกมาจาก rndc-confgen ใส่ rndc.conf
# Start of rndc.conf
key "rndc-key" {
algorithm hmac-mdx;
secret "eUYhsadsfe2asdfasd99==";
};
options {
default-key "rndc-key";
default-server 127.0.0.1;
default-port 953;
};
# End of rndc.conf
2.ทำการเพิ่ม configure นี้ลงใน named.conf
# Use with the following in named.conf, adjusting the allow list as needed:
key "rndc-key" {
algorithm hmac-mdx;
secret "eUYhsadsfe2asdfasd99==";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
# End of named.conf
แล้วทำการ restart named 1 รอบ
#/usr/local/etc/rc.d/named restart
เท่านี้ก็สามารถทำการ rndc reload ได้ละครับ
#rndc reload
server reload successful
เรียบร้อยครับผม : )
-
###FreeBSD แก้ไขเรื่อง write permission in directory
Change in /etc/mtree/BIND.chroot.dist
/set type=dir uname=root gname=wheel mode=0755
to
/set type=dir uname=bind gname=wheel mode=0755
เสร็จแล้วทำการ save ออกมา ทำการปรับ permission ดังนี้
cd /var/named/etc
chown bind:wheel namedb
แล้วทำการ restart bind 1 รอบ
/usr/local/etc/rc.d/named restart
-
ถ้าไม่ได้จริงๆ ให้ปรับไปใช้เป็น rsa นะครับผม
#ssh-keygen -t rsa -b 2048
แทนนะครับ แล้วในส่วนของ sshd_config
ให้ใช้เป็น
PubkeyAuthentication yes
PasswordAuthentication no
-
ในส่วนของ os : debian ให้ทำการเพิ่ม configure ที่เป็น
notify explicit;
also-notify { 103.24.x.y; };
allow-notify { 103.24.x.y; };
allow-transfer { 103.24.x.y; };
version "Packetlove";
ลงในไฟล์ /etc/bind/named.conf.options
แล้วทำการ restart service ด้วยนะครับ
#service named restart
เท่านี้ก็จะแก้ไขปัญหา zone transfer AXFR/IN' denied ได้ครับ
Dec 24 20:40:02 named[1743]: zone abc.com/IN: loaded serial 2019122403
Dec 24 20:40:02 named[1743]: zone abc.com/IN: sending notifies (serial 2019122403)
Dec 24 20:40:02 named[1743]: client 103.24.x.y#60463 (abc.com): zone transfer 'astexproduct.com/AXFR/IN' denied
: )
Support [at] packetlove [dot] com team.