การกําหนดค่าการส่งต่อ DNS ขาออก FQDN ของ Cloud DNS

1. บทนำ

ef2d068c413a15bd.png

โค้ดแล็บนี้จะแนะนำการตั้งค่าโซนการส่งต่อขาออกของ Cloud DNS โดยใช้ชื่อโดเมนแบบสมบูรณ์ในตัวเอง (FQDN) เป็นเป้าหมายการส่งต่อ ฟีเจอร์นี้ช่วยให้คุณกำหนดเส้นทางการรับส่งข้อมูล DNS ไปยังที่อยู่ IP ที่แก้ไขจากชื่อ DNS ได้ แทนการเขียนที่อยู่ IP ลงในการกำหนดค่าของโซนการกําหนดเส้นทาง ซึ่งจะเป็นประโยชน์อย่างยิ่งเมื่อที่อยู่ IP ของโปรแกรมแก้ไข DNS แบ็กเอนด์มีการเปลี่ยนแปลง เนื่องจากคุณสามารถอัปเดตระเบียน DNS สำหรับ FQDN และ Cloud DNS จะรับการเปลี่ยนแปลงนั้นโดยอัตโนมัติ

เมื่อจบโค้ดแล็บนี้ คุณจะกำหนดค่าโซนการส่งต่อของ Cloud DNS ที่ใช้สิ่งต่อไปนี้ได้

  • เป้าหมาย FQDN ที่ตรงกับโซนส่วนตัวที่มีระเบียน A/AAAA
  • เป้าหมาย FQDN ที่รองรับโดยนโยบายการกำหนดเส้นทาง Cloud DNS (ตำแหน่งทางภูมิศาสตร์หรือ Round Robin แบบถ่วงน้ำหนัก) สําหรับความเกี่ยวข้องระดับภูมิภาคหรือการกระจายการเข้าชม

ภาพรวมของการส่งต่อ FQDN

การกําหนดค่าการกําหนดค่า Cloud DNS ช่วยให้คุณแก้ไขชื่อ DNS ส่วนตัวที่โฮสต์นอก Google Cloud Platform (เช่น ในองค์กรหรือระบบคลาวด์อื่นๆ) จากทรัพยากร Google Cloud Platform ได้ ก่อนหน้านี้ การดำเนินการนี้รองรับการส่งต่อไปยังรายการที่อยู่ IP เป้าหมาย การส่งต่อ FQDN ขยายการทำงานนี้โดยให้คุณระบุ FQDN เป็นเป้าหมายการส่งต่อในโซนการส่งต่อได้

เมื่อระบุ FQDN แล้ว Cloud DNS จะจับคู่ FQDN นั้นกับที่อยู่ IP โดยใช้การค้นหาภายใน ซึ่งจะใช้ตรรกะการจับคู่ข้อมูลของเครือข่ายต้นทาง ซึ่งหมายความว่าเป้าหมาย FQDN สามารถจับคู่กับโซนส่วนตัว นโยบายการกำหนดเส้นทาง DNS (ตำแหน่งทางภูมิศาสตร์หรือ Round Robin แบบถ่วงน้ำหนัก) หรือแม้แต่ชื่อโดเมนสาธารณะของอินเทอร์เน็ต จากนั้น Cloud DNS จะส่งต่อคำค้นหาไปยัง IP ปลายทางที่แก้ไขแล้ว

สิ่งที่คุณจะสร้าง

การส่งต่อ FQDN ระดับภูมิภาคด้วยโซนส่วนตัวใหม่

คุณจะต้องสร้างการตั้งค่าที่ทำให้เกิดความสัมพันธ์ระดับภูมิภาคสําหรับการเข้าชม DNS ซึ่งเกี่ยวข้องกับการสร้างโซน DNS ส่วนตัวและกำหนดค่านโยบายการกำหนดเส้นทางตามภูมิศาสตร์ภายใน จากนั้นลิงก์โซนการส่งต่อกับเป้าหมาย FQDN นี้ วิธีนี้ช่วยให้มั่นใจได้ว่าระบบจะส่งต่อการเข้าชมจากภูมิภาคหนึ่งๆ (เช่น us-east1) ไปยังเซิร์ฟเวอร์ DNS ระดับภูมิภาคที่เกี่ยวข้อง

การส่งต่อ FQDN ที่มีโซนส่วนตัวที่มีอยู่

คุณจะได้เรียนรู้วิธีสร้างโซนการส่งต่อที่กำหนดเป้าหมายเป็น FQDN ที่รองรับโดยระเบียน A/AAAA ภายในโซน DNS ส่วนตัวที่มีอยู่ ตัวอย่างนี้แสดงการส่งต่อคำค้นหาไปยังที่อยู่ IP ที่กําหนดแบบคงที่ซึ่งได้รับการแก้ไขโดยใช้เป้าหมายการส่งต่อ FQDN

สิ่งที่คุณจะได้เรียนรู้

แนวคิดในการส่งต่อ FQDN

คุณจะเข้าใจว่าการส่งต่อ FQDN ขยายการส่งต่อ DNS โดยการอนุญาตให้คุณระบุเป้าหมายการส่งต่อ FQDN แทนที่จะเป็นแค่ที่อยู่ IP เป็นเป้าหมายการส่งต่อสําหรับการค้นหาขาออก

ประโยชน์ของการส่งต่อ FQDN

คุณจะเห็นได้ว่าฟีเจอร์นี้ช่วยลดความจำเป็นในการอัปเดตด้วยตนเองเมื่อที่อยู่ IP ของโปรแกรมแก้ไข DNS แบ็กเอนด์มีการเปลี่ยนแปลง เนื่องจาก Cloud DNS จะรับการเปลี่ยนแปลงจากระเบียน DNS ของ FQDN โดยอัตโนมัติ นอกจากนี้ ยังช่วยให้การปรับขนาดโครงสร้างพื้นฐาน DNS มีความยืดหยุ่นมากขึ้นด้วย โดยอนุญาตให้เซิร์ฟเวอร์ DNS อยู่เบื้องหลังชื่อที่แชร์หรือปรับขนาดแบบไดนามิก

การผสานรวมกับนโยบายการกำหนดเส้นทางของ Cloud DNS

คุณจะได้เรียนรู้วิธีรวมการส่งต่อ FQDN เข้ากับนโยบายการกำหนดเส้นทาง DNS ของ Cloud (ตำแหน่งทางภูมิศาสตร์หรือ Round Robin แบบถ่วงน้ำหนัก) เพื่อให้ได้ความเกี่ยวข้องระดับภูมิภาค เพิ่มประสิทธิภาพให้กับการใช้งานที่หลากหลายทางภูมิศาสตร์ และกระจายการรับส่งข้อมูลตามน้ำหนักที่กำหนดค่าไว้

ไวยากรณ์คำสั่ง Google Cloud CLI

คุณจะต้องคุ้นเคยกับคำสั่ง gcloud dns managed-zones create และ Flag ที่เกี่ยวข้อง (--forwarding-targets, --private-forwarding-targets) สำหรับการตั้งค่าโซนการส่งต่อ FQDN

ข้อกำหนดเบื้องต้น

คุณต้องมีสิ่งต่อไปนี้จึงจะทํา Codelab นี้ให้เสร็จสมบูรณ์

2. การเริ่มตั้งค่า

การทำความเข้าใจสถานการณ์การส่งต่อ FQDN

การส่งต่อ FQDN ของ Cloud DNS รองรับการใช้งานหลายรูปแบบ ดังนี้

  • โซนส่วนตัวที่มีระเบียน A/AAAA: หาก FQDN ตรงกับระเบียน A/AAAA ในโซนส่วนตัว ระบบจะเพิ่มที่อยู่ IP ที่แก้ไขแล้วลงในรายการการส่งต่อ และลักษณะการทํางานจะเหมือนกับการส่งต่อไปยังที่อยู่ IP เป้าหมายโดยตรง
  • โซนส่วนตัวที่มีนโยบายตําแหน่งทางภูมิศาสตร์: นโยบายตําแหน่งทางภูมิศาสตร์ช่วยให้คุณระบุตําแหน่งทางภูมิศาสตร์ของแหล่งที่มาและระบุคําตอบที่สอดคล้องกัน ซึ่งจะยืนยันการกระจายการเข้าชมตามภูมิศาสตร์ ซึ่งเป็นสิ่งที่สําคัญสำหรับการส่งต่อ DNS ระดับภูมิภาคและความเกี่ยวข้อง
  • โซนส่วนตัวที่มีนโยบาย Round Robin แบบถ่วงน้ำหนัก (WRR): นโยบาย WRR อนุญาตให้ระบุน้ำหนักที่แตกต่างกันต่อที่อยู่ IP สำหรับชื่อ DNS ซึ่งจะกระจายการเข้าชมที่ยืนยันตามน้ำหนักที่กำหนดค่าไว้
  • โซนสาธารณะที่มีระเบียน A/AAAA: หาก FQDN ไม่ตรงกับชื่อส่วนตัวที่มองเห็นได้ภายในเครือข่ายเดียวกัน Cloud DNS จะพยายามแก้ไขโดยใช้อินเทอร์เน็ตสาธารณะ

การทำความเข้าใจคำสั่ง CLI ของ Google Cloud สําหรับการส่งต่อ FQDN

หากต้องการสร้างโซนการกําหนดเส้นทางด้วยเป้าหมายการกําหนดเส้นทาง FQDN โดยใช้คําสั่ง gcloud CLI คุณจะใช้คําสั่ง gcloud dns managed-zones create แฟล็กคีย์สำหรับการระบุเป้าหมาย FQDN คือ --forwarding-targets หรือ --private-forwarding-targets โปรดดูรายละเอียดเกี่ยวกับวิธีการกำหนดเส้นทางแบบมาตรฐานและแบบส่วนตัวในเอกสาร

  • --forwarding-targets: รายการที่อยู่ IPv4/IPv6 หรือชื่อโดเมน 1 รายการของเซิร์ฟเวอร์ชื่อเป้าหมายที่โซนจะส่งต่อคำค้นหาไป ระบบจะไม่สนใจค่านี้สำหรับระดับการเข้าถึงแบบสาธารณะ ระบบจะส่งต่อที่อยู่ที่ไม่เป็นไปตาม RFC1918 ไปยังปลายทางผ่านอินเทอร์เน็ต ระบบจะส่งต่อที่อยู่ RFC1918 ผ่าน VPC
  • --private-forwarding-targets: รายการที่อยู่ IPv4/IPv6 หรือชื่อโดเมน 1 รายการของเซิร์ฟเวอร์ชื่อเป้าหมายที่โซนจะส่งต่อคำค้นหาไป ระบบจะไม่สนใจค่านี้สำหรับระดับการเข้าถึงแบบสาธารณะ ระบบจะเข้าถึงที่อยู่ทั้งหมดที่ระบุสำหรับพารามิเตอร์นี้ผ่าน VPC

ตัวอย่างไวยากรณ์

gcloud dns managed-zones create NAME \
    --description=DESCRIPTION \
    --dns-name=DNS_SUFFIX \
    --networks=VPC_NETWORK_LIST \
    --forwarding-targets=DEFAULT_FQDN_TARGET \
    --visibility=private

โปรดทราบว่าคุณระบุ --private-forwarding-targets แทน --forwarding-targets ได้

ตั้งค่าโปรเจ็กต์ Google Cloud Platform

เข้าสู่ระบบ gcloud CLI

gcloud auth login

สร้างโปรเจ็กต์

gcloud projects create my-codelab-project

เปิดใช้ Cloud DNS API การดำเนินการนี้อาจใช้เวลา 2-3 นาทีจึงจะมีผล

gcloud services enable dns.googleapis.com

โค้ดแล็บนี้ใช้เครือข่าย VPC เริ่มต้นที่สร้างกับโปรเจ็กต์ใหม่ หรือจะสร้างเครือข่ายใหม่เพื่อใช้แทนก็ได้

3. ตั้งค่าการส่งต่อ FQDN ระดับภูมิภาค (ด้วยโซนส่วนตัวใหม่)

สถานการณ์นี้แสดงวิธีส่งต่อ DNS ระดับภูมิภาค เพื่อให้แน่ใจว่าการรับส่งจากภูมิภาคหนึ่งๆ ได้รับการส่งต่อไปยังเซิร์ฟเวอร์ DNS ภายในภูมิภาคเดียวกัน

สร้างโซน DNS ส่วนตัว

ก่อนอื่น ให้สร้างโซน DNS ส่วนตัว (เช่น foo.com) ที่จะโฮสต์ FQDN และนโยบายการกำหนดเส้นทางตามสถานที่ตั้งทางภูมิศาสตร์ที่เกี่ยวข้อง โซนนี้ต้องแสดงในเครือข่ายเริ่มต้น

gcloud dns managed-zones create my-zone \
    --description="Private Zone for FQDN outbound DNS forwarding." \
    --dns-name=foo.com. \
    --networks=default \
    --visibility=private

สร้างชุดระเบียนนโยบายการกำหนดเส้นทางตามตำแหน่งทางภูมิศาสตร์ภายในโซนส่วนตัว

ถัดไป ให้สร้างชุดระเบียน (เช่น geo.foo.com) ภายใน my-zone และใช้นโยบายการกำหนดเส้นทางตามตำแหน่งทางภูมิศาสตร์ ตัวอย่างนี้จะกำหนดค่าที่อยู่ IP สำหรับ asia-east1 และ asia-west1

gcloud dns record-sets create geo.foo.com. \
    --ttl="30" \
    --type="A" \
    --zone="my-zone" \
    --routing-policy-type="GEO" \
    --routing-policy-data="asia-east1=192.168.0.1;us-central1=192.168.0.2"

หมายเหตุ: หากปิดใช้การกำหนดเขตพื้นที่เสมือน (ค่าเริ่มต้นและที่แนะนำ) การค้นหาจะไปยังภูมิภาคที่ทำงานได้ตามปกติซึ่งอยู่ใกล้ที่สุด หากเป้าหมายในภูมิภาคเดิมไม่ทำงานตามปกติ

สร้างโซนการส่งต่อที่มีเป้าหมาย FQDN

สร้างโซนการกําหนดเส้นทาง (geo.test.com.) ที่มองเห็นได้ในเครือข่ายเริ่มต้นเดียวกัน และตั้งค่า geo.foo.com. (FQDN ที่มีนโยบายการกำหนดเส้นทางตามตำแหน่งทางภูมิศาสตร์) เป็นเป้าหมายการกําหนดเส้นทาง

gcloud dns managed-zones create my-geo-fwd-zone \
    --description="Forwarding zone for FQDN outbound DNS forwarding for routing policy." \
    --dns-name=geo.test.com. \
    --networks=default \
    --private-forwarding-targets=geo.foo.com. \
    --visibility=private

ตอนนี้การค้นหา DNS ที่ตรงกับ geo.test.com จะส่งต่อไปยัง IP ที่แก้ไขแล้ว (เช่น 192.168.0.1 หรือ 192.168.0.2) ของ geo.foo.com โดยอิงตามภูมิภาคต้นทางของการค้นหา

4. ตั้งค่าการส่งต่อ FQDN (ที่มีโซนส่วนตัวที่มีอยู่)

มีโซน DNS ส่วนตัวอยู่แล้ว

สมมติว่าคุณมีโซน DNS ส่วนตัวชื่อ my-zone (foo.com.) ที่มองเห็นได้บนเครือข่ายเริ่มต้นอยู่แล้ว

สร้างระเบียนทรัพยากร DNS ภายในโซนส่วนตัวนี้

สร้างระเบียนประเภท A สำหรับ a.foo.com ภายใน my-zone ที่มีอยู่

gcloud dns record-sets create a.foo.com. \
    --ttl="30" \
    --type="A" \
    --zone="my-zone" \
    --rrdatas=1.2.3.4

สร้างโซนการส่งต่อและระบุเป้าหมาย FQDN

สร้างโซนการส่งต่อและระบุ a.foo.com เป็นเป้าหมายการส่งต่อ ซึ่งคล้ายกับสถานการณ์ FQDN ระดับภูมิภาค

gcloud dns managed-zones create my-a-fwd-zone \
    --description="Forwarding zone for FQDN outbound DNS forwarding for A record." \
    --dns-name=a.test.com. \
    --networks=default \
    --private-forwarding-targets=a.foo.com. \
    --visibility=private

การค้นหา DNS ที่ตรงกับ a.test.com จะส่งต่อไปยังที่อยู่ IP ที่แก้ไขแล้ว 1.2.3.4 ของ a.foo.com

5. ล้างข้อมูล

ก่อนที่จะลบโซนส่วนตัวได้ คุณต้องลบ ResourceRecordSet ทั้งหมดภายในโซนส่วนตัวก่อน (ยกเว้นระเบียน NS และ SOA ซึ่งสร้างขึ้นโดยอัตโนมัติและต้องอยู่ในโซนส่วนตัวเสมอ)

ลบนโยบายการกำหนดเส้นทางตามตำแหน่งทางภูมิศาสตร์ในโซนส่วนตัว

gcloud dns record-sets delete "geo.foo.com." --type="A" --zone="my-zone"

ลบระเบียน A ในโซนส่วนตัว

gcloud dns record-sets delete "a.foo.com." --type="A" --zone="my-zone"

ลบโซนส่วนตัว

gcloud dns managed-zones delete "my-zone"

ลบโซนการส่งต่อสำหรับนโยบายการกำหนดเส้นทางตามตำแหน่งทางภูมิศาสตร์

gcloud dns managed-zones delete "my-geo-fwd-zone"

ลบโซนการส่งต่อสำหรับระเบียน A

gcloud dns managed-zones delete "my-a-fwd-zone"

6. ขอแสดงความยินดี

ขอแสดงความยินดี คุณได้เรียนรู้วิธีใช้การส่งต่อ DNS ขาออก FQDN เรียบร้อยแล้ว

อ่านเพิ่มเติม

เอกสารอ้างอิง