มอบหมายซับโดเมนให้ DNS อื่นด้วย NS Record

ให้ซับโดเมนหนึ่งถูกจัดการโดยผู้ให้บริการ DNS คนละรายกับโดเมนหลัก เหมาะกับการแยกความรับผิดชอบระหว่างทีมหรือระบบ

โดย ทีมงาน THAI DATA CLOUD อัปเดต อ่าน 7 นาที เข้าชม 5 ครั้ง

แชร์FacebookXLINELinkedIn
NS Record — มอบหมายซับโดเมนให้ DNS อื่นด้วย NS Record
มอบหมายซับโดเมนให้ DNS อื่นด้วย NS Record

คำตอบสั้น ๆ: ให้ซับโดเมนหนึ่งถูกจัดการโดยผู้ให้บริการ 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 ของซับโดเมน หากขาดตอนตรงไหนจะเห็นชัดเจน

ขั้นตอนที่ 5: กรณีใช้งานจริง

แยกระบบทดสอบออกจากระบบจริง

มอบหมาย dev.example.com ให้ DNS ที่ทีมพัฒนาควบคุมเอง ทำให้สร้างและลบซับโดเมนย่อยได้เองโดยไม่ต้องขอฝ่าย IT ทุกครั้ง

ใช้ Cloudflare เฉพาะบางส่วน

เก็บโดเมนหลักไว้ที่ DNS เดิม แล้วมอบหมายเฉพาะ www หรือ shop ไปที่ Cloudflare เพื่อใช้ความสามารถด้านการป้องกันโดยไม่ต้องย้ายทั้งโดเมน

ระบบที่ต้องการควบคุม DNS ด้วยโค้ด

ระบบ Kubernetes หรือระบบออกใบรับรองอัตโนมัติมักต้องสร้างระเบียน DNS เอง การมอบหมายซับโดเมนให้ระบบนั้นควบคุมเป็นวิธีที่ปลอดภัยกว่าการให้สิทธิ์แก้ทั้งโดเมน

ยืนยันใบรับรองแบบ DNS challenge

มอบหมาย _acme-challenge.example.com ไปยัง DNS ที่มี API ทำให้ขอใบรับรอง Wildcard อัตโนมัติได้แม้ผู้ให้บริการ DNS หลักไม่มี API

_acme-challenge.example.com.  IN  NS  ns1.acme-dns.io.

ขั้นตอนที่ 6: ตั้ง TTL ให้เหมาะสม

ระเบียน NS ควรตั้ง TTL ยาว เช่น 3600 ถึง 86400 วินาที เพราะไม่ค่อยเปลี่ยน และการตั้งสั้นทำให้ Resolver ต้องถามบ่อยโดยไม่จำเป็น

แต่เมื่อวางแผนจะเปลี่ยน ให้ลด TTL ลงล่วงหน้าอย่างน้อยหนึ่งช่วง TTL เดิม เพื่อให้การเปลี่ยนมีผลเร็ว

ขั้นตอนที่ 7: ยกเลิกการมอบหมาย

ทำตามลำดับนี้เพื่อไม่ให้ซับโดเมนหายระหว่างทาง

  1. เพิ่มระเบียนที่จำเป็นทั้งหมดของซับโดเมนกลับเข้าโดเมนหลักก่อน แต่ยังไม่ลบ NS
  2. ลด TTL ของ NS ลงเหลือ 300 แล้วรอ
  3. ลบระเบียน NS ออก
  4. ตรวจว่าคำตอบมาจากโดเมนหลักแล้ว
dig api.example.com +short
dig api.example.com NS +short   # ต้องไม่มีผลลัพธ์แล้ว

ปัญหาที่พบบ่อย

ซับโดเมนหายทันทีหลังมอบหมาย

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

คำตอบไม่คงที่ บางครั้งได้บางครั้งไม่ได้

มีระเบียนขัดแย้งกันในโดเมนหลัก เช่น มีทั้ง NS และ A ของชื่อเดียวกัน ให้เหลือเฉพาะ NS

Resolver บางตัวไม่ตามไปยังซับโดเมน

ชื่อ DNS Server ที่ระบุใน NS ค้นหา IP ไม่ได้ ตรวจด้วย dig +short ns1.provider.net ต้องได้ IP กลับมา

อีเมลของซับโดเมนไม่ทำงาน

หลังมอบหมาย ระเบียน MX ของซับโดเมนต้องไปตั้งที่ DNS ปลายทาง ไม่ใช่ที่โดเมนหลักอีกต่อไป ตรวจว่าย้ายมาครบทุกระเบียน

ต้องการที่ปรึกษาด้านการออกแบบโครงสร้าง DNS ขององค์กร ติดต่อ THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/

สรุปขั้นตอน NS Record

ทบทวน NS Record ทั้งหมดตามลำดับ ก่อนนำไปใช้กับระบบจริง

  1. เตรียมโซนที่ปลายทางก่อน
  2. เพิ่ม NS Record ในโดเมนหลัก
  3. เพิ่ม Glue Record เมื่อจำเป็น
  4. ตรวจสอบการมอบหมาย
  5. กรณีใช้งานจริง
  6. ตั้ง TTL ให้เหมาะสม
  7. ยกเลิกการมอบหมาย

เมื่อทำครบทุกข้อแล้ว NS Record จะพร้อมใช้งาน หากผลลัพธ์ไม่เป็นไปตามที่คาด ให้ย้อนกลับไปดูหัวข้อปัญหาที่พบบ่อยด้านบน ซึ่งรวบรวมกรณีที่พบจริงจากการใช้งาน NS Record ไว้แล้ว

อ่านเพิ่มเติมเกี่ยวกับ NS Record

แชร์FacebookXLINELinkedIn

มีคำถามเรื่องบริการ? ติดต่อทีมงาน