Tag Archives: bind

Setting Up Thai Domain Names

ไม่นานมานี้ THNIC เปิดบริการโดเมนเนมภาษาไทยฟรีให้กับเจ้าของโดเมน .th ทั้งหมดโดยที่ THNIC ให้ขอชื่อโดเมนภาษาไทยสำหรับโดเมนภาษาอังกฤษที่จดไว้กับ THNIC แล้ว หากผ่านการพิจารณาแล้ว THNIC จะทำการแม็ปชื่อโดเมนภาษาไทยกับโดเมนภาษาอังกฤษให้อัตโนมัติ โดยเซิร์ฟเวอร์ที่ THNIC จะเป็น DNS server สำหรับโดเมนภาษาไทยทุกตัวที่ขอจดไป .. อย่างไรก็ตามหากเราต้องการรัน DNS server สำหรับโดเมนภาษาไทยเองก็สามารถทำได้เช่นกัน

Internationalized Domain Name (IDN)

โดเมนภาษาไทยนี้จะต่างไปจากบริการของนิภาหรือบริการชื่อไทยอื่นๆ ก่อนหน้านี้ที่อาศัยการแฮ็กและติดตั้งซอฟต์แวร์เสริม (ที่ไคลเอ็นด์ และ/หรือที่ ISP).. สำหรับโดเมนภาษาไทยที่ THNIC ให้บริการคือระบบโดเมนหลายภาษา เป็นมาตรฐานที่ร่างโดย Internationalized Domain Name Working Group ของ IETF .. วิธีการของ IDN ปัจจุบันใช้การเก็บข้อมูลโดเมนเนมภาษาต่างๆ ในรูปแบบที่เรียกว่า punycode (กำหนดไว้ใน RFC 3492) ซึ่งสามารถบันทึกเก็บในฐานข้อมูลของ DNS เป็น ASCII ธรรมดาได้ .. เมื่อฐานข้อมูลเก็บเป็น punycode การ query จึงเป็น punycode ด้วย ตอนนี้ resolver ใน OS เกือบ/ทั้งหมดยังไม่สนับสนุนการแปลงโดเมนภาษาต่างๆ เป็น punycode ดังนั้นแอพพลิเคชันจึงต้องทำเอง (วิธีการที่ให้แอพพลิเคชันแปลงเป็น punycode เองนี่เรียกว่า IDN in Application หรือ IDNA – RFC 3490) .. ข่าวดีสำหรับลินุกซ์คือ บราวเซอร์ยอดนิยมทั้งหลาย i.e., Mozilla, Firefox, Opera จะแปลงโดเมนเนมใน URL เป็น punycode ให้อัตโนมัติ ผู้ใช้งานลินุกซ์จึงใช้งานโดเมนภาษาไทย หรือภาษาอื่นๆ ได้ทันที … ส่วน IE ต้อง ดาวน์โหลดปลั๊กอิน มาติดตั้งด้วย

Server Side

ฝั่ง DNS server ไม่จำเป็นต้องเปลี่ยนแปลง/แพตช์อะไรเลย เพราะ punycode ก็คือ ASCII ธรรมดาเหมือนโดเมนภาษาอังกฤษทั่วๆ ไป .. หากต้องการรัน DNS server สำหรับโดเมนภาษาไทยหรือภาษาอะไรก็ตาม วิธีการก็เพียงแค่สร้าง zone ใหม่สำหรับโดเมนนั้น โดยที่แปลงชื่อโดเมน หรือชื่อซับโดเมน หรือโฮสต์เนมในภาษานั้นๆ เป็น punycode ก่อนเท่านั้นเอง ยกตัวอย่างเช่น โดเมน kitty.in.th มีโดเมนภาษาไทยชื่อ แมวเหมียว.th

ขั้นแรกก็แปลง “แมวเหมียว” เป็น punycode ก่อน โดยแปลงที่ http://josefsson.org/idn.php ก็ได้ หรือจะเอาซอร์สจาก RFC 3492 หรือ http://www.gnu.org/software/libidn มาคอมไพล์ก็ได้ ..

แมวเหมียว = xn--y3cadscv5e5dg

สร้าง zone สำหรับ แมวเหมียว.th โดยใช้ punycode

zone "xn--y3cadscv5e5dg.th" {
        type master;
        file "sandbox/kitty.in.th-idn";
        allow-update { none; };
};

สร้างฐานข้อมูลในไฟล์ kitty.in.th-idn (หรืออะไรก็ตามที่ระบุไว้ใน zone) .. ข้อมูลที่ใส่ก็เหมือนฐานข้อมูลของโดเมนภาษาอังกฤษ เพียงแต่แปลงโฮสต์เนมเป็น punycode ก่อน แล้วค่อยเก็บลงไป

โดเมน = xn--l3ckx7ji

เว็บ = xn--r3cz4e3a

ไฟล์ = xn--w3cm5g8a

เมล = xn--y3ci3f

        IN      NS      ns.kitty.in.th.
        IN      MX      5       mail.kitty.in.th.

@               IN      A       203.152.18.6
xn--l3ckx7ji    IN      CNAME   ns.kitty.in.th.
xn--w3cm5g8a    IN      CNAME   ftp.kitty.in.th.
xn--r3cz4e3a    IN      CNAME   www.kitty.in.th.
xn--y3ci3f      IN      CNAME   mail.kitty.in.th.

รีสตาร์ทเนมเซิร์ฟเวอร์

# named.restart

ติดต่อ THNIC เพื่อขอให้ชี้ primary/secondary DNS server สำหรับโดเมนภาษาไทยมาที่เซิร์ฟเวอร์ของเราแทน

.. เสร็จแล้ว !