ช่วงนี้เขียน How to บ่อยมากเนื่องจากซ้อมมือ Linux Server กลัวว่าสนิมจะขึ้นเพราะไม่ได้จับนานมากแล้ว 4 ปี เห็นจะได้ ตอนนี้มีเวลาว่างเลยได้ทดลองโน่น ทดลองนี่ ในครั้งนี้ก็จะมาว่ากันด้วยเรื่อง DNS Server ครับ DNS Server ถือเป็นแหล่งอ้างอิง Domain Name เพื่อทำหน้าที่แปลง URL ไปเป็น IP Address ซึ่งหน้าที่หลักของ DNS ก็ประมาณนี้ จริงๆ แล้วถ้าคนเราจำ IP Address ได้ทุกเว็บก็คงจะพิลึกไม่น้อย ;P เอ่อ เขาใช้ Domain กันน่ะครับ ทีนี้การประกาศ Domain Name ต้องอาศัย DNS Server เป็นตัวประกาศว่า Domain นี้ใช้ Name Server อะไร มี sub-domain อะไรบ้าง IP Address อะไร เป็นต้น ถ้าอ่านแล้วยังงงๆ ให้ท่านไปหาอ่านเอาเองที่ http://en.wikipedia.org/wiki/DomainNameServer ครับ

ในครั้งนี้จะมาแนะนำการตั้ง DNS Server แบบเร็วๆ โดยมี 2 เครื่อง คือ master และ slave โดยเครื่อง slave จะทำหน้าที่อัพเดทข้อมูลจาก master อัตโนมัติ (replication) มาเริ่มกันเลย ในตัวอย่างนี้เราจะตั้ง DNS Server เพื่อใช้กับ Domain ชื่อ EXAMPLE.COM (จำง่ายดีครับ) โดยจะมีข้อมูลดังนี้ (ของผมเองนะ เปลี่ยน IP ไปตามที่คุณต้องการ)

Server 1 : ns1.example.com
IP Address : 172.16.19.226
Netmask : 255.255.0.0
Gateway : 172.16.16.1

Server 2 : ns2.example.com
IP Address : 172.16.19.73
Netmask : 255.255.0.0
Gateway : 172.16.16.1

ให้ติดตั้ง Ubuntu Server ทั้ง 2 เครื่อง เลือกติดตั้ง DNS Server ทั้ง 2 เครื่องครับ ;) เมื่อติดตั้งเสร็จแล้วให้ config IP Address ให้ถูกต้อง

เครื่อง Server 1 (Master)

เพิ่ม Zone ลงในไฟล์ /etc/bind/named.conf.local ดังนี้

zone “example.com” {
type master;
file “/etc/bind/db.example.com”;
allow-transfer { 172.16.19.73/32; };
};

จาก config ข้างต้น ระบุ Zone เป็น example.com เป็น DNS master มีข้อมูล Zone ในไฟล์ /etc/bind/db.example.com และส่งข้อมูลการอัพเดทไปยังเครื่อง Server 2 ที่มี IP Address เป็น 172.16.19.73 สร้าง Zone File ชื่อ db.example.com มีข้อมูลดังนี้

;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA ns1.example.com. admin@example.com. (
4 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns1.example.com.
@ IN NS ns2.example.com.
@ IN A 172.16.19.226
@ IN AAAA ::1

ns1 IN A 172.16.19.226
ns2 IN A 172.16.19.73

สั่ง restart service ของ bind แล้วทดสอบ dig ดูว่าได้ข้อมูลถูกต้องหรือไม่ หากว่าได้ข้อมูลถูกต้องแล้ว มาต่อกันที่เครื่องที่ 2 ครับ

เครื่อง Server 2 (Slave)

เพิ่ม Zone ลงในไฟล์ /etc/bind/named.conf.local ดังนี้

zone “example.com” {
type slave;
file “/etc/bind/db.example.com”;
masters { 172.16.19.226; };
};

จาก config ข้างต้น ระบุ Zone เป็น example.com เป็น DNS Slave มีข้อมูล Zone ในไฟล์ /etc/bind/db.example.com รับข้อมูลจาก DNS masters ที่มี IP Address เป็น 172.16.19.226 จากนั้นให้สร้างไฟล์เปล่าๆ ชื่อ db.example.com ขึ้นมาครับ จากนั้น chown ไดเรคทอรี /etc/bind ทั้งหมดโดยใช้ชื่อผู้ใช้ว่า bind

sudo chown bind -R /etc/bind

จากนั้นแก้ไขไฟล์ /etc/apparmor.d/usr.sbin.named ให้เพิ่ม กฏของ Apparmor ลงไปดังนี้

/etc/bind/** rw,
/etc/bind/ rw,

หากเก็บ Zone ไฟล์ไว้ที่ /var/cache/named ไม่ต้องแก้ไขคอนฟิกของ Appamor ครับ ในกรณีนี้เราแหกคอกเล็กน้อย :P จากนั้นก็สั่ง restart bind ได้เลย ให้สังเกต log ใน /var/log/syslog จะพบว่ามีการ sync zone example.com เข้ามา สังเกตดูในไฟล์ db.example.com ตอนนี้จะพบว่ามีข้อมูลเรียบร้อยแล้ว ในกรณีที่มีการอัพเดทใน NS1 ใน NS2 ก็จะมีการอัพเดทด้วย :)

Comments are closed.