ห้องทดลอง: NCC VPC แบบ Spoke

1. บทนำ

Overview

ในห้องทดลองนี้ ผู้ใช้จะสำรวจวิธีใช้ศูนย์การเชื่อมต่อเครือข่าย(NCC) เพื่อสร้างการเชื่อมต่อระหว่าง VPC ในวงกว้างผ่านการรองรับ Spoke ของ VPC เมื่อผู้ใช้กำหนด VPC เป็นสี่เหลี่ยมจัตุรัส VPC ก็จะทำให้ผู้ใช้เชื่อมต่อกับเครือข่าย VPC หลายเครือข่ายร่วมกันผ่าน NCC Hub ได้ NCC ที่มีการกำหนดค่าแบบใช้ VPC ช่วยลดความซับซ้อนในการดำเนินงานของการจัดการการเชื่อมต่อแบบจับคู่ระหว่าง VPC ผ่านการเพียร์ VPC แทนการใช้โมเดลการจัดการการเชื่อมต่อแบบรวมศูนย์

อย่าลืมว่าศูนย์การเชื่อมต่อเครือข่าย (Network Connectivity Center หรือ NCC) คือโมเดลระนาบควบคุมแบบฮับและแบบมีเสียงพูดสำหรับการจัดการการเชื่อมต่อเครือข่ายใน Google Cloud ทรัพยากรฮับมีโมเดลการจัดการการเชื่อมต่อแบบรวมศูนย์สำหรับซี่สำหรับการเชื่อมต่อถึงกัน

สิ่งที่คุณจะสร้าง

ใน Codelab นี้ คุณจะสร้างฮับเชิงตรรกะและโทโพโลยีแบบพูดด้วยฮับ NCC ที่จะนำโครงสร้างการเชื่อมต่อ VPC ที่ทำงานร่วมกันเต็มรูปแบบไปใช้ใน VPC ที่แตกต่างกัน 3 รายการ

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

  • การเชื่อมต่อ VPC แบบเต็มรูปแบบพร้อม NCC
  • NAT ส่วนตัวใน VPC

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

  • ความรู้เกี่ยวกับเครือข่าย GCP VPC
  • ความรู้เกี่ยวกับเราเตอร์ระบบคลาวด์และการกำหนดเส้นทาง BGP
  • โปรเจ็กต์ GCP แยกกัน 2 โปรเจ็กต์
  • Codelab นี้ต้องใช้ VPC 5 หนึ่งใน VPC เหล่านั้นต้องอยู่ในโปรเจ็กต์แยกต่างหากจากฮับ NCC
  • ตรวจสอบโควต้า:เครือข่ายและขอเพิ่มเครือข่าย หากจำเป็น ตามภาพหน้าจอด้านล่าง

6d1b99c6da87fd84.png

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

  • ตั้งค่าสภาพแวดล้อม GCP
  • กำหนดค่าศูนย์การเชื่อมต่อเครือข่ายด้วย VPC แบบ {/1}
  • ตรวจสอบเส้นทางข้อมูล
  • สำรวจฟีเจอร์ความสามารถในการให้บริการของ NCC
  • ล้างทรัพยากรที่ใช้แล้ว

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

คอนโซล Google Cloud และ Cloud Shell

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

โปรเจ็กต์ NCC Hub คอนโซล Google Cloud

คุณติดต่อ Cloud Console ได้ที่ https://console.cloud.google.com

ตั้งค่ารายการต่อไปนี้ใน Google Cloud เพื่อให้กำหนดค่าศูนย์การเชื่อมต่อเครือข่ายได้ง่ายขึ้น

ในหน้าตัวเลือกโปรเจ็กต์ของ 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.ieds

networkconnectivity.networkSpokeManager - อนุญาตการเพิ่มและจัดการคอลัมน์ในฮับ เพื่อใช้ใน VPC ที่แชร์ซึ่งมีโปรเจ็กต์โฮสต์เป็นเจ้าของฮับ แต่ผู้ดูแลระบบคนอื่นๆ ในโปรเจ็กต์อื่นๆ สามารถเพิ่มรายการสำหรับไฟล์แนบของตนไปยังฮับได้

networkconnectivity.speaks**

networkconnectivity.networkUsernetworkconnectivity.networkViewer - อนุญาตให้ผู้ใช้เครือข่ายดูแอตทริบิวต์ต่างๆ ของฮับและสปีดได้

networkconnectivity.hubs.getnetworkconnectivity.hubs.listnetworkconnectivity.spokes.getnetworkconnectivity.spokes.listnetworkconnectivity.spokes.aggregatedList

2. ตั้งค่าสภาพแวดล้อมของเครือข่าย

Overview

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

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

245f1002db33ca98.png

สร้าง 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 รายการ ระบบจะกำหนด VM แต่ละรายการให้กับหนึ่งใน 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. ฮับศูนย์การเชื่อมต่อเครือข่าย

Overview

ในส่วนนี้ เราจะกำหนดค่า NCC Hub โดยใช้คำสั่ง gcloud NCC Hub จะทำหน้าที่เป็นระนาบควบคุมที่รับผิดชอบการสร้างการกำหนดค่าการกำหนดเส้นทางระหว่าง VPC แต่ละแบบ

8acc7651f52e251e.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 Hub ที่สร้างขึ้นใหม่ จดชื่อและเส้นทางที่เกี่ยวข้องไว้

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 จะว่างเปล่าจนกว่าจะมีไอคอน

gcloud network-connectivity hubs route-tables routes list --hub=ncc-hub --route_table=default

ตารางเส้นทางของ NCC Hub ควรว่างเปล่า

4. NCC ที่มี Spoke ของ VPC

Overview

ในส่วนนี้ คุณจะต้องกำหนดค่า VPC 3 รายการเป็น Spoke ของ NCC โดยใช้คำสั่ง gcloud

a70bc80037927bb0.png

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

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

  • VPC4
  • VPC1
  • VPC2
  • VPC3

กำหนดค่า VPC4 เป็นการสื่อสารของ NCC และกำหนดให้กับฮับ NCC ที่สร้างไว้ก่อนหน้านี้ การเรียก API แบบ NCC ต้องมีการระบุตำแหน่ง ธง "–global" ลดความซับซ้อนของไวยากรณ์ gcloud ด้วยการอนุญาตให้ผู้ใช้หลีกเลี่ยงการระบุเส้นทาง URI แบบเต็มเมื่อกำหนดค่า NCC ใหม่

gcloud network-connectivity spokes linked-vpc-network create vpc4-spoke4 \
--hub=ncc-hub \
--vpc-network=vpc4-ncc \
--global

กำหนดค่า VPC1 เป็นเสียงพูดของ NCC

ผู้ดูแลระบบจะยกเว้นการส่งออกเส้นทางซับเน็ตจาก VPC ที่สื่อสารในตารางเส้นทางของฮับ NCC ได้ ในส่วนนี้ของ Codelab ให้สร้างกฎการส่งออกที่ยกเว้นตามคำนำหน้าสรุป เพื่อป้องกันไม่ให้ซับเน็ตของ VPC1 ส่งออกไปยังตารางเส้นทาง NCC Hub

ใช้คำสั่ง 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 ช่วงต่อการพูดถึง 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 เป็นมุม NCC

gcloud network-connectivity spokes linked-vpc-network create vpc2-spoke2 \
--hub=ncc-hub \
--vpc-network=vpc2-ncc \
--global

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

การกรองช่วง IP ที่ซ้อนทับกันด้วย Exclude Export

ในขณะที่เขียน Codelab นี้เป็นปัญหาที่ทราบแล้ว ซึ่งผู้ใช้ต้องลบและสร้างโครงสร้าง NCC ใหม่เพื่อเปลี่ยนแปลงการกำหนดค่าของตัวกรองการส่งออก

gcloud network-connectivity spokes delete vpc2-spoke2 --global --quiet

หมายเหตุ: การลบ VPC ที่เชื่อมโยงกับ VPC ที่เฉพาะเจาะจงจะต้องมีระยะเวลาพัก 10 นาทีเพื่อให้หมดอายุ เพื่อสร้างลำโพงใหม่ที่อ้างอิง VPC เดียวกันนั้นอีกครั้ง

gcloud  network-connectivity spokes linked-vpc-network create vpc2-spoke2 \
--hub=ncc-hub \
--vpc-network=vpc2-ncc \
--exclude-export-ranges=10.3.3.0/24 \
--global

กำหนดค่า VPC3 เป็นเสียงพูดของ NCC และกำหนดให้กับฮับ NCC ที่สร้างไว้ก่อนหน้านี้ ความพยายามเพิ่ม VPC3 ในครั้งนี้ตามที่พูดคุยกับ NCC ควรดำเนินการสำเร็จ

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 ที่มี Spokes แบบข้ามโปรเจ็กต์

Overview

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

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

e1190fa898c5097d.png

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

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

คอนโซล Google Cloud ของการอ่านข้ามโปรเจ็กต์

คุณติดต่อ Cloud Console ได้ที่ https://console.cloud.google.com

ตั้งค่ารายการต่อไปนี้ใน Google Cloud เพื่อให้กำหนดค่าศูนย์การเชื่อมต่อเครือข่ายได้ง่ายขึ้น

ในหน้าตัวเลือกโปรเจ็กต์ของ 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 ตามที่กําหนด

อย่างน้อยที่สุด ผู้ดูแลระบบแบบข้ามโปรเจ็กต์จะต้องได้รับบทบาท IAM: "networkconnectivity.networkSpokeManager. "

ตารางด้านล่างแสดงบทบาท IAM ที่ NCC Hub และผู้ดูแลระบบ Spoke ต้องใช้เพื่ออ้างอิง

บทบาท/คำอธิบาย

สิทธิ์

networkconnectivity.networkAdmin - อนุญาตให้ผู้ดูแลเครือข่ายจัดการฮับและซี่

Networkconnectivity.hubs.networkconnectivity.ieds

networkconnectivity.networkSpokeManager - อนุญาตการเพิ่มและจัดการคอลัมน์ในฮับ เพื่อใช้ใน VPC ที่แชร์ซึ่งมีโปรเจ็กต์โฮสต์เป็นเจ้าของฮับ แต่ผู้ดูแลระบบคนอื่นๆ ในโปรเจ็กต์อื่นๆ สามารถเพิ่มรายการสำหรับไฟล์แนบของตนไปยังฮับได้

networkconnectivity.speaks**

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

URI โปรเจ็กต์ NCC Hub

ใช้คำสั่ง gcloud นี้เพื่อค้นหา URI ของ NCC Hub คุณจะต้องใช้เส้นทาง URI เพื่อกำหนดค่าข้ามโปรเจ็กต์ที่ NCC พูดในขั้นตอนถัดไป

gcloud network-connectivity hubs describe ncc-hub

VPC แบบข้ามโปรเจ็กต์

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

  • HUB_URI ควรเป็น URI ของฮับในโปรเจ็กต์อื่น
  • VPC_URI ควรอยู่ในโปรเจ็กต์เดียวกับ การ์ด
  • เครือข่าย VPC ระบุว่า VPC ในโปรเจ็กต์ข้ามโปรเจ็กต์นี้จะรวม NCC Hub ในโปรเจ็กต์อื่น
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 พูดคืออะไร เหตุผล

6. ปฏิเสธหรือยอมรับ Spoke ข้ามโปรเจ็กต์

Overview

ผู้ดูแลระบบ NCC Hub จะต้องยอมรับให้มีการติดต่อระหว่างโปรเจ็กต์ในการเข้าร่วมฮับ วิธีนี้จะป้องกันไม่ให้เจ้าของโปรเจ็กต์แนบสแกม NCC ที่หลอกลวงกับตารางการกำหนดเส้นทางส่วนกลางของ NCC เมื่อมีการยอมรับหรือปฏิเสธสเปคแล้ว จะถูกปฏิเสธหรือยอมรับกี่ครั้งก็ได้ในภายหลังโดยการเรียกใช้คำสั่งด้านบน

กลับไปที่โปรเจ็กต์ที่มีฮับ NCC โดยการเข้าสู่ระบบ Cloud Shell

ระบุ Spoke ของโปรเจ็กต์ที่ต้องการตรวจสอบ

gcloud network-connectivity hubs list-spokes ncc-hub \
 --filter="reason:PENDING_REVIEW"

การยอมรับการพูด

gcloud network-connectivity spokes accept xproj-spoke --global

ไม่บังคับ: การปฏิเสธการพูด

gcloud network-connectivity spokes reject xproj-spoke \
--global \
--details="some reason to reject"

การแสดงรายการ Spoke ที่ใช้งานอยู่ในฮับ

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

แสดงรายการเส้นทางซับเน็ตบนฮับ

จากเอาต์พุต คุณดูเส้นทางซับเน็ตจากวิดีโอแบบข้าม 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.0.0/16  ACTIVE  VPC_PRIMARY_SUBNET  xprj-vpc  ncc-hub  default

7. NAT ส่วนตัวระหว่าง VPC

Overview

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

ในส่วน VPC2 และ VPC3 ส่วนก่อนหน้าได้รับการกำหนดค่าด้วยช่วงซับเน็ตที่ทับซ้อนกันของ "10.3.3.0/24" VPC ทั้ง 2 รายการได้รับการกำหนดค่าตามที่ NCC พูดเพื่อยกเว้นซับเน็ตที่ทับซ้อนกันไม่ให้แทรกลงในตารางเส้นทางฮับ NCC ซึ่งหมายความว่าไม่มีเส้นทางข้อมูลเลเยอร์ 3 ที่เข้าถึงโฮสต์ที่อยู่ในซับเน็ตดังกล่าว

ใช้คำสั่งเหล่านี้ในโปรเจ็กต์ฮับ NCC เพื่อค้นหาช่วงซับเน็ตที่ทับซ้อนกัน

gcloud compute networks subnets list --network vpc2-ncc

gcloud compute networks subnets list --network vpc3-ncc

ใน vpc2-ncc ชื่อซับเน็ตที่มีช่วง IP ที่ทับซ้อนกันคืออะไร

*โปรดจดชื่อซับเน็ตแล้วบันทึกไว้ที่อื่น คุณจะต้องกำหนดค่า NAT ต้นทางสำหรับช่วงนี้

กำหนดค่า NAT ส่วนตัว

ระบุช่วงซับเน็ตที่กำหนดเส้นทางได้โดยเฉพาะเพื่อจัดหาการรับส่งข้อมูล NAT จากซับเน็ตที่ทับซ้อนกันของ VPC2 กำหนดค่าช่วงซับเน็ตที่ไม่ซ้อนทับกันโดยใช้ "–Purpose=PRIVATE_NAT" แจ้ง

gcloud compute networks subnets create ncc2-spoke-nat \
--network=vpc2-ncc \
--region=us-central1 \
--range=10.10.10.0/29 \
--purpose=PRIVATE_NAT

สร้างเราเตอร์ระบบคลาวด์โดยเฉพาะเพื่อทำ NAT ส่วนตัว

gcloud compute routers create private-nat-cr \
--network vpc2-ncc \
--region us-central1

กำหนดค่าเราเตอร์ระบบคลาวด์เพื่อจัดหา NAT ที่มีช่วงทับซ้อนของ 10.3.3.0/24 จาก vpc2-ncc ในตัวอย่างการกำหนดค่าด้านล่าง "overlapping-vpc3" คือชื่อของซับเน็ตที่ทับซ้อนกัน ปุ่ม "ALL" คีย์เวิร์ดระบุว่าช่วง IP ทั้งหมดในซับเน็ตจะเป็นแหล่งที่มา NAT

gcloud 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 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 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/projects/yueri-3p-dev/regions/us-central1/subnetworks/ncc2-spoke-nat
  match: nexthop.hub == "//networkconnectivity.googleapis.com/projects/yueri-3p-dev/locations/global/hubs/ncc-hub"
  ruleNumber: 1
sourceSubnetworkIpRangesToNat: LIST_OF_SUBNETWORKS
subnetworks:
- name: https://www.googleapis.com/compute/projects/yueri-3p-dev/regions/us-central1/subnetworks/overlapping-vpc3
  sourceIpRangesToNat:
  - ALL_IP_RANGES
type: PRIVATE

(ไม่บังคับ)

  • เปลี่ยนไปใช้เว็บคอนโซล
  • ไปที่ "บริการเครือข่าย > Cloud NAT > Ncc2-nat"

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

114050bb65e0c4e2.png

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

5035b181aeaa30a8.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. ยืนยันการเชื่อมต่อเส้นทางข้อมูล

โปรดดูแผนภาพ ตรวจสอบเส้นทางข้อมูลระหว่างเครื่องเสมือนแต่ละเครื่อง

424df0ebe4510ebb.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

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

เข้าสู่ระบบ Cloud Shell และลบอินสแตนซ์ VM ในเครือข่ายของเว็บไซต์ฮับและสาขา

ลบการกำหนดค่า Nat ของ VPC ส่วนตัว

gcloud compute routers nats rules delete 1 \
--nat=ncc2-nat \
--router=private-nat-cr \
--region=us-central1 \
--quiet

gcloud 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

ปฏิเสธข้ามโปรเจ็กต์

ปฏิเสธการพูด 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

ลบอินสแตนซ์ 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

ลบซับเน็ต 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

ลบ VPC

gcloud compute networks delete vpc1-ncc vpc2-ncc vpc3-ncc vpc4-ncc 
--quiet 

10. ยินดีด้วย

คุณทำภารกิจของศูนย์การเชื่อมต่อเครือข่ายเสร็จสมบูรณ์แล้ว

สิ่งที่คุณได้ครอบคลุม

  • กำหนดค่าเครือข่ายการเพียร์ VPC แบบ Full Mesh ด้วย NCC Hub แล้ว
  • ตัวกรองยกเว้น Spoke ของ NCC
  • การสนับสนุนข้ามโปรเจ็กต์
  • NAT ส่วนตัวระหว่าง VPC

ขั้นตอนถัดไป

©Google, LLC หรือบริษัทในเครือ สงวนลิขสิทธิ์ ห้ามเผยแพร่