Saturday, August 23, 2014

การติดตั้ง และคอนฟิก virtual DNS Primary(master) Server บน VMware (CentOS6.4)

การติดตั้ง และคอนฟิก DNS Server บน VMware

     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


    ถ้าตรงกันทั้งสองฝั่งก็ใช้ได้ครับ
เป็นไงบ้างครับ ไม่ยากเกินไปใช่มั้ยครับ หวังว่าจะมีประโยชน์นะครับ สวัสดีครับ

No comments:

Post a Comment