Code Lab: NCC VPC เป็น Spoke

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
  • ตรวจสอบโควต้า: เครือข่ายและขอเพิ่มเครือข่ายหากจำเป็น ภาพหน้าจอด้านล่าง

6bc606cb34bce7e8.png

วัตถุประสงค์

  • ตั้งค่าสภาพแวดล้อม GCP
  • กำหนดค่า Network Connectivity Center โดยใช้ VPC เป็น Spoke
  • ตรวจสอบเส้นทางข้อมูล
  • สำรวจฟีเจอร์ความสามารถในการให้บริการของ NCC
  • ล้างทรัพยากรที่ใช้แล้ว

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

Google Cloud Console และ Cloud Shell

หากต้องการโต้ตอบกับ GCP เราจะใช้ทั้ง Google Cloud Console และ Cloud Shell ตลอดแล็บนี้

โปรเจ็กต์ 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 นี้ใช้ $variables เพื่อช่วยในการติดตั้งใช้งานการกำหนดค่า 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 และกฎไฟร์วอลล์ใช้งานได้ในโปรเจ็กต์เดียว แผนภาพเชิงตรรกะแสดงสภาพแวดล้อมเครือข่ายที่จะตั้งค่าในขั้นตอนนี้

เราจะแสดงการรองรับ Spoke ข้ามโปรเจ็กต์โดยการติดตั้งใช้งาน VPC และกฎไฟร์วอลล์ในโปรเจ็กต์อื่นในขั้นตอนถัดไป

dc4ed09dae1a0056.png

สร้าง VPC และเครือข่ายย่อย

เครือข่าย VPC มีซับเน็ตที่คุณจะติดตั้ง VM ของ GCE เพื่อตรวจสอบเส้นทางข้อมูล

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

860347511de47cea.png

เปิดใช้บริการ API

เปิดใช้ API การเชื่อมต่อเครือข่ายในกรณีที่ยังไม่ได้เปิดใช้

gcloud services enable networkconnectivity.googleapis.com

สร้าง NCC Hub

สร้างฮับ 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 จะว่างเปล่าจนกว่าจะมีการเชื่อมต่อ

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

b367b1659d2df694.png

กำหนดค่า VPC เป็น Spoke ของ NCC

กำหนดค่า VPC ต่อไปนี้เป็น Spoke ของ NCC ตามลำดับ

  • VPC4
  • VPC1
  • VPC2
  • VPC3

กำหนดค่า VPC4 เป็น Spoke ของ NCC และกำหนดให้กับฮับ NCC ที่สร้างไว้ก่อนหน้านี้ การเรียก API ของ NCC Speak ต้องระบุตำแหน่ง แฟล็ก "–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 ได้ ในส่วนนี้ของโค้ดแล็บ ให้สร้างกฎการยกเว้นการส่งออกตามคำนำหน้าสรุปเพื่อป้องกันไม่ให้ซับเน็ตของ 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)

5. NCC ที่มี Spoke ข้ามโปรเจ็กต์

ภาพรวม

ที่ผ่านมา คุณได้กำหนดค่าก้าน NCC ที่อยู่ในโปรเจ็กต์เดียวกับฮับ ในส่วนนี้ คุณจะกำหนดค่า VPC เป็น Spoke ของ NCC จากโปรเจ็กต์อื่นที่แยกจาก NCC Hub โดยใช้คำสั่ง gCloud

ซึ่งจะช่วยให้เจ้าของโปรเจ็กต์ที่จัดการ VPC ของตนเองสามารถเข้าร่วมการเชื่อมต่อเครือข่ายกับ NCC Hub ได้

a90b3185e30832e8.png

ข้ามโปรเจ็กต์: คอนโซล Google Cloud และ Cloud Shell

หากต้องการโต้ตอบกับ GCP เราจะใช้ทั้ง Google Cloud Console และ Cloud Shell ตลอดแล็บนี้

Google Cloud Console ของ Spoke ข้ามโปรเจ็กต์

คุณเข้าถึง Cloud Console ได้ที่ https://console.cloud.google.com

ตั้งค่ารายการต่อไปนี้ใน Google Cloud เพื่อให้กำหนดค่า Network Connectivity Center ได้ง่ายขึ้น

ใน Google Cloud Console ให้เลือกหรือสร้างโปรเจ็กต์ Google Cloud ในหน้าตัวเลือกโปรเจ็กต์

เปิด Cloud Shell Codelab นี้ใช้ $variables เพื่อช่วยในการติดตั้งใช้งานการกำหนดค่า 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 มีซับเน็ตที่คุณจะติดตั้ง VM ของ GCE เพื่อตรวจสอบเส้นทางข้อมูล

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 Hub ใน 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 ต้องยอมรับ Spoke ข้ามโปรเจ็กต์อย่างชัดเจนจึงจะเข้าร่วมฮับได้ ซึ่งจะช่วยป้องกันไม่ให้เจ้าของโปรเจ็กต์แนบ Spoke NCC ที่ไม่ได้รับอนุญาตกับตารางการกำหนดเส้นทางส่วนกลางของ NCC เมื่อยอมรับหรือปฏิเสธสปีกแล้ว คุณจะปฏิเสธหรือยอมรับได้หลายครั้งตามต้องการโดยเรียกใช้คำสั่งด้านบน

กลับไปที่โปรเจ็กต์ที่มีฮับ 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 ข้ามโปรเจ็กต์ด้วยตัวกรองรวมการส่งออก

เข้าสู่ระบบโปรเจ็กต์ที่ 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. NAT ส่วนตัวระหว่าง VPC

ภาพรวม

ในส่วนนี้ คุณจะกำหนดค่า NAT ส่วนตัวสำหรับช่วงซับเน็ตที่ทับซ้อนกันระหว่าง VPC 2 รายการ โปรดทราบว่า NAT ส่วนตัวระหว่าง VPC ต้องใช้ NCC

ในส่วนก่อนหน้า VPC2 และ VPC3 ได้รับการกำหนดค่าด้วยช่วงเครือข่ายย่อยที่ทับซ้อนกันเป็น "10.3.3.0/24" ทั้ง VPC ได้รับการกำหนดค่าเป็นก้าน 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"

ตรวจสอบว่าได้เปิดใช้การจัดสรรพอร์ตแบบไดนามิกโดยค่าเริ่มต้น

7317d3cfb7e9468b.png

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

444d45616f1d0cae.png

เปิดเซสชัน 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

ณ เวลาที่เขียน Codelab นี้ 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 Spoke และ Hybrid Spoke ในส่วนนี้ ให้กำหนดค่า NCC เพื่อรองรับโหมดการแลกเปลี่ยนเส้นทางซับเน็ต IPv6 เท่านั้นและ IPv4 และ IPv6 แบบ Dual Stack

57282c3276d50671.png

สร้าง 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 ด้านล่างเพื่ออัปเดตก้าน 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 สำหรับเครือข่ายย่อย IPv6 ULA

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 ระหว่างเครื่องเสมือนแต่ละเครื่อง

27c61b09f2bf2d02.png

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 ระหว่างเครื่องเสมือนแต่ละเครื่อง

3afe67968317a16d.png

ใช้คำสั่ง 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 Spokes

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 หรือบริษัทในเครือ สงวนลิขสิทธิ์ ห้ามเผยแพร่