dns server คืออะไร
dns ก็คือ domain name system
server ก็คือ เครื่องแม่ข่าย
virtual ก็คือ การจำลอง
เมื่อเอามารวมกันก็ได้ว่า เครื่องแม่ข่าย dns เสมือนนั่นเองงง **ยิ่งแปลยิ่งงง อิอิ
DNS มีหน้าที จับคู่ IP address กับ hostname แล้วแปลงไปกลับนะครับ จะว่ายังไงดีล่ะ ก็ประมาณเป็นเหมือนหน่วยงานหนึ่งที่ทำหน้าที่ เก็บข้อมูลของคนไทย แล้วบันทึกว่าคนไหนใช้เบอร์โทรศัพท์อะไรประมาณนั้นอ่ะครับ เวลาเราเรียกเครื่องจากปกติ เราจะต้องเรียกเป็น ip addr เช่น
- ping [ipaddr]
- http://[ipaddr]
เป็นต้นนะครับ เจ้าตัวนี้จะช่วยให้เราเรียกเป็นชื่อได้ เราจึงไม่ต้องจำเป็น ipaddr ครับ เช่น
- http://www.google.co.th
- http://virtualitinfra.blogspot.com
แล้ว primary คืออะไร ก็คือการทำ redundancy กันครับ เผื่อว่าตัวนึงร่วงจะได้ไม่กระทบกับระบบครับ
ทีนี้เรามาดูกันดีกว่าว่าจะใช้เจ้านี่ได้ยังไง
อ่อ! ลืมบอกไป วิธีนี้ใช้ได้กับทั้ง virtual server และ physical server เลยนะครับ
- ก่อนอื่นก็ mount แผ่น CentOS 6.4 ก่อนเลยครับ
- mount cd ครับ
# mkfir /mnt/cdrom # mount /dev/sr0 /mnt/cdrom
- ไปแก้ไขไฟล์ repo ครับ
# vi /etc/yum.repos.d/CentOS-Media.repo
ตรงบรรทัดbaseurl=file:///media/CentOS/
ให้แก้เป็นbaseurl=file:///mnt/cdrom/
จากนั้นกด ESC และ :wq เพื่อเซฟไฟล์ครับ - update repos
# yum update -y
- install bind ครับ
# yum install bind bind-utils -y
- จากนั้นก็ไปคอนฟิกไฟล์ /etc/named.conf ครับ
# vi /etc/named.conf
ดูในส่วนของ option ก่อนนะครับ
options { listen-on port 53 { 127.0.0.1; 10.224.202.11;}; #ip master server listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { localhost; 10.224.202.0/24;}; #IP Range client allow-transfer { localhost; 10.224.202.12;}; #DNS Slave server recursion yes; dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; };
จากนั้นประกาศ zone ใหม่ขึ้นมาท้ายไฟล์ครับ ต่อจาก zone "." IN ... นะครับ ในที่นี้จะใช้ว่า demo.local นะครับ ส่วนของ forward zone ก่อนเลยครับ forward zone ก็คือ การ mapping hostname -> IPADDR ครับzone "demo,local" IN { type master; file "f.demo.local"; allow-transfer { 10.224.202.12; }; #IP slave server };
จากนั้นก็ reverse zone ครับ ก็คือ ส่วนที่ทำหน้าที่ แปลง IPADDR -> hostname ครับzone "202.224.10.in-addr.arpa" IN { type master; file "r.demo.local"; allow-transfer { 10.224.202.12; }; };
จากนั้นก็ เซฟไฟล์และปิดไฟล์ครับโดยกด esc แล้วตามด้วย :wq และ enter ครับ - คอนฟิกไฟล์ f.demo.local
# vi /var/named/f.demo.local
พิมพ์ตามนี้ครับ
$TTL 86400 @ IN SOA ns1.demo.local. root.demo.local. ( 2014082002 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) @ IN NS ns1.demo.local. ns1 IN A 10.224.202.11 @ IN A 10.224.202.11 ns2 IN A 10.224.202.12
เซฟ และปิดครับ - แก้ไฟล์ r.demo.local เลยครับ
# vi /var/named/r.demo.local
ตามด้านล่างนี้เลยครับ
$TTL 86400 @ IN SOA ns1.demo.local. root.demo.local. ( 2014082002 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) @ IN NS ns1.demo.local. ns1 IN A 10.224.202.11 11 IN PTR ns1.demo.local ns2 IN A 10.224.202.12 12 IN PTR ns2.demo.local
เซฟและปิดครับ - จากนั้นคอนฟิกที่ตัว secondary ครับ
# vi /etc/named.conf
options { listen-on port 53 { 127.0.0.1; 10.224.202.11;}; #ip master server listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { localhost; 10.224.202.0/24;}; #IP Range client recursion yes; dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; };
จากนั้นประกาศ zone ส่วนของ forward zone ก่อนเลยครับ จะคล้ายกันครับต่างกันเล็กน้อย
zone "demo,local" IN { type slave; file "slaves/f.demo.local"; allow-transfer { 10.224.202.12/24; }; #IP slave server masters { 10.224.202.11; }; #master ipaddr };
จากนั้นก็ reverse zone ครับ
zone "202.224.10.in-addr.arpa" IN { type slave; file "slaves/r.demo.local"; allow-transfer { 10.224.202.12/24; }; masters { 10.224.202.11; }; };
เซฟและออกครับ
ส่วนไฟล์ f.demo.local และ r.demo.local ไม่ต้องคอนฟิกครับ เดี๋ยวมันจะทำการ sync กันเองครับ - จากนั้นก็ไปแก้ไขไฟล์ /etc/resolv ของทั้งสองตัวเลยครับ
# vi /etc/resolv.conf
ให้ลบบรรทัดอื่นให้หมด และใส่แค่
nameserver 127.0.0.1
- จากนั้นก็ start service โลดเลยครับ
# service named start
หรือ
# /etc/init.d/named start
- จากนั้นก็ทดสอบครับ
# nslookup ns1.demo.local
ต้องได้ประมาณ
Server: 127.0.0.1 Address: 127.0.0.1#53 Name: ns1.demo.local Address: 10.224.202.11 # nslookup ns2.demo.local Server: 127.0.0.1 Address: 127.0.0.1#53 Name: ns2.demo.local Address: 10.224.202.12
- หรือจะตรวจสอบจากการเช็ค serial ก็ได้ครับ
# dig demo.local +nssearch | cut -d ' ' -f 4 | sort | uniq -c ผลลัพธ์ประมาณนี้ครับ
1 2014082002
ถ้าตรงกันทั้งสองฝั่งก็ใช้ได้ครับ