คอนฟิก BIND DNS เซิร์ฟเวอร์ – ตอนที่ 2 เพิ่มโซนโดเมน

หลังจาก ติดตั้งและคอนฟิก BIND DNS เซิร์ฟเวอร์ – ตอนที่ 1 caching only เสร็จเรียบร้อย

ในตอนนี้จะมาดูวิธีการเพิ่มข้อมูลโดเมนใหม่เพื่อแปลงชื่อเป็น IP Address  เช่นไว้ใช้สำหรับภายในองค์กรเอง หรือถ้าเราจดทะเบียนชื่อโดเมนบนอินเตอร์เน็ตแล้ว ต้องการให้บริการแก่คนอื่น วิธีการที่จะแปลงชื่อเช่น www.example.com มาเป็น IP Address ของเครื่องเว็บเซิร์ฟเวอร์ของเรา แทนที่ต้องไปเสียค่าบริการเช่า DNS hosting เพิ่มเติม เรามาคอนฟิกตั้ง DNS Server แล้วชี้ name server มาที่ IP ของเซิร์ฟเวอร์ที่เรากันดีกว่า

การคอนฟิกหรือการเพิ่มข้อมูลโดเมนใหม่ในเซิร์ฟเวอร์ DNS นี้ เราจะเรียกกันว่าเป็นการคอนฟิก zone ใหม่ หากใช้ BIND จะต้องแก้ไขคอนฟิกอยู่สองส่วนคือแก้ไขไฟล์ /etc/named.conf และเพิ่มไฟล์เก็บข้อมูล โซน ของโดเมนนั้นๆ

เพิ่มคอนฟิกโซนโดเมนใหม่ใน named.conf

สมมติว่าเราต้องการเพิ่มคอนฟิกโดเมน example.com เพื่อแปลงชื่อเป็น IP Address

เริ่มต้นต้องเพิ่มคอนฟิกโซนของโดเมนในไฟล์ named.conf ระบุ type เป็น master แล้วระบุชื่อ file ที่จะเก็บข้อมูลของโซนของโดเมน example.com นี้ ชื่อไฟล์ที่นิยมใช้กัน เป็นชื่อโดเมนต่อท้ายด้วย .zone

[root@cent6 ~]# vi /etc/named.conf
...
options {
    // listen-on port 53 { 127.0.0.1; };
    listen-on-v6 port 53 { ::1; };
    directory "/var/named";
}
...
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
zone "example.com" IN {
 type master;
 file "example.com.zone";
};

ขั้นต่อไป ต้องสร้างไฟล์โซนที่เก็บข้อมูลโดเมน ที่อยู่ของไฟล์โซนนี้จะอยู่ในไดเร็คทอรี ที่ระบุในคอนฟิก directory ภายใต้ options โดยทั่วไปจะเป็น /var/named/

เพราะฉะนั้นต้องสร้างไฟล์โซน /var/named/example.com.zone ขึ้นมา โดยมีรูปแบบดังนี้

[root@cent6 ~]# vi /var/named/example.com.zone
$ORIGIN example.com.
$TTL 86400
@                   IN SOA example.com. root.example.com. (
                           2012121501 ; serial
                           10800 ; refresh (3 hours)
                           900 ; retry (15 minutes)
                           604800 ; expire (1 week)
                           86400 ; minimum (1 day)
                           )
                    NS     ns1.example.com.
ns1                 A      192.168.1.1
www                 A      192.168.1.2

 

หากลองไปค้นหาตัวอย่างคอนฟิกไฟล์โซนดู จะเห็นว่ามีการคอนฟิกอยู่หลายแบบ แต่ส่วนตัวผู้เขียน นิยมใช้โครงสร้างไฟล์เป็นแบบนี้

หากต้องการคอนฟิกสำหรับโดเมนชื่ออื่นๆ ให้แทนที่คำว่า example.com เป็นชื่อโดเมนนั้นๆ

สังเกตว่าการใส่เครื่องหมายจุด . และไม่ใส่หลังชื่อ หากไม่มีจุดต่อท้าย จะมีการเติมชื่อโดเมนดีฟอลต์ (จากค่า $ORIGIN) ส่วน IP Address ไม่ต้องใส่จุดตามหลัง

ด้านบนเป็นคอนฟิก SOA ระบุข้อมูลโดเมน ขออธิบายเฉพาะ serial ทุกครั้งที่มีการแก้ไขไฟล์โซนนี้ ให้แก้ตัวเลขในบรรทัด serial ในรูปแบบ [ปี คศ][เดือน][วันที่][ลำดับการแก้ไขประจำวัน] ตัวเลข serial นี้มีการใช้กันหลายรูปแบบมาก แต่ที่นิยมกันเป็นรูปแบบ ปี เดือน วันที่ แบบนี้ โดยหลักการคือให้มีการเพิ่มตัวเลขนี้ทุกครั้งเมื่อมีการแก้ไขข้อมูลในไฟล์โซน เพื่อให้ slave dns server สามารถมาตรวจสอบเวอร์ชั่นของข้อมูลเก่าใหม่ เผื่อจะได้ปรับปรุง (transfer) ข้อมูลได้

ด้านล่างจะประกอบด้วยสามคอลัมน์หลักๆ คือ ชื่อ ประเภทแปลง ค่า

บรรทัด NS ns1.example.com.

  • NS คือการแปลงชื่อให้เป็นชื่อ DNS ที่เก็บข้อมูลโดเมนนั้น สังเกตว่าด้านหน้าจะไม่มีค่าอะไร นั่นหมายถึงให้ใช้ค่าตัวแปร $ORIGIN หรือค่าที่ระบุ zone “example.com” ในไฟล์ /etc/named.conf
  • ความหมายคือ ข้อมูล NS หรือ DNS Server ที่เก็บข้อมูลของ example.com อยู่ที่ ns1.example.com. สังเกตว่าจะมีเครื่องหมายจุด

บรรทัด ns1 A 192.168.1.1

  • A คือการแปลงชื่อเป็น IP Address
  • สังเกตว่าไม่มีเครื่องหมายจุดตามหลัง ns1 เพราะฉะนั้นจะมีการเติมชื่อโดเมน ($ORIGIN) ต่อท้ายเป็น ns1.example.com
  • ความหมายคือ ns1.example.com แปลงเป็น IP ได้เป็น 192.168.1.1

บรรทัด www A 192.168.1.2

  • A คือการแปลงชื่อเป็น IP Address
  • สังเกตว่าไม่มีเครื่องหมายจุดตามหลัง www เพราะฉะนั้นจะมีการเติมชื่อโดเมน ($ORIGIN) ต่อท้ายเป็น www.example.com
  • ความหมายคือ www.example.com แปลงเป็น IP ได้เป็น 192.168.1.2

หลังการสร้างไฟล์โซน แนะนำให้แก้ไข owner และ permission ของไฟล์ ให้ named อ่านได้อย่างเดียว

[root@cent6 ~]# cd /var/named/
[root@cent6 named]# chmod 640 example.com.zone
[root@cent6 named]# chown root.named example.com.zone

รันคำสั่ง service named restart เพื่อให้คอนฟิกใหม่มีผล

[root@cent6 ~]# service named restart
Stopping named:                   [ OK ]
Starting named:                   [ OK ]

ทดลองใช้คำสั่ง host เพื่อดูข้อมูลการแปลงชื่อเป็น ip

[root@cent6 ~]# host www.example.com 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
www.example.com has address 192.168.1.2

โดยดีฟอลต์การใช้คำสั่ง host หากไม่ได้ระบุออปชั่นใดๆ จะเป็นการถามแบบ A หรือการแปลงชื่อเป็น IP

หากต้องการถามข้อมูลอื่นเช่น NS เพื่อต้องการรู้ข้อมูลของ DNS Server ที่เก็บข้อมูลโดเมน ต้องระบุออปชั่น -t ns

[root@cent6 ~]# host -t ns example.com 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
example.com name server ns1.example.com.

นอกจากประเภท NS และ A แล้ว การแปลงข้อมูลบน DNS ที่นิยมใช้กัน มีอีกสองอย่างคือ MX และ CNAME

ตัวอย่างการเพิ่มคอนฟิกในไฟล์โซน

[root@cent6 ~]# vi /var/named/example.com.zone
$ORIGIN example.com.
$TTL 86400
@                  IN SOA example.com. root.example.com. (
                          2012121502 ; serial
                          10800 ; refresh (3 hours)
                          900 ; retry (15 minutes)
                          604800 ; expire (1 week)
                          86400 ; minimum (1 day)
)
                     NS    ns1.example.com.
 MX 0 mail.example.com.
ns1                  A     192.168.1.1
www                  A     192.168.1.2
mail A 192.168.1.3
web CNAME www.example.com.

บรรทัด MX 0 mail.example.com

  • MX เป็นค่าที่ใช้สำหรับการส่งอีเมล์ หมายถึงเวลามีผู้ส่งอีเมล์มาที่ @โดเมน เช่น @example.com เมล์เซิร์ฟเวอร์ผู้ส่ง (ต้นทาง) จะมาถามข้อมูล MX นี้ว่า ผู้รับปลายทางมีเมล์เซิร์ฟเวอร์อยู่ที่ไหน ในที่นี้คือให้ส่งเมล์ไปที่เซิร์ฟเวอร์ mail.example.com
  • ตัวเลข 0 คือลำดับในการส่งเมล์ หากมีหลายบรรทัดเช่นเมล์เซิร์ฟเวอร์ของโดเมนใหญ่ๆ จะส่งไปที่เซิร์ฟเวอร์ที่มีค่าคอนฟิกตัวเลขต่ำที่สุด แต่ถ้าส่งไม่ได้ จะเลือกตัวเลขลำดับถัดไป
  • ที่นิยมกันจะระบุเป็นชื่อ แล้วค่อยเพิ่มการแปลงชื่อ “A” เมล์เซิร์ฟเวอร์นี้อีกบรรทัด

บรรทัด web CNAME www.example.com

  • CNAME เป็นชื่อเล่นหรือชื่อเสมือน ใช้สำหรับชี้ไปยังชื่ออื่นๆ ให้แปลงเป็น IP อีกที
  • เช่นในนี่คือ ถ้ามีคนระบุชื่อเป็น web.example.com ก็จะมีการแปลงเป็น www.example.com แล้วค่อยแปลงเป็น IP อีกที อาจใช้สำหรับเครื่องหนึ่งทำหน้าที่ได้หลายอย่างก็ได้

ใช้คำสั่ง service named restart เพื่อให้คอนฟิกที่เพิ่มมีผล

[root@cent6 ~]# service named restart
Stopping named:                   [ OK ]
Starting named:                   [ OK ]

หากต้องการใช้คำสั่ง host ถามข้อมูล MX ต้องระบุออปชั่นเป็น -t mx

[root@cent6 ~]# host -t mx example.com 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
example.com mail is handled by 0 mail.example.com.

หากต้องการถามข้อมูล CNAME ให้ระบุออปชั่น -t cname

[root@cent6 ~]# host -t cname web.example.com 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
web.example.com is an alias for www.example.com.

หรือไม่ได้ระบุออปชั่น

[root@cent6 ~]# host web.example.com 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
web.example.com is an alias for www.example.com.
www.example.com has address 192.168.1.2

 

ข้อมูลอ้างอิง

 

Leave a Reply