1. บทนำ
ภาพรวม
ในแล็บนี้ ผู้ใช้จะได้สำรวจวิธีใช้ Network Connectivity Center(NCC) เพื่อสร้างการเชื่อมต่อระหว่าง VPC ที่ปรับขนาดได้ผ่านการรองรับ VPC Spokes เมื่อผู้ใช้กำหนด VPC เป็น VPC Spoke จะช่วยให้ผู้ใช้เชื่อมต่อ VPC กับเครือข่าย VPC หลายเครือข่ายเข้าด้วยกันผ่าน NCC Hub ได้ NCC ที่มีการกำหนดค่า VPC Spoke จะช่วยลดความซับซ้อนในการดำเนินงานของการจัดการการเชื่อมต่อระหว่าง VPC แบบคู่ผ่านการ Peering VPC แทนการใช้รูปแบบการจัดการการเชื่อมต่อแบบรวมศูนย์
โปรดทราบว่าศูนย์การเชื่อมต่อเครือข่าย (NCC) เป็นโมเดลระนาบควบคุมแบบฮับและกิ่งสำหรับการจัดการการเชื่อมต่อเครือข่ายใน Google Cloud ทรัพยากรฮับมีโมเดลการจัดการการเชื่อมต่อจากส่วนกลางเพื่อเชื่อมต่อ Spoke
สิ่งที่คุณจะสร้าง
ในโค้ดแล็บนี้ คุณจะได้สร้างโทโพโลยีฮับและสโป๊กเชิงตรรกะด้วยฮับ NCC ซึ่งจะใช้โครงสร้างการเชื่อมต่อ VPC แบบ Full Mesh ใน VPC ที่แตกต่างกัน 3 รายการ
สิ่งที่คุณจะได้เรียนรู้
- การเชื่อมต่อ VPC แบบ Full Mesh ด้วย NCC
- Private NAT ใน VPC
สิ่งที่คุณต้องมี
- ความรู้เกี่ยวกับเครือข่าย VPC ของ GCP
- ความรู้เกี่ยวกับ Cloud Router และการกำหนดเส้นทาง BGP
- โปรเจ็กต์ GCP 2 โปรเจ็กต์แยกกัน
- Codelab นี้ต้องใช้ VPC 5 รายการ VPC อย่างน้อย 1 รายการต้องอยู่ในโปรเจ็กต์ที่แยกต่างหากจากฮับ NCC
- ตรวจสอบโควต้า: เครือข่ายและขอเครือข่ายเพิ่มเติมหากจำเป็น ภาพหน้าจอด้านล่าง

วัตถุประสงค์
- ตั้งค่าสภาพแวดล้อม GCP
- กำหนดค่า Network Connectivity Center โดยใช้ VPC เป็น Spoke
- ตรวจสอบเส้นทางข้อมูล
- สำรวจฟีเจอร์ความพร้อมในการให้บริการของ NCC
- ล้างทรัพยากรที่ใช้แล้ว
ก่อนเริ่มต้น
Google Cloud Console และ Cloud Shell
เราจะใช้ทั้ง Google Cloud Console และ Cloud Shell ตลอดทั้งแล็บนี้เพื่อโต้ตอบกับ GCP
โปรเจ็กต์ NCC Hub Google Cloud Console
คุณเข้าถึง Cloud Console ได้ที่ https://console.cloud.google.com
ตั้งค่ารายการต่อไปนี้ใน Google Cloud เพื่อให้กำหนดค่า Network Connectivity Center ได้ง่ายขึ้น
ใน Google Cloud Console ให้เลือกหรือสร้างโปรเจ็กต์ Google Cloud ในหน้าตัวเลือกโปรเจ็กต์
เปิด Cloud Shell Codelab นี้ใช้ตัวแปร $เพื่อช่วยในการติดตั้งใช้งานการกำหนดค่า gcloud ใน Cloud Shell
gcloud auth list
gcloud config list project
gcloud config set project [HUB-PROJECT-NAME]
projectname=[HUB-PROJECT-NAME]
echo $projectname
gcloud config set compute/zone us-central1-a
gcloud config set compute/region us-central1
บทบาท IAM
NCC กำหนดให้มีบทบาท IAM เพื่อเข้าถึง API บางรายการ อย่าลืมกำหนดค่าผู้ใช้ด้วยบทบาท IAM ของ NCC ตามที่จำเป็น
บทบาท/คำอธิบาย | สิทธิ์ |
networkconnectivity.networkAdmin - อนุญาตให้ผู้ดูแลระบบเครือข่ายจัดการฮับและสโป๊ก | networkconnectivity.hubs.networkconnectivity.spokes. |
networkconnectivity.networkSpokeManager - อนุญาตให้เพิ่มและจัดการ Spoke ในฮับ ใช้ใน VPC ที่แชร์ซึ่งโปรเจ็กต์โฮสต์เป็นเจ้าของฮับ แต่ผู้ดูแลระบบอื่นๆ ในโปรเจ็กต์อื่นๆ สามารถเพิ่ม Spoke สำหรับการเชื่อมต่อของตนเองไปยังฮับได้ | networkconnectivity.spokes.** |
networkconnectivity.networkUsernetworkconnectivity.networkViewer - อนุญาตให้ผู้ใช้เครือข่ายดูแอตทริบิวต์ต่างๆ ของฮับและสโป๊ก | networkconnectivity.hubs.getnetworkconnectivity.hubs.listnetworkconnectivity.spokes.getnetworkconnectivity.spokes.listnetworkconnectivity.spokes.aggregatedList |
2. ตั้งค่าสภาพแวดล้อมเครือข่าย
ภาพรวม
ในส่วนนี้ เราจะทำให้เครือข่าย VPC และกฎไฟร์วอลล์ใช้งานได้ในโปรเจ็กต์เดียว แผนภาพเชิงตรรกะแสดงสภาพแวดล้อมเครือข่ายที่จะตั้งค่าในขั้นตอนนี้
ในขั้นตอนต่อๆ ไป เราจะติดตั้งใช้งาน VPC และกฎไฟร์วอลล์ในโปรเจ็กต์อื่นเพื่อแสดงการรองรับ Spoke ข้ามโปรเจ็กต์

สร้าง VPC และเครือข่ายย่อย
เครือข่าย VPC มีซับเน็ตที่คุณจะติดตั้ง GCE VM เพื่อตรวจสอบเส้นทางข้อมูล
gcloud compute networks create vpc1-ncc --subnet-mode custom
gcloud compute networks create vpc2-ncc --subnet-mode custom
gcloud compute networks create vpc3-ncc --subnet-mode custom
gcloud compute networks create vpc4-ncc --subnet-mode custom
gcloud compute networks subnets create vpc1-ncc-subnet1 \
--network vpc1-ncc --range 10.1.1.0/24 --region us-central1
gcloud compute networks subnets create vpc1-ncc-subnet2 \
--network vpc1-ncc --range 10.1.2.0/25 --region us-central1
gcloud compute networks subnets create vpc1-ncc-subnet3 \
--network vpc1-ncc --range 10.1.2.128/25 --region us-central1
gcloud compute networks subnets create vpc2-ncc-subnet1 \
--network vpc2-ncc --range 10.2.2.0/24 --region us-central1
ช่วงซับเน็ตที่รองรับของ VPC
NCC รองรับช่วงซับเน็ต IPv4 ที่ถูกต้องทั้งหมด รวมถึงที่อยู่ IP สาธารณะที่ใช้แบบส่วนตัว ในขั้นตอนนี้ ให้สร้างช่วง IP ที่ถูกต้องใน VPC4 ซึ่งจะนำเข้าไปยังตารางเส้นทางฮับ
gcloud compute networks subnets create benchmark-testing-rfc2544 \
--network vpc4-ncc --range 198.18.0.0/15 --region us-east1
gcloud compute networks subnets create class-e-rfc5735 \
--network vpc4-ncc --range 240.0.0.0/4 --region us-east1
gcloud compute networks subnets create ietf-protcol-assignment-rfc6890 \
--network vpc4-ncc --range 192.0.0.0/24 --region us-east1
gcloud compute networks subnets create ipv6-4-relay-rfc7526 \
--network vpc4-ncc --range 192.88.99.0/24 --region us-east1
gcloud compute networks subnets create pupi \
--network vpc4-ncc --range 50.50.50.0/24 --region us-east1
gcloud compute networks subnets create test-net-1-rfc5737 \
--network vpc4-ncc --range 192.0.2.0/24 --region us-east1
gcloud compute networks subnets create test-net-2-rfc5737 \
--network vpc4-ncc --range 198.51.100.0/24 --region us-east1
gcloud compute networks subnets create test-net-3-rfc5737 \
--network vpc4-ncc --range 203.0.113.0/24 --region us-east1
สร้างช่วงซับเน็ตที่ทับซ้อนกัน
NCC จะไม่นำเข้าช่วง IP ที่ทับซ้อนกันลงในตารางเส้นทางฮับ ผู้ใช้จะหลีกเลี่ยงข้อจำกัดนี้ได้ในขั้นตอนต่อๆ ไป ตอนนี้ ให้สร้างช่วง IP ที่ทับซ้อนกัน 2 ช่วงสำหรับ VPC2 และ VPC3
gcloud compute networks subnets create overlapping-vpc2 \
--network vpc3-ncc --range 10.3.3.0/24 --region us-central1
gcloud compute networks subnets create overlapping-vpc3 \
--network vpc2-ncc --range 10.3.3.0/24 --region us-central1
กำหนดค่ากฎไฟร์วอลล์ VPC
กำหนดค่ากฎไฟร์วอลล์ในแต่ละ VPC เพื่ออนุญาต
- SSH
- IAP ภายใน
- ช่วง 10.0.0.0/8
gcloud compute firewall-rules create ncc1-vpc-internal \
--network vpc1-ncc \
--allow all \
--source-ranges 10.0.0.0/8
gcloud compute firewall-rules create ncc2-vpc-internal \
--network vpc2-ncc \
--allow all \
--source-ranges 10.0.0.0/8
gcloud compute firewall-rules create ncc3-vpc-internal \
--network vpc3-ncc \
--allow all \
--source-ranges 10.0.0.0/8
gcloud compute firewall-rules create ncc4-vpc-internal \
--network vpc4-ncc \
--allow all \
--source-ranges 10.0.0.0/8
gcloud compute firewall-rules create ncc1-vpc-iap \
--network vpc1-ncc \
--allow all \
--source-ranges 35.235.240.0/20
gcloud compute firewall-rules create ncc2-vpc-iap \
--network vpc2-ncc \
--allow=tcp:22 \
--source-ranges 35.235.240.0/20
gcloud compute firewall-rules create ncc3-vpc-iap \
--network vpc3-ncc \
--allow=tcp:22 \
--source-ranges 35.235.240.0/20
gcloud compute firewall-rules create ncc4-vpc-iap \
--network vpc4-ncc \
--allow=tcp:22 \
--source-ranges 35.235.240.0/20
กำหนดค่า GCE VM ในแต่ละ VPC
คุณจะต้องมีสิทธิ์เข้าถึงอินเทอร์เน็ตชั่วคราวเพื่อติดตั้งแพ็กเกจใน "vm1-vpc1-ncc"
สร้างเครื่องเสมือน 4 เครื่อง โดยแต่ละเครื่องจะได้รับการกำหนดให้กับ VPC ที่สร้างไว้ก่อนหน้านี้
gcloud compute instances create vm1-vpc1-ncc \
--subnet vpc1-ncc-subnet1 \
--metadata=startup-script='#!/bin/bash
apt-get update
apt-get install apache2 -y
apt-get install tcpdump -y
service apache2 restart
echo "
<h3>Web Server: www-vm1</h3>" | tee /var/www/html/index.html'
gcloud compute instances create vm2-vpc2-ncc \
--zone us-central1-a \
--subnet vpc2-ncc-subnet1 \
--no-address
gcloud compute instances create pnat-vm-vpc2 \
--zone us-central1-a \
--subnet overlapping-vpc3 \
--no-address
gcloud compute instances create vm1-vpc4-ncc \
--zone us-east1-b \
--subnet class-e-rfc5735 \
--no-address
3. ฮับ Network Connectivity Center
ภาพรวม
ในส่วนนี้ เราจะกำหนดค่า NCC Hub โดยใช้คำสั่ง gcloud NCC Hub จะทำหน้าที่เป็นระนาบควบคุมที่รับผิดชอบในการสร้างการกำหนดค่าการกำหนดเส้นทางระหว่าง VPC Spoke แต่ละรายการ

เปิดใช้บริการ API
เปิดใช้ API การเชื่อมต่อเครือข่ายในกรณีที่ยังไม่ได้เปิดใช้
gcloud services enable networkconnectivity.googleapis.com
สร้างฮับ NCC
สร้างฮับ NCC โดยใช้คำสั่ง gcloud
gcloud network-connectivity hubs create ncc-hub
ตัวอย่างเอาต์พุต
Create request issued for: [ncc-hub]
Waiting for operation [projects/user-3p-dev/locations/global/operations/operation-1668793629598-5edc24b7ee3ce-dd4c765b-5ca79556] to complete...done.
Created hub [ncc-hub]
อธิบายฮับ NCC ที่สร้างขึ้นใหม่ จดชื่อและเส้นทางที่เกี่ยวข้อง
gcloud network-connectivity hubs describe ncc-hub
gcloud network-connectivity hubs describe ncc-hub
createTime: '2023-11-02T02:28:34.890423230Z'
name: projects/user-3p-dev/locations/global/hubs/ncc-hub
routeTables:
- projects/user-3p-dev/locations/global/hubs/ncc-hub/routeTables/default
state: ACTIVE
uniqueId: de749c4c-0ef8-4888-8622-1ea2d67450f8
updateTime: '2023-11-02T02:28:48.613853463Z'
NCC Hub ได้เปิดตัวตารางการกำหนดเส้นทางที่กำหนดระนาบควบคุมสำหรับการสร้างการเชื่อมต่อข้อมูล ค้นหาชื่อตารางการกำหนดเส้นทางของ NCC Hub
gcloud network-connectivity hubs route-tables list --hub=ncc-hub
NAME: default
HUB: ncc-hub
DESCRIPTION:
ค้นหา URI ของตารางเส้นทางเริ่มต้นของ NCC
gcloud network-connectivity hubs route-tables describe default --hub=ncc-hub
createTime: '2023-02-24T17:32:58.786269098Z'
name: projects/user-3p-dev/locations/global/hubs/ncc-hub/routeTables/default
state: ACTIVE
uid: eb1fdc35-2209-46f3-a8d6-ad7245bfae0b
updateTime: '2023-02-24T17:33:01.852456186Z'
แสดงเนื้อหาของตารางการกำหนดเส้นทางเริ่มต้นของ NCC Hub หมายเหตุ* ตารางเส้นทางของ NCC Hub จะว่างเปล่าจนกว่าจะมีการเชื่อมต่อ Spoke
gcloud network-connectivity hubs route-tables routes list --hub=ncc-hub --route_table=default
ตารางเส้นทางของ NCC Hub ควรว่างเปล่า
4. NCC ที่มี VPC Spokes
ภาพรวม
ในส่วนนี้ คุณจะได้กำหนดค่า VPC 3 รายการเป็น NCC Spoke โดยใช้คำสั่ง gCloud

กำหนดค่า VPC เป็น Spoke ของ NCC
กำหนดค่า VPC ต่อไปนี้เป็น Spoke ของ NCC ตามลำดับ
- VPC4
- VPC1
- VPC2
- VPC3
กำหนดค่า VPC4 เป็น Spoke ของ NCC และกำหนดให้กับฮับ NCC ที่สร้างไว้ก่อนหน้านี้ การเรียก API ของ NCC spoke ต้องระบุตำแหน่ง แฟล็ก "–global" ช่วยให้ไวยากรณ์ gcloud ง่ายขึ้นโดยอนุญาตให้ผู้ใช้ไม่ต้องระบุเส้นทาง URI แบบเต็มเมื่อกำหนดค่า Spoke ใหม่ของ NCC
gcloud network-connectivity spokes linked-vpc-network create vpc4-spoke4 \
--hub=ncc-hub \
--vpc-network=vpc4-ncc \
--global
กำหนดค่า VPC1 เป็น Spoke ของ NCC
ผู้ดูแลระบบสามารถยกเว้นเส้นทางซับเน็ตจากการส่งออกจาก VPC Spoke ไปยังตารางเส้นทางของ NCC Hub ได้ ในส่วนนี้ของโค้ดแล็บ ให้สร้างกฎการยกเว้นการส่งออกโดยอิงตามคำนำหน้าสรุปเพื่อป้องกันไม่ให้ซับเน็ตของ VPC1 ส่งออกไปยังตารางเส้นทางฮับ NCC
ใช้คำสั่ง gcloud นี้เพื่อแสดงรายการซับเน็ตทั้งหมดที่อยู่ใน VPC1
gcloud config set accessibility/screen_reader false
gcloud compute networks subnets list --network=vpc1-ncc
จดคู่ซับเน็ต /25 ที่สร้างไว้ก่อนหน้านี้ในส่วนการตั้งค่า
NAME REGION NETWORK RANGE STACK_TYPE
vpc1-ncc-subnet1 us-central1 vpc1-ncc 10.1.1.0/24 IPV4_ONLY
vpc1-ncc-subnet2 us-central1 vpc1-ncc 10.1.2.0/25 IPV4_ONLY
vpc1-ncc-subnet3 us-central1 vpc1-ncc 10.1.2.128/25 IPV4_ONLY
กำหนดค่า VPC1 เป็นกิ่ง NCC และยกเว้นคู่ของซับเน็ต /25 ไม่ให้นำเข้าไปยังตารางการกำหนดเส้นทางฮับโดยใช้คีย์เวิร์ด "export-exclude-ranges" เพื่อกรองเส้นทางสรุป /24 จากช่วงที่เฉพาะเจาะจงนั้น
gcloud network-connectivity spokes linked-vpc-network create vpc1-spoke1 \
--hub=ncc-hub \
--vpc-network=vpc1-ncc \
--exclude-export-ranges=10.1.2.0/24 \
--global
หมายเหตุ* ผู้ใช้สามารถกรองช่วง IP ที่ไม่ซ้ำกันได้สูงสุด 16 ช่วงต่อ Spoke ของ NCC
แสดงเนื้อหาของตารางการกำหนดเส้นทางเริ่มต้นของ NCC Hub จะเกิดอะไรขึ้นกับคู่ของซับเน็ต /25 ในตารางการกำหนดเส้นทางของ NCC Hub
gcloud network-connectivity hubs route-tables routes list --hub=ncc-hub --route_table=default --filter="NEXT_HOP:vpc1-ncc"
IP_CIDR_RANGE STATE TYPE NEXT_HOP HUB ROUTE_TABLE
10.1.1.0/24 ACTIVE VPC_PRIMARY_SUBNET vpc1-ncc ncc-hub default
กำหนดค่า VPC2 เป็น Spoke ของ NCC
gcloud network-connectivity spokes linked-vpc-network create vpc2-spoke2 \
--hub=ncc-hub \
--vpc-network=vpc2-ncc \
--global
กำหนดค่า VPC3 เป็น Spoke ของ NCC และกำหนดให้กับฮับ NCC ที่สร้างไว้ก่อนหน้านี้
gcloud network-connectivity spokes linked-vpc-network create vpc3-spoke3 \
--hub=ncc-hub \
--vpc-network=vpc3-ncc \
--global
เกิดอะไรขึ้น
ERROR: (gcloud.network-connectivity.spokes.linked-vpc-network.create) Invalid resource state for "https://www.googleapis.com/compute/v1/projects/xxxxxxxx/global/networks/vpc3-ncc": 10.3.3.0/24 (SUBNETWORK) overlaps with 10.3.3.0/24 (SUBNETWORK) from "projects/user-3p-dev/global/networks/vpc2-ncc" (peer)
ตรวจพบฮับ NCC มีช่วง IP ที่ทับซ้อนกับ VPC2 โปรดทราบว่าทั้ง VPC2 และ VPC3 ได้รับการตั้งค่าด้วยเครือข่ายย่อย IP 10.3.3.0/24 เดียวกัน
การกรองช่วง IP ที่ทับซ้อนกันด้วยการยกเว้นการส่งออก
ใช้คำสั่ง gcloud เพื่ออัปเดต Spoke VPC2 เพื่อยกเว้นช่วง IP ที่ทับซ้อนกัน
gcloud network-connectivity spokes linked-vpc-network update vpc2-spoke2 \
--hub=ncc-hub \
--vpc-network=vpc2-ncc \
--exclude-export-ranges=10.3.3.0/24 \
--global
ใช้คำสั่ง gcloud เพื่ออัปเดต Spoke ของ NCC สำหรับ VPC3 เพื่อยกเว้นช่วงซับเน็ตที่ทับซ้อนกัน
gcloud network-connectivity spokes linked-vpc-network create vpc3-spoke3 \
--hub=ncc-hub \
--vpc-network=vpc3-ncc \
--exclude-export-ranges=10.3.3.0/24 \
--global
แสดงเนื้อหาของตารางการกำหนดเส้นทางเริ่มต้นของ NCC Hub และตรวจสอบเอาต์พุต
gcloud network-connectivity hubs route-tables routes list --hub=ncc-hub --route_table=default
ระบบจะไม่รวมช่วง IP ที่ทับซ้อนกันจาก VPC2 และ VPC3 ตารางการกำหนดเส้นทางของ NCC Hub รองรับประเภทช่วงที่ถูกต้องของ IPv4 ทั้งหมด
ระบบจะไม่ส่งออกช่วงซับเน็ตของที่อยู่ IP สาธารณะที่ใช้แบบส่วนตัว (PUPI) จาก VPC Spoke ไปยังตารางเส้นทางฮับ NCC โดยค่าเริ่มต้น
ใช้คำสั่ง gcloud เพื่อยืนยันว่าเครือข่าย 50.50.50.0/24 ไม่อยู่ในตารางการกำหนดเส้นทางของ NCC Hub
gcloud network-connectivity hubs route-tables routes list --hub=ncc-hub --route_table=default --filter="NEXT_HOP:vpc-ncc4"
ใช้คำสั่ง gcloud ด้านล่างเพื่ออัปเดต VPC4-Spoke เพื่อเปิดใช้การแลกเปลี่ยนที่อยู่ PUPI ใน VPC ของ NCC
gcloud network-connectivity spokes linked-vpc-network update vpc4-spoke4 \
--include-export-ranges=ALL_IPV4_RANGES \
--global
ใช้คำสั่ง gcloud เพื่อค้นหาเครือข่าย 50.50.50.0/24 ในตารางการกำหนดเส้นทางของ NCC Hub
gcloud network-connectivity hubs route-tables routes list --hub=ncc-hub --route_table=default | grep 50.50.50.0/24
5. NCC ที่มี Spoke ข้ามโปรเจ็กต์
ภาพรวม
ที่ผ่านมา คุณได้กำหนดค่า Spoke ของ NCC ที่อยู่ในโปรเจ็กต์เดียวกับฮับ ในส่วนนี้ คุณจะกำหนดค่า VPC เป็น Spoke ของ NCC จากโปรเจ็กต์อื่นที่ไม่ใช่ NCC Hub โดยใช้คำสั่ง gCloud
ซึ่งจะช่วยให้เจ้าของโปรเจ็กต์ที่จัดการ VPC ของตนเองสามารถเข้าร่วมการเชื่อมต่อเครือข่ายกับ NCC Hub ได้

ข้ามโปรเจ็กต์: คอนโซล Google Cloud และ Cloud Shell
เราจะใช้ทั้ง Google Cloud Console และ Cloud Shell ตลอดทั้งแล็บนี้เพื่อโต้ตอบกับ GCP
Google Cloud Console ของ Spoke ข้ามโปรเจ็กต์
คุณเข้าถึง Cloud Console ได้ที่ https://console.cloud.google.com
ตั้งค่ารายการต่อไปนี้ใน Google Cloud เพื่อให้กำหนดค่า Network Connectivity Center ได้ง่ายขึ้น
ใน Google Cloud Console ให้เลือกหรือสร้างโปรเจ็กต์ Google Cloud ในหน้าตัวเลือกโปรเจ็กต์
เปิด Cloud Shell Codelab นี้ใช้ตัวแปร $เพื่อช่วยในการติดตั้งใช้งานการกำหนดค่า gcloud ใน Cloud Shell
gcloud auth list
gcloud config list project
gcloud config set project [YOUR-CROSSPROJECT-NAME]
xprojname=[YOUR-CROSSPROJECT-NAME]
echo $xprojname
gcloud config set compute/zone us-central1-a
gcloud config set compute/region us-central1
บทบาท IAM
NCC กำหนดให้มีบทบาท IAM เพื่อเข้าถึง API บางรายการ อย่าลืมกำหนดค่าผู้ใช้ด้วยบทบาท IAM ของ NCC ตามที่จำเป็น
ผู้ดูแลระบบ Spoke ข้ามโปรเจ็กต์ต้องได้รับบทบาท IAM "networkconnectivity.networkSpokeManager. "
ตารางด้านล่างแสดงบทบาท IAM ที่จำเป็นสำหรับผู้ดูแลระบบ NCC Hub และ Spoke เพื่อใช้อ้างอิง
บทบาท/คำอธิบาย | สิทธิ์ |
networkconnectivity.networkAdmin - อนุญาตให้ผู้ดูแลระบบเครือข่ายจัดการฮับและสโป๊ก | networkconnectivity.hubs.networkconnectivity.spokes. |
networkconnectivity.networkSpokeManager - อนุญาตให้เพิ่มและจัดการ Spoke ในฮับ ใช้ใน VPC ที่แชร์ซึ่งโปรเจ็กต์โฮสต์เป็นเจ้าของฮับ แต่ผู้ดูแลระบบอื่นๆ ในโปรเจ็กต์อื่นๆ สามารถเพิ่ม Spoke สำหรับการเชื่อมต่อของตนเองไปยังฮับได้ | networkconnectivity.spokes.** |
networkconnectivity.networkUsernetworkconnectivity.networkViewer - อนุญาตให้ผู้ใช้เครือข่ายดูแอตทริบิวต์ต่างๆ ของฮับและสโป๊ก | networkconnectivity.hubs.getnetworkconnectivity.hubs.listnetworkconnectivity.spokes.getnetworkconnectivity.spokes.listnetworkconnectivity.spokes.aggregatedList |
สร้าง VPC และซับเน็ตในโปรเจ็กต์ข้าม
เครือข่าย VPC มีซับเน็ตที่คุณจะติดตั้ง GCE VM เพื่อตรวจสอบเส้นทางข้อมูล
gcloud compute networks create xproject-vpc \
--subnet-mode custom
gcloud compute networks subnets create xprj-net-1 \
--network xproject-vpc \
--range 10.100.1.0/24 \
--region us-central1
gcloud compute networks subnets create xprj-net-2 \
--network xproject-vpc \
--range 10.100.2.0/24 \
--region us-central1
URI ของโปรเจ็กต์ NCC Hub
ใช้คำสั่ง gcloud นี้เพื่อค้นหา URI ของ NCC Hub คุณต้องใช้เส้นทาง URI เพื่อกำหนดค่า Spoke NCC ข้ามโปรเจ็กต์ในขั้นตอนถัดไป
gcloud network-connectivity hubs describe ncc-hub
VPC แบบ Spoke ข้ามโปรเจ็กต์
เข้าสู่ระบบโปรเจ็กต์อื่นที่ VPC ไม่ได้เป็นส่วนหนึ่งของโปรเจ็กต์ฮับ NCC ใน Cloud Shell ให้ใช้คำสั่งนี้เพื่อกำหนดค่า VPC เป็นก้าน NCC
- HUB_URI ควรเป็น URI ของฮับในโปรเจ็กต์อื่น
- VPC_URI ควรอยู่ในโปรเจ็กต์เดียวกับ Spoke
- VPC-network ระบุ VPC ในโปรเจ็กต์นี้ที่จะเข้าร่วมฮับ NCC ในโปรเจ็กต์อื่น
gcloud network-connectivity spokes linked-vpc-network create xproj-spoke \
--hub=projects/[YOUR-PROJECT-NAME]/locations/global/hubs/ncc-hub \
--global \
--vpc-network=xproject-vpc
.
Create request issued for: [xproj-spoke]
Waiting for operation [projects/xproject/locations/global/operations/operation-1689790411247-600dafd351158-2b862329-19b747f1] to complete...done.
Created spoke [xproj-spoke].
createTime: '2023-07-19T18:13:31.388500663Z'
hub: projects/[YOUR-PROJECT-NAME]/locations/global/hubs/ncc-hub
linkedVpcNetwork:
uri: https://www.googleapis.com/compute/v1/projects/xproject/global/networks/xproject-vpc
name: projects/xproject/locations/global/spokes/xproj-spoke
reasons:
- code: PENDING_REVIEW
message: Spoke is Pending Review
spokeType: VPC_NETWORK
state: INACTIVE
uniqueId: 46b4d091-89e2-4760-a15d-c244dcb7ad69
updateTime: '2023-07-19T18:13:38.652800902Z'
NCC Spoke ข้ามโปรเจ็กต์มีสถานะเป็นอย่างไร เหตุผล
6. ปฏิเสธหรือยอมรับ Spoke ข้ามโปรเจ็กต์
ภาพรวม
ผู้ดูแลระบบ NCC Hub ต้องยอมรับ Spoke ข้ามโปรเจ็กต์อย่างชัดเจนเพื่อเข้าร่วมฮับ ซึ่งจะช่วยป้องกันไม่ให้เจ้าของโปรเจ็กต์แนบ Spoke ของ NCC ที่ไม่ได้รับอนุญาตกับตารางการกำหนดเส้นทางส่วนกลางของ NCC เมื่อยอมรับหรือปฏิเสธ Spoke แล้ว คุณจะปฏิเสธหรือยอมรับ Spoke นั้นอีกกี่ครั้งก็ได้ตามต้องการโดยเรียกใช้คำสั่งด้านบน
กลับไปที่โปรเจ็กต์ที่มีฮับ NCC โดยการเข้าสู่ระบบ Cloud Shell
ระบุ Spoke ข้ามโปรเจ็กต์ที่จะตรวจสอบ
gcloud network-connectivity hubs list-spokes ncc-hub \
--filter="reason:PENDING_REVIEW"
การยอมรับ Spoke
gcloud network-connectivity hubs accept-spoke ncc-hub --spoke=xproj-spoke
ไม่บังคับ: ปฏิเสธ Spoke
gcloud network-connectivity spokes reject-spoke ncc-hub --spoke=xproj-spoke
--details="some reason to reject"
การแสดงโฆษณาที่ใช้งานอยู่บนฮับ
gcloud network-connectivity hubs list-spokes ncc-hub \
--filter="state:ACTIVE"
NAME PROJECT LOCATION TYPE STATE STATE REASON
Xproj-spoke xproj global VPC_NETWORK ACTIVE
vpc4-spoke4 user-3p-dev global VPC_NETWORK ACTIVE
vpc1-spoke1 user-3p-dev global VPC_NETWORK ACTIVE
vpc2-spoke2 user-3p-dev global VPC_NETWORK ACTIVE
vpc3-spoke3 user-3p-dev global VPC_NETWORK ACTIVE
แสดงเส้นทางซับเน็ตในฮับ
จากเอาต์พุต คุณเห็นเส้นทางซับเน็ตจาก Spoke ข้าม VPC ไหม
gcloud network-connectivity hubs route-tables routes list \
--route_table=default \
--hub=ncc-hub \
--filter="NEXT_HOP:xprj-vpc"
IP_CIDR_RANGE STATE TYPE NEXT_HOP HUB ROUTE_TABLE
10.100.1.0/24 ACTIVE VPC_PRIMARY_SUBNET xprj-vpc ncc-hub default
อัปเดต VPC แบบ Spoke ข้ามโปรเจ็กต์ด้วยตัวกรอง Include-Export
เข้าสู่ระบบโปรเจ็กต์ที่ VPC ไม่ได้เป็นส่วนหนึ่งของโปรเจ็กต์ NCC Hub ใน Cloud Shell ให้ใช้คำสั่งนี้เพื่อกำหนดค่า VPC เป็นก้าน NCC
- HUB_URI ควรเป็น URI ของฮับในโปรเจ็กต์อื่น
- VPC_URI ควรอยู่ในโปรเจ็กต์เดียวกับ Spoke
- VPC-network ระบุ VPC ในโปรเจ็กต์นี้ที่จะเข้าร่วมฮับ NCC ในโปรเจ็กต์อื่น
- นำเข้าเฉพาะช่วงซับเน็ต 10.100.2.0/24 ไปยังตารางเส้นทางฮับ NCC
- จดค่า "ETAG" จากเอาต์พุต ค่านี้สร้างขึ้นโดย NCC และคุณจะต้องระบุค่านี้ให้กับผู้ดูแลฮับ NCC ผู้ดูแลระบบฮับ NCC จะต้องอ้างอิงค่านี้เมื่อยอมรับคำขอของ Spoke ข้ามโปรเจ็กต์เพื่อเข้าร่วมฮับ
gcloud network-connectivity spokes linked-vpc-network update xproj-spoke \
--hub=projects/[YOUR-PROJECT-NAME]/locations/global/hubs/ncc-hub \
--global \
--include-export-ranges=10.100.2.0/24
Update request issued for: [xprj-vpc]
Waiting for operation [projects]/xproject/locations/global/operations/operation-1742936388803-6313100521cae-020ac5d2-58
52fbba] to complete...done.
Updated spoke [xprj-vpc].
createTime: '2025-02-14T14:25:41.996129250Z'
etag: '4'
fieldPathsPendingUpdate:
- linked_vpc_network.include_export_ranges
group: projects/xxxxxxxx/locations/global/hubs/ncc-hub/groups/default
hub: projects/xxxxxxxx/locations/global/hubs/ncc-hub
linkedVpcNetwork:
includeExportRanges:
- 10.100.2.0/24
uri: https://www.googleapis.com/compute/v1/projects/xproject/global/networks/vpc1-spoke
name: projects/xproject/locations/global/spokes/xprj-vpc
reasons:
- code: UPDATE_PENDING_REVIEW
message: Spoke update is Pending Review
spokeType: VPC_NETWORK
state: ACTIVE
uniqueId: 182e0f8f-91cf-481c-a081-ea6f7e40fb0a
updateTime: '2025-03-25T20:59:51.995734879Z'
ระบุ Spoke ข้ามโปรเจ็กต์ที่อัปเดตเพื่อตรวจสอบ
เข้าสู่ระบบโปรเจ็กต์ที่โฮสต์ฮับ NCC ใน Cloud Shell ให้ใช้คำสั่งนี้เพื่อตรวจสอบสถานะของการอัปเดต Spoke ของ VPC ข้ามโปรเจ็กต์
- ค่า ETAG คืออะไร ค่านี้ควรตรงกับเอาต์พุตจากการอัปเดต VPC Spoke
gcloud network-connectivity hubs list-spokes ncc-hub \
--filter="reasons:UPDATE_PENDING_REVIEW" \
--format=yaml
ยอมรับการเปลี่ยนแปลงที่อัปเดตจาก Spoke ข้ามโปรเจ็กต์
ใช้คำสั่งเพื่อยอมรับคำขอของ Spoke ข้ามโปรเจ็กต์เพื่อเข้าร่วม NCC Hub
gcloud network-connectivity hubs accept-spoke-update ncc-hub \
--spoke=https://www.googleapis.com/networkconnectivity/v1/projects/xproject/locations/global/spokes/xproj-spoke \
--spoke-etag={etag value}
ไม่บังคับ: ปฏิเสธการเปลี่ยนแปลงที่อัปเดตจาก Spoke ข้ามโปรเจ็กต์
ใช้คำสั่งเพื่อปฏิเสธคำขอของ Spoke ข้ามโปรเจ็กต์ในการเข้าร่วม NCC Hub
gcloud network-connectivity hubs reject-spoke-update ncc-hub \
--spoke=https://www.googleapis.com/networkconnectivity/v1/projects/xproject/locations/global/spokes/xproj-spoke \
--details="not today" \
--spoke-etag={etag value}
ยืนยันว่า Spoke ข้ามโปรเจ็กต์เข้าร่วมฮับ NCC แล้ว
gcloud network-connectivity hubs list-spokes ncc-hub \ --filter="name:xproj-spoke"
7. Private NAT ระหว่าง VPC
ภาพรวม
ในส่วนนี้ คุณจะกำหนดค่า NAT ส่วนตัวสำหรับช่วงซับเน็ตที่ทับซ้อนกันระหว่าง VPC 2 รายการ โปรดทราบว่า NAT ส่วนตัวระหว่าง VPC ต้องใช้ NCC
ในส่วนก่อนหน้า VPC2 และ VPC3 ได้รับการกำหนดค่าด้วยช่วงเครือข่ายย่อยที่ทับซ้อนกันเป็น "10.3.3.0/24" ทั้ง VPC ได้รับการกำหนดค่าเป็น Spoke ของ NCC เพื่อยกเว้นซับเน็ตที่ทับซ้อนกันไม่ให้แทรกลงในตารางเส้นทางฮับ NCC ซึ่งหมายความว่าไม่มีเส้นทางข้อมูลเลเยอร์ 3 เพื่อเข้าถึงโฮสต์ที่อยู่ในซับเน็ตนั้น
ใช้คำสั่งเหล่านี้ในโปรเจ็กต์ฮับ NCC เพื่อค้นหาช่วงซับเน็ตที่ทับซ้อนกัน
gcloud compute networks subnets list --network vpc2-ncc
gcloud compute networks subnets list --network vpc3-ncc
ใน vpc2-ncc ชื่อซับเน็ตที่มีช่วง IP ที่ทับซ้อนกันคืออะไร
*จดและบันทึกชื่อซับเน็ตไว้ที่ใดที่หนึ่ง คุณจะกำหนดค่า NAT ต้นทางสำหรับช่วงนี้
กำหนดค่า Private NAT
กำหนดช่วงซับเน็ตที่กำหนดเส้นทางได้สำหรับการรับส่งข้อมูล NAT ต้นทางจากซับเน็ตที่ซ้อนทับกันของ VPC2 โดยการกำหนดค่าช่วงซับเน็ตที่ไม่ทับซ้อนกันโดยใช้แฟล็ก "–purpose=PRIVATE_NAT"
gcloud beta compute networks subnets create ncc2-spoke-nat \
--network=vpc2-ncc \
--region=us-central1 \
--range=10.10.10.0/29 \
--purpose=PRIVATE_NAT
สร้าง Cloud Router เฉพาะเพื่อดำเนินการ NAT ส่วนตัว
gcloud compute routers create private-nat-cr \
--network vpc2-ncc \
--region us-central1
กำหนดค่าเราเตอร์ Cloud ให้ NAT ต้นทางช่วงที่ทับซ้อนกันของ 10.3.3.0/24 จาก vpc2-ncc ในการกำหนดค่าตัวอย่างด้านล่าง "overlapping-vpc3" คือชื่อของเครือข่ายย่อยที่ทับซ้อนกัน คีย์เวิร์ด "ALL" ระบุว่าช่วง IP ทั้งหมดในซับเน็ตจะได้รับการกำหนด NAT ต้นทาง
gcloud beta compute routers nats create ncc2-nat \
--router=private-nat-cr \
--type=PRIVATE \
--nat-custom-subnet-ip-ranges=overlapping-vpc3:ALL \
--router-region=us-central1
ขั้นตอนก่อนหน้านี้ได้สร้างกลุ่มช่วง IP ของ NAT และซับเน็ตที่เฉพาะเจาะจงซึ่งจะได้รับการแปล ในขั้นตอนนี้ ให้สร้างกฎ NAT "1" ที่แปลแพ็กเก็ตเครือข่ายที่ตรงกับการรับส่งข้อมูลซึ่งมาจากช่วงซับเน็ตที่ทับซ้อนกัน หากเครือข่ายปลายทางใช้เส้นทางจากตารางการกำหนดเส้นทางฮับ NCC
gcloud beta compute routers nats rules create 1 \
--router=private-nat-cr \
--region=us-central1 \
--match='nexthop.hub == "//networkconnectivity.googleapis.com/projects/$projectname/locations/global/hubs/ncc-hub"' \
--source-nat-active-ranges=ncc2-spoke-nat \
--nat=ncc2-nat
ยืนยันเส้นทางข้อมูลสำหรับ NAT ส่วนตัว
gcloud beta compute routers nats describe ncc2-nat --router=private-nat-cr
ตัวอย่างเอาต์พุต
enableDynamicPortAllocation: true
enableEndpointIndependentMapping: false
endpointTypes:
- ENDPOINT_TYPE_VM
name: ncc2-nat
rules:
- action:
sourceNatActiveRanges:
- https://www.googleapis.com/compute/beta/projects/xxxxxxxx/regions/us-central1/subnetworks/ncc2-spoke-nat
match: nexthop.hub == "//networkconnectivity.googleapis.com/projects/xxxxxxxx/locations/global/hubs/ncc-hub"
ruleNumber: 1
sourceSubnetworkIpRangesToNat: LIST_OF_SUBNETWORKS
subnetworks:
- name: https://www.googleapis.com/compute/beta/projects/xxxxxxxx/regions/us-central1/subnetworks/overlapping-vpc3
sourceIpRangesToNat:
- ALL_IP_RANGES
type: PRIVATE
ไม่บังคับ
- เปลี่ยนไปใช้เว็บคอนโซล
- ไปที่ "บริการเครือข่าย > Cloud NAT > ncc2-nat"
ตรวจสอบว่าได้เปิดใช้การจัดสรรพอร์ตแบบไดนามิกโดยค่าเริ่มต้น

จากนั้น คุณจะยืนยันเส้นทางข้อมูลที่ใช้เส้นทาง NAT ส่วนตัวที่กำหนดค่าไว้สำหรับ VPC2

เปิดเซสชัน SSH ไปยัง "vm1-vpc1-ncc" แล้วใช้คำสั่ง tcpdump ด้านล่างเพื่อบันทึกแพ็กเก็ตที่มาจากช่วงพูล NAT "10.10.10.0/29"
vm1-vpc1-ncc
sudo tcpdump -i any net 10.10.10.0/29 -n
ณ เวลาที่เขียนโค้ดแล็บนี้ NAT ส่วนตัวไม่รองรับแพ็กเก็ต ICMP เซสชัน SSH ไปยัง "pNat-vm-vpc2" และใช้คำสั่ง curl ดังที่แสดงด้านล่างเพื่อเชื่อมต่อกับ "vm1-vpc1-ncc" ในพอร์ต TCP 80
pnat-vm-vpc2
curl 10.1.1.2 -v
ตรวจสอบเอาต์พุตของ tcpdump ใน "vm1-vpc1-ncc" ที่อยู่ IP ต้นทางที่เริ่มเซสชัน TCP ไปยังเว็บเซิร์ฟเวอร์ของเราใน "vm1-vpc1-ncc" คืออะไร
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
19:05:27.504761 ens4 In IP 10.10.10.2.1024 > 10.1.1.2:80: Flags [S], seq 2386228656, win 65320, options [mss 1420,sackOK,TS val 3955849029 ecr 0,nop,wscale 7], length 0
19:05:27.504805 ens4 Out IP 10.1.1.2:80 > 10.10.10.2.1024: Flags [S.], seq 48316785, ack 2386228657, win 64768, options [mss 1420,sackOK,TS val 1815983704 ecr 3955849029,nop,wscale 7], length 0
<output snipped>
8. การรองรับซับเน็ต IPv6 ของ NCC
Network Connectivity Center รองรับการแลกเปลี่ยนซับเน็ต IPv6 และการแลกเปลี่ยนเส้นทางแบบไดนามิกระหว่าง NCC VPC Spokes และ Hybrid Spokes ในส่วนนี้ ให้กำหนดค่า NCC เพื่อรองรับโหมดการแลกเปลี่ยนเส้นทางของเครือข่ายย่อย IPv6 เท่านั้นและ IPv4 และ IPv6 แบบ Dual Stack

สร้าง VPC ใหม่สำหรับ IPv6 ที่จะเข้าร่วม NCC-Hub เป็น VPC Spoke GCP จะกำหนดที่อยู่ ULA ทั้งหมดจากช่วง fd20::/20 โดยอัตโนมัติ
gcloud compute networks create vpc5-ncc \
--subnet-mode custom \
--enable-ula-internal-ipv6
gcloud compute networks subnets create vpc5-ext-ipv6 \ --network=vpc5-ncc \
--stack-type=IPV6 \
--ipv6-access-type=EXTERNAL \
--region=us-central1
gcloud compute networks subnets create vpc5-ipv4-subnet1 \
--network vpc5-ncc \
--range 10.5.5.0/24 \
--region us-central1
ใช้คำสั่งนี้เพื่อกำหนดค่า VPC5 เป็น Spoke ของ NCC และยกเว้นเส้นทางซับเน็ต IPv4 ไม่ให้ส่งออกไปยังตารางเส้นทางฮับ ส่งออกเครือข่าย ULA ของ IPv6 ไปยังตารางเส้นทางฮับ NCC
gcloud network-connectivity spokes linked-vpc-network create vpc5-spoke5 \
--hub=ncc-hub \
--vpc-network=vpc5-ncc \
--exclude-export-ranges=10.5.5.0/24
--global
เปิดใช้ VPC1 และ VPC4 สำหรับที่อยู่ IPv6 ส่วนตัวที่ไม่ซ้ำกันในเครือข่ายเฉพาะ (ULA) GCP จะกำหนดที่อยู่ ULA ทั้งหมดจากช่วง fd20::/20 โดยอัตโนมัติ
gcloud compute networks update vpc-ncc4 \
--enable-ula-internal-ipv6
gcloud compute networks update vpc-ncc1 \
--enable-ula-internal-ipv6
สร้างซับเน็ต ipv6 แบบเนทีฟและซับเน็ต ipv4_v6 แบบ Dual-Stack ใน VPC1
gcloud compute networks subnets create vpc1-ipv6-sn1 \
--network=vpc-ncc1 \
--stack-type=IPV6_ONLY \
--ipv6-access-type=INTERNAL \
--region=us-central1
gcloud compute networks subnets create vpc1-ipv64-sn2 \
--network=vpc-ncc1 \
--range=10.10.10.0/24 \
--stack-type=IPV4_IPV6 \
--ipv6-access-type=INTERNAL \
--region=us-east1
สร้างซับเน็ต IPv6 แบบเนทีฟและซับเน็ต IPv4_v6 แบบ Dual-Stack ใน VPC4
gcloud compute networks subnets create vpc4-ipv6-sn1 \
--network=vpc-ncc4 \
--stack-type=IPV6_ONLY \
--ipv6-access-type=INTERNAL \
--region=us-central1
gcloud compute networks subnets create vpc4-ipv64-sn2 \
--network=vpc-ncc4 \
--range=10.40.40.0/24 \
--stack-type=IPV4_IPV6 \
--ipv6-access-type=INTERNAL \
--region=us-east1
ใน VPC1 ให้สร้างกฎไฟร์วอลล์ VPC แบบ IPv6 เพื่ออนุญาตการรับส่งข้อมูลที่มาจากช่วง ULA ของ IPv6
gcloud compute firewall-rules create allow-icmpv6-ula-ncc1 \
--network=vpc-ncc1 \
--action=allow \
--direction=ingress \
--rules=all \
--source-ranges=fd20::/20
ใน VPC4 ให้สร้างกฎไฟร์วอลล์ VPC ของ IPv6 เพื่ออนุญาตการรับส่งข้อมูลที่มาจากช่วง ULA ของ IPv6
gcloud compute firewall-rules create allow-icmpv6-ula-ncc4 \
--network=vpc-ncc4 \
--action=allow \
--direction=ingress \
--rules=all \
--source-ranges=fd20::/20
สร้างอินสแตนซ์ IPv6 ของ GCE 3 รายการเพื่อยืนยันการเชื่อมต่อเส้นทางข้อมูลในส่วนถัดไป หมายเหตุ: ระบบจะใช้ "vpc1-dualstack-vm" เป็นโฮสต์ Bastion เพื่อรับสิทธิ์เข้าถึง VM ของ GCE ที่เป็น IPv6 ดั้งเดิมนอกแบนด์
gcloud compute instances create vpc4-ipv6-vm \
--zone us-central1-a \
--subnet=vpc4-ipv6-sn1 \
--stack-type=IPV6_ONLY
gcloud compute instances create vpc1-ipv6-vm \
--zone us-central1-a \
--subnet=vpc1-ipv6-sn1 \
--stack-type=IPV6_ONLY
gcloud compute instances create vpc1-dual-stack-vm \
--zone us-east1-b \
--network=vpc-ncc1 \
--subnet=vpc2-ipv64-sn2 \
--stack-type=IPV4_IPV6
ตรวจสอบฮับ NCC สำหรับซับเน็ต IPv6
ตรวจสอบตารางเส้นทางฮับ NCC สำหรับซับเน็ต ULA ของ IPv6
gcloud network-connectivity hubs route-tables routes list --route_table=default \
--hub=ncc-hub \
--filter="IP_CIDR_RANGE:fd20"
โปรดทราบว่าเอาต์พุตจากคำสั่งด้านบนไม่ได้แสดงซับเน็ต IPv6 โดยค่าเริ่มต้น ระบบจะไม่รวมซับเน็ต IPv6 จาก VPC Spoke สำหรับการส่งออกไปยังตารางเส้นทางฮับ NCC
Listed 0 items.
ใช้คำสั่ง gcloud ด้านล่างเพื่ออัปเดต Spoke VPC1 และ VPC4 เพื่อส่งออกซับเน็ต IPv6 ไปยังตารางเส้นทางฮับ NCC
gcloud network-connectivity spokes linked-vpc-network update vpc1-spoke1 \
--global \
--include-export-ranges=ALL_IPV6_RANGES
gcloud network-connectivity spokes linked-vpc-network update vpc4-spoke4 \
--global \
--include-export-ranges=ALL_IPV6_RANGES
gcloud network-connectivity spokes linked-vpc-network update vpc5-spoke5 \
--global \
--include-export-ranges=ALL_IPV6_RANGES
อีกครั้ง ให้ตรวจสอบตารางเส้นทางฮับ NCC สำหรับเครือข่ายย่อย ULA ของ IPv6
gcloud network-connectivity hubs route-tables routes list --route_table=default \
--hub=ncc-hub \
--filter="IP_CIDR_RANGE:fd20"
ตัวอย่างเอาต์พุต
IP_CIDR_RANGE PRIORITY LOCATION STATE TYPE SITE_TO_SITE NEXT_HOP HUB ROUTE_TABLE
fd20:c95:95d2:1000:0:0:0:0/64 us-east1 ACTIVE VPC_PRIMARY_SUBNET N/A vpc-ncc4 ncc-hub default
fd20:c95:95d2:1:0:0:0:0/64 us-central1 ACTIVE VPC_PRIMARY_SUBNET N/A vpc-ncc4 ncc-hub default
fd20:670:3823:0:0:0:0:0/64 us-central1 ACTIVE VPC_PRIMARY_SUBNET N/A vpc-ncc5 ncc-hub default
fd20:90:6768:1000:0:0:0:0/64 us-east1 ACTIVE VPC_PRIMARY_SUBNET N/A vpc-ncc2 ncc-hub default
fd20:90:6768:0:0:0:0:0/64 us-central1 ACTIVE VPC_PRIMARY_SUBNET N/A vpc-ncc2 ncc-hub default
กรองซับเน็ต IPv6 ด้วย Spoke ของ VPC ใน NCC
ตรวจสอบตารางเส้นทางฮับ NCC สำหรับเส้นทางซับเน็ต IPv6 ภายนอก
gcloud network-connectivity hubs route-tables routes list --route_table=default \
--hub=ncc-hub \
--filter="NEXT_HOP:vpc-ncc5"
ตัวอย่างเอาต์พุต ตารางเส้นทางฮับ NCC ได้เรียนรู้ช่วง IPv6 ภายนอก
IP_CIDR_RANGE PRIORITY LOCATION STATE TYPE SITE_TO_SITE NEXT_HOP HUB ROUTE_TABLE
10.5.5.0/24 us-central1 ACTIVE VPC_PRIMARY_SUBNET N/A vpc-ncc5 ncc-hub default
2600:1900:4001:ce6:0:0:0:0/64 us-central1 ACTIVE VPC_PRIMARY_SUBNET N/A vpc-ncc5 ncc-hub default
fd20:670:3823:0:0:0:0:0/64 us-central1 ACTIVE VPC_PRIMARY_SUBNET N/A vpc-ncc5 ncc-hub default
10.50.10.0/24 us-central1 ACTIVE VPC_PRIMARY_SUBNET N/A vpc-ncc5 ncc-hub default
ใช้คำสั่ง gcloud ด้านล่างเพื่ออัปเดต Spoke ของ VPC5 เพื่อยกเว้นซับเน็ต IPv6 ภายใน 2 รายการและซับเน็ต IPv6 ภายนอก 1 รายการจากการแทรกลงในตารางเส้นทางฮับ NCC
gcloud network-connectivity spokes linked-vpc-network update vpc5-spoke5 \
--global \
--include-export-ranges=fd20:670:3823:0:0:0:0:0/48 \
--exclude-export-ranges=fd20:670:3823:1::/64,fd20:670:3823:2::/64
ใช้คำสั่ง gcloud เพื่อยืนยันตัวกรองการส่งออกของ Spoke VPC5
gcloud network-connectivity spokes linked-vpc-network update vpc5-spoke5 \
--global \
--include-export-ranges=fd20:670:3823:0:0:0:0:0/48 \
--exclude-export-ranges=fd20:670:3823:1::/64,fd20:670:3823:2::/64
ตรวจสอบตารางเส้นทางฮับ NCC สำหรับเส้นทางซับเน็ต IPv6 ภายนอก
gcloud network-connectivity hubs route-tables routes list --route_table=default \
--hub=ncc-hub \
--filter="NEXT_HOP:vpc-ncc5"
ตัวอย่างเอาต์พุต ตารางเส้นทางฮับ NCC ได้เรียนรู้ช่วง IPv6 ภายนอก
IP_CIDR_RANGE PRIORITY LOCATION STATE TYPE SITE_TO_SITE NEXT_HOP HUB ROUTE_TABLE
fd20:670:3823:0:0:0:0:0/64 us-central1 ACTIVE VPC_PRIMARY_SUBNET N/A vpc-ncc5 demo-mesh-hub default
9. ยืนยันการเชื่อมต่อเส้นทางข้อมูล
การเชื่อมต่อเส้นทางข้อมูล IPv4
ดูแผนภาพและตรวจสอบเส้นทางข้อมูล IPv4 ระหว่างเครื่องเสมือนแต่ละเครื่อง

SSH ไปยัง "vm1-vpc1-ncc" แล้วเริ่มการดัมพ์ TCP เพื่อติดตามแพ็กเก็ต ICMP จาก "vm2-vpc2-ncc" โปรดทราบว่า VM นี้อยู่ใน VPC2
vm1-vpc1-ncc
sudo tcpdump -i any icmp -v -e -n
สร้างเซสชัน SSH ไปยัง "vm1-vpc2-ncc" แล้ว "ping" ที่อยู่ IP ของ "vm1-vpc1-ncc"
vm1-vpc2-ncc
ping 10.1.1.2
สร้าง SSH ไปยัง "vm1-vpc2-ncc" และ "ping" ที่อยู่ IP ของ "vm1-vpc4-ncc"
vm1-vpc2-ncc
ping 240.0.0.2
การเชื่อมต่อเส้นทางข้อมูล IPv6
ดูแผนภาพและยืนยันเส้นทางข้อมูล IP64 ระหว่างเครื่องเสมือนแต่ละเครื่อง

ใช้คำสั่ง gcloud เพื่อแสดงรายการที่อยู่ IP สำหรับอินสแตนซ์แต่ละรายการที่เปิดใช้ IPv6
gcloud compute instances list --filter="INTERNAL_IP:fd20"
เอาต์พุตตัวอย่าง
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
vpc1-ipv6-vm us-central1-a n1-standard-1 fd20:90:6768:0:0:1:0:0/96 RUNNING
vpc4-ipv6-vm us-central1-a n1-standard-1 fd20:c95:95d2:1:0:1:0:0/96 RUNNING
vpc1-dual-stack-vm us-east1-b n1-standard-1 10.10.10.3 XXX.196.137.107 RUNNING
fd20:90:6768:1000:0:1:0:0/96
สร้างเซสชัน SSH ไปยัง "vpc1-dualstack-vm" และ "ping" ที่อยู่ IPv6 ของ "vpc1-ipv6-vm" เพื่อตรวจสอบการเชื่อมต่อ IPv6 ภายใน VPC ทั่วโลก
ping fd20:90:6768:1000:0:1::
สร้างเซสชัน SSH ไปยัง "vpc1-dualstack-vm" และ "ping" ที่อยู่ IPv6 ของ "vpc4-ipv6-vm" เพื่อตรวจสอบการเชื่อมต่อ IPv6 ผ่านการเชื่อมต่อ NCC
ping fd20:c95:95d2:1:0:1::
10. ล้างข้อมูล
เข้าสู่ระบบ Cloud Shell และลบอินสแตนซ์ VM ในฮับและเครือข่ายของสาขา
ลบการกำหนดค่า NAT ของ VPC ส่วนตัว
gcloud beta compute routers nats rules delete 1 \
--nat=ncc2-nat \
--router=private-nat-cr \
--region=us-central1 \
--quiet
gcloud beta compute routers nats delete ncc2-nat \
--router=private-nat-cr \
--router-region=us-central1 \
--quiet
gcloud compute routers delete private-nat-cr \
--region=us-central1 \
--quiet
ลบโฆษก NCC
gcloud network-connectivity spokes delete vpc1-spoke1 --global --quiet
gcloud network-connectivity spokes delete vpc2-spoke2 --global --quiet
gcloud network-connectivity spokes delete vpc3-spoke3 --global --quiet
gcloud network-connectivity spokes delete vpc4-spoke4 --global --quiet
ปฏิเสธ Spoke ข้ามโปรเจ็กต์
ปฏิเสธ Spoke VPC ข้ามโปรเจ็กต์จากฮับ NCC
gcloud network-connectivity spokes reject projects/$xprojname/locations/global/spokes/xproj-spoke \--details="cleanup" \
--global
ลบ NCC Hub
gcloud network-connectivity hubs delete ncc-hub --quiet
ลบกฎไฟร์วอลล์
gcloud compute firewall-rules delete ncc1-vpc-internal --quiet
gcloud compute firewall-rules delete ncc2-vpc-internal --quiet
gcloud compute firewall-rules delete ncc3-vpc-internal --quiet
gcloud compute firewall-rules delete ncc4-vpc-internal --quiet
gcloud compute firewall-rules delete ncc1-vpc-iap --quiet
gcloud compute firewall-rules delete ncc2-vpc-iap --quiet
gcloud compute firewall-rules delete ncc3-vpc-iap --quiet
gcloud compute firewall-rules delete ncc4-vpc-iap --quiet
gcloud compute firewall-rules delete allow-icmpv6-ula-ncc1
gcloud compute firewall-rules delete allow-icmpv6-ula-ncc4
ลบอินสแตนซ์ GCE
gcloud compute instances delete vm1-vpc1-ncc --zone=us-central1-a --quiet
gcloud compute instances delete vm2-vpc2-ncc --zone=us-central1-a --quiet
gcloud compute instances delete pnat-vm-vpc2 --zone=us-central1-a --quiet
gcloud compute instances delete vm1-vpc4-ncc --zone=us-east1-b --quiet
gcloud compute instances delete vpc4-ipv6-vm --zone us-central1-a --quiet
gcloud compute instances delete vpc2-dual-stack-vm --zone us-east1-b --quiet
gcloud compute instances delete vpc2-ipv6-vm --zone us-central1-a --quiet
ลบซับเน็ต VPC
gcloud compute networks subnets delete ncc2-spoke-nat --region us-central1 --quiet
gcloud compute networks subnets delete vpc1-ncc-subnet1 --region us-central1 --quiet
gcloud compute networks subnets delete vpc1-ncc-subnet2 --region us-central1 --quiet
gcloud compute networks subnets delete vpc1-ncc-subnet3 --region us-central1 --quiet
gcloud compute networks subnets delete vpc2-ncc-subnet1 --region us-central1 --quiet
gcloud compute networks subnets delete overlapping-vpc2 --region us-central1 --quiet
gcloud compute networks subnets delete overlapping-vpc3 --region us-central1 --quiet
gcloud compute networks subnets delete benchmark-testing-rfc2544 --region us-east1 --quiet
gcloud compute networks subnets delete class-e-rfc5735 --region us-east1 --quiet
gcloud compute networks subnets delete ietf-protcol-assignment-rfc6890 --region us-east1 --quiet
gcloud compute networks subnets delete ipv6-4-relay-rfc7526 --region us-east1 --quiet
gcloud compute networks subnets delete pupi --region us-east1 --quiet
gcloud compute networks subnets delete test-net-1-rfc5737 --region us-east1 --quiet
gcloud compute networks subnets delete test-net-2-rfc5737 --region us-east1 --quiet
gcloud compute networks subnets delete test-net-3-rfc5737 --region us-east1 --quiet
gcloud compute networks subnets delete vpc1-ipv64-sn2 --region=us-east1 --quiet
gcloud compute networks subnets delete vpc1-ipv6-sn1 --region=us-central1 --quiet
gcloud compute networks subnets delete vpc4-ipv64-sn2 --region=us-east1 --quiet
gcloud compute networks subnets delete vpc4-ipv6-sn1 --region=us-central1 --quiet
gcloud compute networks subnets delete vpc5-ext-ipv6 --region=us-central1 --quiet
ลบ VPC
gcloud compute networks delete vpc1-ncc vpc2-ncc vpc3-ncc vpc4-ncc, vpc5-ncc --quiet
11. ยินดีด้วย
คุณทำแล็บ Network Connectivity Center เสร็จแล้ว
สิ่งที่คุณครอบคลุม
- เครือข่ายการเพียร์ VPC แบบ Full Mesh ที่กำหนดค่าด้วย NCC Hub
- ตัวกรองยกเว้น NCC Spoke
- การรองรับ Spoke ข้ามโปรเจ็กต์
- Private NAT ระหว่าง VPC
ขั้นตอนถัดไป
©Google, LLC หรือบริษัทในเครือ สงวนลิขสิทธิ์ ห้ามเผยแพร่