การใช้อินสแตนซ์ฮอพถัดไป (ที่ไม่ได้ติดแท็กและติดแท็ก) ของเส้นทาง IPv6 แบบคงที่ ที่อยู่ฮอพถัดไป และเกตเวย์ฮอพถัดไป

1. บทนำ

เส้นทางที่กำหนดเองแบบคงที่จะมีผลต่อลักษณะการทำงานของการกำหนดเส้นทางเริ่มต้นใน VPC ตอนนี้เส้นทางที่กำหนดเองของ IPv6 รองรับแอตทริบิวต์การ Hop ถัดไปใหม่แล้ว ได้แก่ next-hop-gateway, next-hop-instance และ next-hop-address Codelab นี้อธิบายวิธีใช้เส้นทางที่กำหนดเองของ IPv6 กับตัวเลือกการ Hop ถัดไปใหม่เหล่านี้โดยใช้ VPC 2 รายการที่เชื่อมต่อด้วยอินสแตนซ์ VM แบบหลาย NIC นอกจากนี้ คุณยังจะสาธิตการผสมการกำหนดที่อยู่ ULA และ GUA รวมถึงการให้การเข้าถึง VPC ของ ULA ไปยังอินเทอร์เน็ตสาธารณะโดยใช้ความสามารถของเส้นทางที่กำหนดเองใหม่

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

  • วิธีสร้างเส้นทางที่กำหนดเอง IPv6 ที่มี next-hop-ilb next-hop โดยการระบุชื่อของ ILB
  • วิธีสร้างเส้นทางที่กำหนดเอง IPv6 ที่มีฮอปถัดไปเป็น next-hop-ilb โดยการระบุที่อยู่ IPv6 ของ ILB

สิ่งที่คุณต้องมี

  • โปรเจ็กต์ Google Cloud

2. ก่อนเริ่มต้น

อัปเดตโปรเจ็กต์เพื่อรองรับ Codelab

Codelab นี้ใช้ $variables เพื่อช่วยในการติดตั้งใช้งานการกำหนดค่า gcloud ใน Cloud Shell

ใน Cloud Shell ให้ทำดังนี้

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
export projectname=$(gcloud config list --format="value(core.project)")

สถาปัตยกรรมของ Lab โดยรวม

5fc56288b4f8ae05.png

หากต้องการสาธิตฮอปถัดไปของเส้นทางที่กำหนดเองทั้ง 2 ประเภท คุณจะต้องสร้าง VPC 2 รายการ ได้แก่ VPC ของไคลเอ็นต์และเซิร์ฟเวอร์ที่ใช้การกำหนดที่อยู่ ULA

หากต้องการให้ VPC ของไคลเอ็นต์เข้าถึงเซิร์ฟเวอร์ คุณจะต้องใช้เส้นทางที่กำหนดเองโดยใช้ next-hop-ilb ที่ชี้ไปยัง ILB (โดยใช้ชื่อของ ILB) ที่อยู่หน้ากลุ่มอินสแตนซ์เกตเวย์แบบหลาย NIC ซึ่งอยู่ระหว่าง ILB 2 รายการ หากต้องการกำหนดเส้นทางกลับไปยังอินสแตนซ์ไคลเอ็นต์ (หลังจากลบเส้นทาง ::/0 เริ่มต้น) คุณจะต้องใช้เส้นทางที่กำหนดเองที่มี next-hop-ilb (ใช้ที่อยู่ของ ILB) ซึ่งชี้ไปยัง ILB

3. การตั้งค่า VPC ของไคลเอ็นต์

สร้าง VPC ของไคลเอ็นต์

ใน Cloud Shell ให้ทำดังนี้

gcloud compute networks create client-vpc \
    --project=$projectname \
    --subnet-mode=custom --mtu=1500 \
    --bgp-routing-mode=regional \
    --enable-ula-internal-ipv6

สร้างซับเน็ตไคลเอ็นต์

ใน Cloud Shell ให้ทำดังนี้

gcloud compute networks subnets create client-subnet  \
    --network=client-vpc \
    --project=$projectname \
    --range=192.168.1.0/24 \
    --stack-type=IPV4_IPV6 \
    --ipv6-access-type=internal \
    --region=us-central1

บันทึกซับเน็ต IPv6 ที่กำหนดในตัวแปรสภาพแวดล้อมโดยใช้คำสั่งนี้

export client_subnet=$(gcloud compute networks subnets \
    describe client-subnet \
    --project $projectname \
    --format="value(internalIpv6Prefix)" \
    --region us-central1)

เปิดใช้ไคลเอ็นต์อินสแตนซ์

ใน Cloud Shell ให้ทำดังนี้

gcloud compute instances create client-instance \
    --subnet client-subnet \
    --stack-type IPV4_IPV6 \
    --zone us-central1-a \
    --project=$projectname

เพิ่มกฎไฟร์วอลล์สำหรับการรับส่งข้อมูล VPC ของไคลเอ็นต์

ใน Cloud Shell ให้ทำดังนี้

gcloud compute firewall-rules create allow-gateway-client \
    --direction=INGRESS --priority=1000 \
    --network=client-vpc --action=ALLOW \
    --rules=tcp --source-ranges=$client_subnet \
    --project=$projectname 

เพิ่มกฎไฟร์วอลล์เพื่ออนุญาต IAP สำหรับอินสแตนซ์ไคลเอ็นต์

ใน Cloud Shell ให้ทำดังนี้

gcloud compute firewall-rules create allow-iap-client \
    --direction=INGRESS --priority=1000 \
    --network=client-vpc --action=ALLOW \
    --rules=tcp:22 --source-ranges=35.235.240.0/20 \
    --project=$projectname 

ยืนยันการเข้าถึง SSH ในอินสแตนซ์ไคลเอ็นต์

เข้าสู่ระบบอินสแตนซ์ไคลเอ็นต์ภายใน Cloud Shell โดยทำดังนี้

gcloud compute ssh client-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

หากสำเร็จ คุณจะเห็นหน้าต่างเทอร์มินัลจากอินสแตนซ์ไคลเอ็นต์ ออกจากเซสชัน SSH เพื่อดำเนินการต่อใน Codelab

4. การตั้งค่า VPC ของเซิร์ฟเวอร์

สร้าง VPC ของเซิร์ฟเวอร์

ใน Cloud Shell ให้ทำดังนี้

gcloud compute networks create server-vpc \
    --project=$projectname \
    --subnet-mode=custom --mtu=1500 \
    --bgp-routing-mode=regional \
    --enable-ula-internal-ipv6

สร้างซับเน็ตของเซิร์ฟเวอร์

ใน Cloud Shell ให้ทำดังนี้

gcloud compute networks subnets create server-subnet \
    --network=server-vpc \
    --project=$projectname \
    --range=192.168.0.0/24 \
    --stack-type=IPV4_IPV6 \
    --ipv6-access-type=internal \
    --region=us-central1

บันทึกซับเน็ตที่กำหนดในตัวแปรสภาพแวดล้อมโดยใช้คำสั่งนี้

export server_subnet=$(gcloud compute networks subnets \
    describe server-subnet \
    --project $projectname \
    --format="value(internalIpv6Prefix)" \
    --region us-central1)

เปิด VM ของเซิร์ฟเวอร์

ใน Cloud Shell ให้ทำดังนี้

gcloud compute instances create server-instance \
    --subnet server-subnet \
    --stack-type IPV4_IPV6 \
    --zone us-central1-a \
    --project=$projectname

เพิ่มกฎไฟร์วอลล์เพื่ออนุญาตให้เข้าถึงเซิร์ฟเวอร์จากไคลเอ็นต์

ใน Cloud Shell ให้ทำดังนี้

gcloud compute firewall-rules create allow-client-server \
    --direction=INGRESS --priority=1000 \
    --network=server-vpc --action=ALLOW \
    --rules=tcp --source-ranges=$client_subnet \
    --project=$projectname 

เพิ่มกฎไฟร์วอลล์เพื่ออนุญาต IAP

ใน Cloud Shell ให้ทำดังนี้

gcloud compute firewall-rules create allow-iap-server \
    --direction=INGRESS --priority=1000 \
    --network=server-vpc --action=ALLOW \
    --rules=tcp:22 \
    --source-ranges=35.235.240.0/20 \
    --project=$projectname 

ติดตั้ง Apache ในอินสแตนซ์เซิร์ฟเวอร์ ULA

เข้าสู่ระบบอินสแตนซ์ไคลเอ็นต์ภายใน Cloud Shell โดยทำดังนี้

gcloud compute ssh server-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

เรียกใช้คำสั่งต่อไปนี้ในเชลล์ของ VM เซิร์ฟเวอร์

sudo apt update && sudo apt -y install apache2

ตรวจสอบว่า Apache ทำงานอยู่

sudo systemctl status apache2

เขียนทับหน้าเว็บเริ่มต้น

echo '<!doctype html><html><body><h1>Hello World! From Server Instance!</h1></body></html>' | sudo tee /var/www/html/index.html

ออกจากเซสชัน SSH เพื่อดำเนินการต่อใน Codelab

5. สร้างอินสแตนซ์เกตเวย์

สร้างเทมเพลตอินสแตนซ์เกตเวย์แบบหลาย NIC

ใน Cloud Shell ให้ทำดังนี้

gcloud compute instance-templates create gateway-instance-template \
    --project=$projectname \
    --instance-template-region=us-central1 \
    --region=us-central1 \
--network-interface=stack-type=IPV4_IPV6,subnet=client-subnet,no-address \
--network-interface=stack-type=IPV4_IPV6,subnet=server-subnet,no-address \
    --can-ip-forward \
    --metadata=startup-script='#! /bin/bash 
sudo sysctl -w net.ipv6.conf.ens4.accept_ra=2
sudo sysctl -w net.ipv6.conf.ens5.accept_ra=2
sudo sysctl -w net.ipv6.conf.ens4.accept_ra_defrtr=1
sudo sysctl -w net.ipv6.conf.all.forwarding=1'

สร้างกลุ่มอินสแตนซ์เกตเวย์แบบหลาย NIC

ใน Cloud Shell ให้ทำดังนี้

gcloud compute instance-groups managed create gateway-instance-group \
    --project=$projectname \
    --base-instance-name=gateway-instance \
      --template=projects/$projectname/regions/us-central1/instanceTemplates/gateway-instance-template \
    --size=2 \
    --zone=us-central1-a

ยืนยันอินสแตนซ์เกตเวย์

เพื่อให้มั่นใจว่าสคริปต์เริ่มต้นของเราส่งผ่านอย่างถูกต้องและตารางการกำหนดเส้นทาง v6 ถูกต้อง SSH ไปยังอินสแตนซ์เกตเวย์รายการใดรายการหนึ่ง

ใน Cloud Shell ให้แสดงรายการอินสแตนซ์เกตเวย์โดยเรียกใช้คำสั่งต่อไปนี้

gcloud compute instances list \
    --project=$projectname \
    --zones=us-central1-a \
    --filter name~gateway \
    --format 'csv(name)'

จดชื่ออินสแตนซ์ไว้ชื่อหนึ่งและใช้ในคำสั่งถัดไปเพื่อ SSH ไปยังอินสแตนซ์

เข้าสู่ระบบอินสแตนซ์เกตเวย์ใดอินสแตนซ์หนึ่งภายใน Cloud Shell

gcloud compute ssh gateway-instance-<suffix> \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

ภายในเชลล์ VM ของเกตเวย์ ให้เรียกใช้คำสั่งต่อไปนี้เพื่อตรวจสอบการส่งต่อ IPv6

sudo sysctl net.ipv6.conf.all.forwarding

คำสั่งควรแสดงค่า "1" ซึ่งบ่งชี้ว่าได้เปิดใช้การส่งต่อ IPv6 แล้ว

ยืนยันตารางการกำหนดเส้นทาง IPv6 ในอินสแตนซ์

ip -6 route show

เอาต์พุตตัวอย่างที่แสดงทั้งเส้นทางซับเน็ต ULA และ GUA โดยมีเส้นทางเริ่มต้นที่ชี้ไปยังอินเทอร์เฟซ GUA

::1 dev lo proto kernel metric 256 pref medium
2600:1900:4000:7a7f:0:1:: dev ens4 proto kernel metric 256 expires 83903sec pref medium
2600:1900:4000:7a7f::/65 via fe80::4001:c0ff:fea8:101 dev ens4 proto ra metric 1024 expires 88sec pref medium
fd20:3df:8d5c::1:0:0 dev ens5 proto kernel metric 256 expires 83904sec pref medium
fd20:3df:8d5c::/64 via fe80::4001:c0ff:fea8:1 dev ens5 proto ra metric 1024 expires 84sec pref medium
fe80::/64 dev ens5 proto kernel metric 256 pref medium
fe80::/64 dev ens4 proto kernel metric 256 pref medium
default via fe80::4001:c0ff:fea8:101 dev ens4 proto ra metric 1024 expires 88sec pref medium

ออกจากเซสชัน SSH เพื่อดำเนินการต่อใน Codelab

6. สร้างคอมโพเนนต์ของตัวจัดสรรภาระงาน

ก่อนที่จะสร้างเส้นทางในทั้ง 2 VPC ได้ เราจะต้องสร้างตัวจัดสรรภาระงานแบบพาสทรูภายในทั้ง 2 ด้านของอินสแตนซ์เกตเวย์เพื่อส่งต่อการรับส่งข้อมูล

ตัวจัดสรรภาระงานที่สร้างใน Codelab นี้ประกอบด้วย

  • การตรวจสอบประสิทธิภาพการทำงาน: ใน Codelab นี้ เราจะสร้างการตรวจสอบประสิทธิภาพการทำงานอย่างง่ายที่กำหนดเป้าหมายเป็นพอร์ต 22 โปรดทราบว่าการตรวจสอบประสิทธิภาพการทำงานจะใช้ไม่ได้ตามที่ติดตั้งใช้งาน (ซึ่งจะต้องเพิ่มกฎไฟร์วอลล์เพื่อให้ใช้การตรวจสอบประสิทธิภาพการทำงานได้ และสร้างเส้นทางพิเศษในอินสแตนซ์เกตเวย์) เนื่องจาก Codelab นี้มุ่งเน้นที่การส่งต่อ IPv6 เราจึงจะใช้ลักษณะการทำงานของการกระจายการรับส่งข้อมูลเริ่มต้นของตัวจัดสรรภาระงานแบบส่งผ่านภายในเมื่อแบ็กเอนด์ทั้งหมดไม่สมบูรณ์ กล่าวคือ ส่งต่อไปยังแบ็กเอนด์ทั้งหมดเป็นทางเลือกสุดท้าย
  • บริการแบ็กเอนด์: เราจะใช้โปรโตคอล TCP สำหรับบริการแบ็กเอนด์ แต่เนื่องจากตัวจัดสรรภาระงานสร้างขึ้นเพื่อวัตถุประสงค์ในการกำหนดเส้นทาง ระบบจึงส่งต่อโปรโตคอลทั้งหมดโดยไม่คำนึงถึงโปรโตคอลของบริการแบ็กเอนด์
  • กฎการส่งต่อ: เราสร้างกฎการส่งต่อต่อ VPC
  • ที่อยู่ IPv6 ภายใน: ใน Codelab นี้ เราจะอนุญาตให้กฎการส่งต่อจัดสรรที่อยู่ IPv6 จากซับเน็ตโดยอัตโนมัติ

สร้างการตรวจสอบประสิทธิภาพการทำงาน

ใน Cloud Shell ให้ทำดังนี้

gcloud compute health-checks create tcp tcp-hc-22 \
    --project=$projectname \
    --region=us-central1 \
    --port=22

สร้างบริการแบ็กเอนด์

ใน Cloud Shell ให้ทำดังนี้

gcloud compute backend-services create bes-ilb-clientvpc \
    --project=$projectname \
    --load-balancing-scheme=internal \
    --protocol=tcp \
    --network=client-vpc \
    --region=us-central1 \
    --health-checks=tcp-hc-22 \
    --health-checks-region=us-central1

gcloud compute backend-services create bes-ilb-servervpc \
    --project=$projectname \
    --load-balancing-scheme=internal \
    --protocol=tcp \
    --network=server-vpc \
    --region=us-central1 \
    --health-checks=tcp-hc-22 \
    --health-checks-region=us-central1

เพิ่มกลุ่มอินสแตนซ์ไปยังบริการแบ็กเอนด์

ใน Cloud Shell ให้ทำดังนี้

gcloud compute backend-services add-backend bes-ilb-clientvpc \
    --project=$projectname \
    --region=us-central1 \
    --instance-group=gateway-instance-group \
    --instance-group-zone=us-central1-a
gcloud compute backend-services add-backend bes-ilb-servervpc \
    --project=$projectname \
    --region=us-central1 \
    --instance-group=gateway-instance-group \
    --instance-group-zone=us-central1-a

สร้างกฎการส่งต่อ

ใน Cloud Shell ให้ทำดังนี้

gcloud compute forwarding-rules create fr-ilb-clientvpc \
    --project=$projectname \
    --region=us-central1 \
    --load-balancing-scheme=internal \
    --network=client-vpc \
    --subnet=client-subnet \
    --ip-protocol=TCP \
    --ip-version=IPV6 \
    --ports=ALL \
    --backend-service=bes-ilb-clientvpc \
    --backend-service-region=us-central1

gcloud compute forwarding-rules create fr-ilb-servervpc \
    --project=$projectname \
    --region=us-central1 \
    --load-balancing-scheme=internal \
    --network=server-vpc \
    --subnet=server-subnet \
    --ip-protocol=TCP \
    --ip-version=IPV6 \
    --ports=ALL \
    --backend-service=bes-ilb-servervpc \
    --backend-service-region=us-central1

บันทึกที่อยู่ IPv6 ของกฎการส่งต่อทั้ง 2 รายการโดยออกคำสั่งต่อไปนี้ใน Cloud Shell

export fraddress_client=$(gcloud compute forwarding-rules \
    describe fr-ilb-clientvpc \
    --project $projectname \
    --format="value(IPAddress)" \
    --region us-central1)

export fraddress_server=$(gcloud compute forwarding-rules \
    describe fr-ilb-servervpc \
    --project $projectname \
    --format="value(IPAddress)" \
    --region us-central1)

7. สร้างและทดสอบเส้นทางไปยังตัวจัดสรรภาระงาน (โดยใช้ที่อยู่ของตัวจัดสรรภาระงาน)

ในส่วนนี้ คุณจะเพิ่มเส้นทางไปยังทั้ง VPC ของไคลเอ็นต์และเซิร์ฟเวอร์โดยใช้ที่อยู่ IPv6 ของตัวโหลดบาลานซ์เป็น Next Hop

จดที่อยู่เซิร์ฟเวอร์

ใน Cloud Shell ให้ทำดังนี้

gcloud compute instances list \
   --project $projectname \
   --zones us-central1-a \
   --filter="name~server-instance" \
--format='value[separator=","](name,networkInterfaces[0].ipv6Address)'

ซึ่งควรแสดงทั้งชื่ออินสแตนซ์เซิร์ฟเวอร์และคำนำหน้า IPv6 เอาต์พุตตัวอย่าง

server-instance,fd20:3df:8d5c:0:0:0:0:0

จดที่อยู่เซิร์ฟเวอร์ไว้เนื่องจากคุณจะต้องใช้ที่อยู่นี้ในคำสั่ง curl จากอินสแตนซ์ไคลเอ็นต์ในภายหลัง แต่คุณไม่สามารถใช้ตัวแปรสภาพแวดล้อมเพื่อจัดเก็บข้อมูลเหล่านี้ได้ง่ายๆ เนื่องจากตัวแปรดังกล่าวจะไม่โอนผ่านเซสชัน SSH

เรียกใช้คำสั่ง curl จากไคลเอ็นต์ไปยังอินสแตนซ์เซิร์ฟเวอร์ ULA

เพื่อดูลักษณะการทำงานก่อนเพิ่มเส้นทางใหม่ เรียกใช้คำสั่ง curl จากอินสแตนซ์ไคลเอ็นต์ไปยัง server-instance1

เข้าสู่ระบบอินสแตนซ์ไคลเอ็นต์ภายใน Cloud Shell โดยทำดังนี้

gcloud compute ssh client-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

ภายในอินสแตนซ์ไคลเอ็นต์ ให้เรียกใช้ curl โดยใช้ที่อยู่ ULA IPV6 ของอินสแตนซ์ server1 (คำสั่งจะตั้งค่าการหมดเวลาสั้นๆ เป็น 5 วินาทีเพื่อหลีกเลี่ยงไม่ให้ curl รอเป็นเวลานานเกินไป)

curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'

คำสั่ง curl นี้ควรหมดเวลาเนื่องจาก VPC ของไคลเอ็นต์ยังไม่มีเส้นทางไปยัง VPC ของเซิร์ฟเวอร์

มาลองแก้ไขปัญหานี้กัน ออกจากเซสชัน SSH ก่อน

เพิ่มเส้นทางที่กำหนดเองใน VPC ของไคลเอ็นต์

เนื่องจาก VPC ของไคลเอ็นต์ไม่มีเส้นทางไปยังคำนำหน้า ULA มาเพิ่มกันเลยโดยสร้างเส้นทางที่ชี้ไปยัง ILB ฝั่งไคลเอ็นต์ตามที่อยู่

หมายเหตุ: ระบบจะกำหนดที่อยู่ /96 ให้กับตัวจัดสรรภาระงานแบบส่งผ่านภายใน IPv6 คุณต้องนำมาสก์ /96 ออกจากที่อยู่ก่อนส่งไปยังคำสั่งถัดไป (ใช้การแทนที่ในตำแหน่งด้านล่างใน Bash)

ใน Cloud Shell ให้ทำดังนี้

gcloud compute routes create client-to-server-route \
   --project=$projectname \
   --destination-range=$server_subnet \
   --network=client-vpc \
   --next-hop-ilb=${fraddress_client//\/96}

SSH กลับไปยังอินสแตนซ์ไคลเอ็นต์

gcloud compute ssh client-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

ภายในอินสแตนซ์ไคลเอ็นต์ ให้ลองใช้ curl ไปยังอินสแตนซ์เซิร์ฟเวอร์อีกครั้ง (คำสั่งจะตั้งค่าการหมดเวลาสั้นๆ เป็น 5 วินาทีเพื่อไม่ให้ curl รอเป็นเวลานานเกินไป)

curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'

คำสั่ง curl นี้ยังคงหมดเวลาเนื่องจาก VPC ของเซิร์ฟเวอร์ยังไม่มีเส้นทางกลับไปยัง VPC ของไคลเอ็นต์ผ่านอินสแตนซ์เกตเวย์

ออกจากเซสชัน SSH เพื่อดำเนินการต่อใน Codelab

เพิ่มเส้นทางที่กำหนดเองใน VPC ของเซิร์ฟเวอร์

ใน Cloud Shell ให้ทำดังนี้

gcloud compute routes create server-to-client-route \
   --project=$projectname \
   --destination-range=$client_subnet \
   --network=server-vpc \
  --next-hop-ilb=${fraddress_server//\/96}

SSH กลับไปยังอินสแตนซ์ไคลเอ็นต์

gcloud compute ssh client-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

ภายในอินสแตนซ์ไคลเอ็นต์ ให้ลองใช้ curl ไปยังอินสแตนซ์เซิร์ฟเวอร์อีกครั้ง

curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'

ตอนนี้คำสั่ง curl จะทำงานสำเร็จ ซึ่งแสดงให้เห็นว่าคุณมีการเข้าถึงจากต้นทางถึงปลายทางจากอินสแตนซ์ไคลเอ็นต์ไปยังอินสแตนซ์เซิร์ฟเวอร์ ULA ปัจจุบันการเชื่อมต่อนี้ทำได้โดยใช้เส้นทางที่กำหนดเองของ IPv6 ที่มี next-hop-ilb เป็น next-hop เท่านั้น

เอาต์พุตตัวอย่าง

<user id>@client-instance:~$ curl -m 5.0 -g -6 'http://[fd20:3df:8d5c:0:0:0:0:0]:80/'
<!doctype html><html><body><h1>Hello World! From Server Instance!</h1></body></html>

ออกจากเซสชัน SSH เพื่อดำเนินการต่อใน Codelab

8. สร้างและทดสอบเส้นทางไปยังตัวจัดสรรภาระงาน (โดยใช้ชื่อตัวจัดสรรภาระงาน)

หรือ next-hop-ilb จะอ้างอิงชื่อของตัวจัดสรรภาระงานแทนที่อยู่ IPv6 ก็ได้ ในส่วนนี้ เราจะอธิบายขั้นตอนในการดำเนินการดังกล่าวและทดสอบว่าไคลเอ็นต์และเซิร์ฟเวอร์ยังคงเชื่อมต่อกันอยู่

ลบเส้นทางก่อนหน้า

มาคืนค่าสภาพแวดล้อมเป็นก่อนเพิ่มเส้นทางที่กำหนดเองโดยลบเส้นทางที่กำหนดเองที่ใช้ชื่ออินสแตนซ์กัน

ใน Cloud Shell ให้ทำดังนี้

gcloud compute routes delete client-to-server-route  --quiet --project=$projectname
gcloud compute routes delete server-to-client-route  --quiet --project=$projectname

เรียกใช้คำสั่ง curl จากไคลเอ็นต์ไปยังอินสแตนซ์เซิร์ฟเวอร์ ULA

หากต้องการยืนยันว่าระบบลบเส้นทางก่อนหน้าเรียบร้อยแล้ว ให้เรียกใช้คำสั่ง curl จากอินสแตนซ์ไคลเอ็นต์ไปยังอินสแตนซ์เซิร์ฟเวอร์ 1

เข้าสู่ระบบอินสแตนซ์ไคลเอ็นต์ภายใน Cloud Shell โดยทำดังนี้

gcloud compute ssh client-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

ภายในอินสแตนซ์ไคลเอ็นต์ ให้เรียกใช้ curl โดยใช้ที่อยู่ ULA IPV6 ของอินสแตนซ์ server1 (คำสั่งจะตั้งค่าการหมดเวลาสั้นๆ เป็น 5 วินาทีเพื่อหลีกเลี่ยงไม่ให้ curl รอเป็นเวลานานเกินไป)

curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'

คำสั่ง curl นี้ควรหมดเวลาเนื่องจาก VPC ของไคลเอ็นต์ไม่มีเส้นทางไปยัง VPC ของเซิร์ฟเวอร์อีกต่อไป

เพิ่มเส้นทางที่กำหนดเองใน VPC ของไคลเอ็นต์และเซิร์ฟเวอร์

มาเพิ่มเส้นทางที่กำหนดเองในทั้ง VPC ของไคลเอ็นต์และเซิร์ฟเวอร์อีกครั้ง แต่แทนที่จะใช้ที่อยู่ของ ILB เราจะใช้ชื่อและภูมิภาคของ ILB ในคำสั่ง

ใน Cloud Shell ให้ทำดังนี้

gcloud compute routes create client-to-server-route \
   --project=$projectname \
   --destination-range=$server_subnet \
   --network=client-vpc \
   --next-hop-ilb=fr-ilb-clientvpc \
   --next-hop-ilb-region=us-central1

gcloud compute routes create server-to-client-route \
   --project=$projectname \
   --destination-range=$client_subnet \
   --network=server-vpc \
   --next-hop-ilb=fr-ilb-servervpc \
   --next-hop-ilb-region=us-central1

SSH กลับไปยังอินสแตนซ์ไคลเอ็นต์

gcloud compute ssh client-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

ภายในอินสแตนซ์ไคลเอ็นต์ ให้ลองใช้ curl ไปยังอินสแตนซ์เซิร์ฟเวอร์อีกครั้ง (คำสั่งจะตั้งค่าการหมดเวลาสั้นๆ เป็น 5 วินาทีเพื่อไม่ให้ curl รอเป็นเวลานานเกินไป)

curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'

ตอนนี้คำสั่ง curl จะทำงานสำเร็จ ซึ่งแสดงให้เห็นว่าคุณมีการเข้าถึงจากต้นทางถึงปลายทางจากอินสแตนซ์ไคลเอ็นต์ไปยังอินสแตนซ์เซิร์ฟเวอร์ ULA

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

ล้างข้อมูลเส้นทางที่กำหนดเอง

ใน Cloud Shell ให้ทำดังนี้

gcloud compute routes delete client-to-server-route  --quiet --project=$projectname
gcloud compute routes delete server-to-client-route  --quiet --project=$projectname

ล้างข้อมูลคอมโพเนนต์ LB

ใน Cloud Shell ให้ทำดังนี้

gcloud compute forwarding-rules delete fr-ilb-clientvpc --region us-central1 --quiet --project=$projectname
gcloud compute forwarding-rules delete fr-ilb-servervpc --region us-central1 --quiet --project=$projectname

gcloud compute backend-services delete bes-ilb-clientvpc --region us-central1 --quiet --project=$projectname
gcloud compute backend-services delete bes-ilb-servervpc --region us-central1 --quiet --project=$projectname

gcloud compute health-checks delete tcp-hc-22 --region us-central1 --quiet --project=$projectname

ล้างข้อมูลอินสแตนซ์และเทมเพลตอินสแตนซ์

ใน Cloud Shell ให้ทำดังนี้

gcloud compute instances delete client-instance --zone us-central1-a --quiet --project=$projectname

gcloud compute instances delete server-instance --zone us-central1-a --quiet --project=$projectname


gcloud compute instance-groups managed delete gateway-instance-group --zone us-central1-a --quiet --project=$projectname

gcloud compute instance-templates delete gateway-instance-template --region us-central1 --quiet --project=$projectname

ล้างข้อมูลซับเน็ต

ใน Cloud Shell ให้ทำดังนี้

gcloud compute networks subnets delete client-subnet --region=us-central1 --quiet --project=$projectname

gcloud compute networks subnets delete server-subnet --region=us-central1 --quiet --project=$projectname

ล้างข้อมูลกฎไฟร์วอลล์

ใน Cloud Shell ให้ทำดังนี้

gcloud compute firewall-rules delete allow-iap-client  --quiet --project=$projectname
gcloud compute firewall-rules delete allow-iap-server  --quiet --project=$projectname
gcloud compute firewall-rules delete allow-gateway-client  --quiet --project=$projectname
gcloud compute firewall-rules delete allow-client-server  --quiet --project=$projectname

ล้างข้อมูล VPC

ใน Cloud Shell ให้ทำดังนี้

gcloud compute networks delete client-vpc --quiet --project=$projectname
gcloud compute networks delete server-vpc --quiet --project=$projectname

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

คุณใช้เส้นทาง IPv6 แบบคงที่ที่กำหนดเองได้สำเร็จโดยตั้งค่าฮอพถัดไปเป็น next-hop-ilb นอกจากนี้ คุณยังตรวจสอบการสื่อสาร IPv6 แบบต้นทางถึงปลายทางโดยใช้เส้นทางเหล่านั้นด้วย

ขั้นตอนต่อไปคืออะไร

ลองใช้ Codelab เหล่านี้

อ่านเพิ่มเติมและวิดีโอ

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