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
- ตรวจสอบโควต้า:เครือข่ายและขอเพิ่มเครือข่าย หากจำเป็น ตามภาพหน้าจอด้านล่าง
วัตถุประสงค์
- ตั้งค่าสภาพแวดล้อม 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 และไฟร์วอลล์ในโปรเจ็กต์อื่นใช้งานได้
สร้าง 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 แต่ละแบบ
เปิดใช้บริการ 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
กำหนดค่า 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 ได้
ข้ามโปรเจ็กต์: 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"
ตรวจสอบว่าได้เปิดใช้การจัดสรรพอร์ตแบบไดนามิกโดยค่าเริ่มต้นแล้ว
ถัดไป คุณจะต้องยืนยันเส้นทางข้อมูลที่ใช้เส้นทาง 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
ในขณะที่เขียน 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. ยืนยันการเชื่อมต่อเส้นทางข้อมูล
โปรดดูแผนภาพ ตรวจสอบเส้นทางข้อมูลระหว่างเครื่องเสมือนแต่ละเครื่อง
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 หรือบริษัทในเครือ สงวนลิขสิทธิ์ ห้ามเผยแพร่