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

คุณจะสร้าง VPC 2 รายการ ได้แก่ VPC ไคลเอ็นต์และเซิร์ฟเวอร์ที่ใช้การกำหนดที่อยู่ ULA เพื่อแสดงฮอพถัดไปของเส้นทางที่กำหนดเองทั้ง 2 ประเภท
หากต้องการให้ 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 ให้เข้าสู่ระบบ client-instance ดังนี้
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 ให้เข้าสู่ระบบ client-instance ดังนี้
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. สร้างคอมโพเนนต์ของตัวจัดสรรภาระงาน
ก่อนที่จะสร้างเส้นทางใน VPC ทั้ง 2 รายการได้ เราจะต้องสร้างตัวจัดสรรภาระงานส่งผ่านภายในทั้ง 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 ของตัวจัดสรรภาระงานเป็นฮอพถัดไป
จดที่อยู่เซิร์ฟเวอร์
ใน 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 ให้เข้าสู่ระบบ client-instance ดังนี้
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 เป็นฮอพถัดไปเท่านั้น
เอาต์พุตตัวอย่าง
<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 จากอินสแตนซ์ไคลเอ็นต์ไปยัง server-instance1
ใน Cloud Shell ให้เข้าสู่ระบบ client-instance ดังนี้
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 ต่อไปนี้
- เข้าถึง Google APIs จากโฮสต์ภายในองค์กรโดยใช้ที่อยู่ IPv6
- ตัวเลือกการกำหนดที่อยู่ IP คือ IPv4 และ IPv6
- การใช้อินสแตนซ์การ Hop ถัดไป ที่อยู่การ Hop ถัดไป และเกตเวย์การ Hop ถัดไปของเส้นทางแบบคงที่ IPv6