คำตอบสั้น ๆ: ให้ซับโดเมนหนึ่งถูกจัดการโดยผู้ให้บริการ DNS คนละรายกับโดเมนหลัก เหมาะกับการแยกความรับผิดชอบระหว่างทีมหรือระบบ
คู่มือนี้อธิบาย NS Record ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย
บางครั้งซับโดเมนหนึ่งต้องถูกจัดการโดยคนละทีมหรือคนละระบบกับโดเมนหลัก เช่น ทีมพัฒนาต้องการควบคุม api.example.com เองผ่านระบบอัตโนมัติ ในขณะที่ฝ่าย IT ดูแลโดเมนหลัก
การมอบหมายด้วย NS Record ทำให้คำถามทั้งหมดเกี่ยวกับซับโดเมนนั้นถูกส่งต่อไปยัง DNS Server ที่กำหนด โดยที่โดเมนหลักยังอยู่ที่เดิม
สิ่งที่ต้องเตรียม (NS Record)
- สิทธิ์แก้ไข DNS ของโดเมนหลัก
- DNS Server ปลายทางที่พร้อมรับผิดชอบซับโดเมนนั้น อย่างน้อยสองตัวเพื่อความทนทาน
ขั้นตอนที่ 1: เตรียมโซนที่ปลายทางก่อน
ขั้นตอนนี้ต้องทำก่อนมอบหมายเสมอ ไม่เช่นนั้นซับโดเมนจะใช้งานไม่ได้ทันทีที่มอบหมาย
ที่ผู้ให้บริการ DNS ปลายทาง สร้างโซนสำหรับ api.example.com แล้วเพิ่มระเบียนที่ต้องการให้ครบ
# ทดสอบว่า DNS ปลายทางตอบได้แล้ว โดยถามตรงไปที่เซิร์ฟเวอร์นั้น
dig @ns1.provider.net api.example.com +short
dig @ns1.provider.net www.api.example.com +short
ต้องได้คำตอบที่ถูกต้องก่อน จึงค่อยไปขั้นตอนถัดไป
ขั้นตอนที่ 2: เพิ่ม NS Record ในโดเมนหลัก
api.example.com. 3600 IN NS ns1.provider.net.
api.example.com. 3600 IN NS ns2.provider.net.
ข้อสำคัญที่มักพลาด
- ต้องมี NS อย่างน้อยสองรายการ หากมีตัวเดียวและตัวนั้นล่ม ซับโดเมนจะหายทั้งหมด
- ชื่อที่ชี้ไปต้องเป็น FQDN ลงท้ายด้วยจุด และต้องมีระเบียน A ของตัวเองที่ค้นหาได้
- ห้ามมีระเบียนอื่นของชื่อเดียวกันอยู่ในโดเมนหลัก เช่น หากมี
api.example.com A 203.0.113.10อยู่แล้ว ต้องลบออก ไม่เช่นนั้นจะขัดแย้งกัน
ตรวจว่าไม่มีระเบียนที่ขัดแย้ง
dig api.example.com A @ns-of-parent-zone +short
dig api.example.com NS +short
ขั้นตอนที่ 3: เพิ่ม Glue Record เมื่อจำเป็น
หาก DNS Server ปลายทางใช้ชื่อที่อยู่ภายในซับโดเมนนั้นเอง เช่น ns1.api.example.com จะเกิดปัญหาไก่กับไข่ คือต้องถาม DNS ของซับโดเมนเพื่อหา IP ของ DNS ของซับโดเมน
แก้ด้วย Glue Record ซึ่งคือระเบียน A ที่ใส่ไว้ในโดเมนแม่โดยตรง
api.example.com. IN NS ns1.api.example.com.
api.example.com. IN NS ns2.api.example.com.
ns1.api.example.com. IN A 203.0.113.20
ns2.api.example.com. IN A 203.0.113.21
หลีกเลี่ยงสถานการณ์นี้ได้ด้วยการใช้ชื่อ DNS Server ที่อยู่คนละโดเมน ซึ่งง่ายกว่ามาก
ขั้นตอนที่ 4: ตรวจสอบการมอบหมาย
# ดูว่าโดเมนแม่ส่งต่อไปที่ไหน
dig api.example.com NS +norecurse @ns1.parent-dns.com
# ไล่ตามห่วงโซ่ทั้งหมด
dig +trace api.example.com
# ตรวจจาก Resolver สาธารณะ
dig api.example.com +short @1.1.1.1
dig api.example.com +short @8.8.8.8
ในผลของ +trace จะเห็นลำดับตั้งแต่ Root ไป TLD ไปโดเมนหลัก แล้วส่งต่อไปยัง DNS ของซับโดเมน หากขาดตอนตรงไหนจะเห็นชัดเจน