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

1. บทนำ

ef2d068c413a15bd.png

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

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

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

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

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

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

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

คุณจะคุ้นเคยกับคำสั่ง gcloud dns managed-zones create และแฟล็กที่เกี่ยวข้อง (--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 จะพยายามแก้ไขโดยใช้อินเทอร์เน็ตสาธารณะ

ทำความเข้าใจคำสั่ง Google Cloud CLI สำหรับการส่งต่อ 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 การดำเนินการนี้อาจใช้เวลาสักครู่จึงจะมีผล

gcloud services enable dns.googleapis.com

Codelab นี้ใช้เครือข่าย 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"

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

สร้างโซนส่งต่อที่มีเป้าหมาย 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.) ที่มองเห็นได้ในเครือข่าย default

สร้างระเบียนทรัพยากร 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

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

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 เรียบร้อยแล้ว

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

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