An IPv6-only network and DNS

ไม่นานมานี้ในการประชุม IETF ได้ปิด IPv4 network ในงานทั้งหมดแล้วให้วิ่งเฉพาะ IPv6 .. ดูเหมือนจะราบรื่นดี ก็ไม่แปลกใจเท่าไหร่ เขาคงเตรียมตัวไม่ให้เกิดเหตุหน้าแตก

เวลาไล่เลี่ยกัน ที่ทำงานข้าน้อยมีปัญหากับสายไฟเบอร์ที่ใช้งานอินเทอร์เน็ต (IPv4) โดนหนูกัดไปหลายสิบคอร์ เสาร์-อาทิตย์มีการซ่อมแซมสายทำให้ใช้อินเทอร์เน็ตไม่ได้ไป 2 วัน .. โชคยังดี (มั้ง) ที่เหลือเส้นสำรองที่วิ่งเป็น IPv6 เพียวๆ .. ตกอยู่ในสถานการณ์ IPv6-only เหมือนกันแบบไม่ตั้งใจ เลยลองใช้ IPv6 อย่างเดียวกันดู

จริงๆ ได้เซ็ตเครือข่าย IPv6 ไว้ที่ทำงานนานแล้ว ใครจะใช้งานก็ง่ายมาก ถ้าระบบปฏิบัติการที่ใช้สนับสนุน IPv6 แค่เชื่อมเข้าเครือข่ายที่จัดไว้ให้ได้ ที่เหลือก็เข้ากลไก stateless address autoconfig. ก็ใช้งานได้ .. สำหรับวันที่ทดสอบ ระบบก็ทำงานได้ราบรื่นดี จนกระทั่งมาตายที่ DNS .. ลอง dig +trace ดูก็พบกว่าถ้า query ผ่าน DNS server มักไม่ค่อยจะได้คำตอบกลับมา หรืออาจจะไม่ได้คำตอบเลย .. สาเหตุเข้าใจว่า root servers ปัจจุบันยังไม่สนับสนุน IPv6 ทุกตัว ข้อมูลล่าสุดที่ ftp://ftp.internic.net/domain/named.root วันที่ 4 ก.พ. 51 (2008020400) มีแค่เซิร์ฟเวอร์ A, F, H, J, K, และ M เท่านั้นที่มีเรคคอร์ด AAAA .. ถ้าเจอตัวที่มี IPv6 address ก็ dig ต่อได้ ถ้าไม่เจอก็จอดเลย .. และถึงจะ dig ต่อได้ ก็ใช่ว่าจะได้คำตอบ เดี๋ยวนี้ root servers มันไม่ได้เก็บ gTLD แล้ว แต่จะกระจาย gTLD ลงมาอีกชั้นที่ gtld-servers.net อีกสิบสามตัว (A – M) เท่าที่ query ดูมีแค่ gtld-servers A กับ M เท่านั้นที่มีเรคคอร์ด AAAA .. จะใช้ IPv6 กับ gTLD ตอนนี้ก็ต้องรอไปก่อนแหละ ฝั่ง ccTLD ก็ลำบากพอๆ กัน ยังไม่นับว่าบางโซนมีเรคคอร์ด AAAA ไว้แล้ว แต่เซิร์ฟเวอร์กลับไม่ได้รัน IPv6 ก็มี .. (- -)a

DNS สำหรับ IPv6 ยังมีอีกปัญหาใหญ่ คือ RFC1035 (STD13) กำหนดไว้ว่าขนาดของ DNS query/reply UDP payload จำกัดไว้ที่ 512 octets ซึ่งทำให้ root zone มี A record ได้ไม่เกิน 13 records ..ถ้ายัด AAAA ไปอีกทุกตัวก็เกินข้อกำหนดแน่ๆ .. ทางออกของปัญหานี้มีแล้ว คือใช้ EDNS(0) ซึ่ง BIND ก็มีให้ใช้ ลองกันหน่อยก็ได้

$ dig NS .
...
;; MSG SIZE  rcvd: 500

เทียบกับ

$ dig +edns=0 NS .
...
;; MSG SIZE  rcvd: 615

หรือ

$dig +bufsize=1024 NS .
...
;; MSG SIZE  rcvd: 615

จะเห็นว่าสองกรณีหลัง MSG SIZE ขนาดเกิน 512 octets … แต่การใช้งานแบบนี้ยังไม่แพร่หลาย เครือข่ายบางแห่งบางที่ก็กรองไว้ แถมทำอะไรกับ buffer บน BIND นี่มันเสียวๆ อยู่แฮะ .. เอาเป็นว่าทำเท่าที่ทำได้ละกัน ไอ้ที่อยู่เหนือการควบคุม ก็ได้แต่หวังให้มันมีความก้าวหน้าไวๆ

แถมท้าย .. root zone มี A 13 records ไม่ได้หมายความว่าจะมี root servers แค่ 13 เครื่องนะ .. root servers เขาใช้ anycast กันหลายตัวแล้ว .. และที่หลายคนอาจจะยังไม่รู้คือ i.root-servers.net หนึ่งใน 13 root servers อยู่ในประเทศไทยตั้งแต่ปี 2004 โน่น .. และถ้าอยากเห็นว่า root servers กระจายอยู่ที่ไหนบ้าง สามารถ ดูบน Google Maps ได้ด้วย :)