1. 簡介
總覽
在本研究室中,使用者將瞭解如何透過支援 VPC 輪輻,使用 Network Connectivity Center(NCC) 建立大量的虛擬私有雲間連線。當使用者將 VPC 定義為 VPC 輪輻時,即可透過 NCC 中樞將其連結至多個 VPC 網路。搭配 VPC 輻射狀設定的 NCC 可降低透過虛擬私有雲對等互連管理成對虛擬私有雲間連線的作業複雜度,改用集中式連線管理模式。
請注意,Network Connectivity Center (NCC) 是一種中樞與輪輻控制平面模式,可用於在 Google Cloud 中管理網路連線。中樞資源提供集中連線管理模式,用於連結輪輻。
建構項目
在這個程式碼研究室中,您將使用 NCC 中樞建立邏輯軸輻式拓撲,在三個不同的 VPC 中實作完整網狀的 VPC 連線結構。
課程內容
- 透過 NCC 提供完整的虛擬私有雲網路連線
- 跨虛擬私有雲的 Private NAT
軟硬體需求
- 瞭解 GCP 虛擬私有雲網路
- 瞭解 Cloud Router 和 BGP 路由
- 兩個不同的 GCP 專案
- 本程式碼研究室需要 5 個 VPC。其中一個虛擬私有雲必須位於 NCC 中樞以外的專案
- 檢查您的配額:網路,並視需要申請額外網路,如以下螢幕截圖所示:
目標
- 設定 GCP 環境
- 將 Network Connectivity Center 設定為以虛擬私有雲做為輪輻
- 驗證資料路徑
- 探索 NCC 可維護性功能
- 清除已用資源
事前準備
Google Cloud 控制台和 Cloud Shell
為了與 GCP 互動,我們會在本研究室中使用 Google Cloud 控制台和 Cloud Shell。
NCC Hub 專案 Google Cloud 控制台
如要前往 Cloud 控制台,請前往 https://console.cloud.google.com。
在 Google Cloud 中設定下列項目,以便設定 Network Connectivity Center:
在 Google Cloud 控制台的專案選取器頁面中,選取或建立 Google Cloud 專案。
啟動 Cloud Shell。本程式碼研究室會使用 $variables 協助在 Cloud Shell 中實作 gcloud 設定。
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。請務必根據需求為使用者設定 NCC IAM 角色。
角色/說明 | 權限 |
networkconnectivity.networkAdmin:允許網路管理員管理中樞和輻條。 | networkconnectivity.hubs.networkconnectivity.spokes. |
networkconnectivity.networkSpokeManager:允許在中樞中新增及管理輪輻。適用於共用虛擬私有雲,其中主機專案擁有 Hub,但其他專案的其他管理員可以為其附件新增 Hub 輻條。 | networkconnectivity.spokes.** |
networkconnectivity.networkUsernetworkconnectivity.networkViewer - 允許網路使用者查看中樞和輻條的不同屬性。 | networkconnectivity.hubs.getnetworkconnectivity.hubs.listnetworkconnectivity.spokes.getnetworkconnectivity.spokes.listnetworkconnectivity.spokes.aggregatedList |
2. 設定網路環境
總覽
在本節中,我們會在單一專案中部署虛擬私有雲網路和防火牆規則。邏輯圖表說明瞭這個步驟中將設定的網路環境。
為了示範跨專案輻條支援功能,我們會在後續步驟中,在其他專案中部署虛擬私有雲和防火牆規則。
建立虛擬私有雲網路和子網路
虛擬私人雲端網路包含您將用於安裝 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
虛擬私有雲支援的子網路範圍
NCC 支援所有有效的 IPv4 子網路範圍,但不支援私用公開 IP 位址。在這個步驟中,請在 VPC4 中建立有效的 IP 範圍,並匯入至中樞路由表。
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 範圍匯入中樞路由表。使用者會在後續步驟中解決這項限制。目前,請為 VPC2 和 VPC3 建立兩個重疊的 IP 範圍。
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 防火牆規則
在每個虛擬私有雲上設定防火牆規則,允許
- 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
在每個 VPC 中設定 GCE VM
您需要臨時網際網路存取權,才能在「vm1-vpc1-ncc」上安裝套件。
建立四部虛擬機器,每部虛擬機器都會指派至先前建立的其中一個 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 中樞
總覽
在本節中,我們將使用 gcloud 指令設定 NCC Hub。NCC Hub 會擔任控制層,負責在各個虛擬私有雲輪輻之間建立轉送設定。
啟用 API 服務
啟用網路連線 API (如果尚未啟用):
gcloud services enable networkconnectivity.googleapis.com
建立 NCC 中樞
使用 gcloud 指令建立 NCC 中樞
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 中樞的路由表名稱
gcloud network-connectivity hubs route-tables list --hub=ncc-hub
NAME: default
HUB: ncc-hub
DESCRIPTION:
找出 NCC 預設路由表的 URI。
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 中樞的路由表應為空白。
4. 含有虛擬私有雲輪輻的 NCC
總覽
在本節中,您將使用 gcloud 指令將三個 VPC 設為 NCC 輻射點。
將 VPC 設為 NCC 輻條
依序將下列 VPC 設為 NCC 分支
- VPC4
- VPC1
- VPC2
- VPC3
將 VPC4 設為 NCC 輪輻,並指派給先前建立的 NCC 中樞。NCC 語音 API 呼叫需要指定位置。旗標「–global」可簡化 gcloud 語法,讓使用者在設定新的 NCC 輻條時,不必指定完整的 URI 路徑。
gcloud network-connectivity spokes linked-vpc-network create vpc4-spoke4 \
--hub=ncc-hub \
--vpc-network=vpc4-ncc \
--global
將 VPC1 設為 NCC 輻。
管理員可以排除從 VPC 輪輻匯出至 NCC 中樞路由表的子網路路徑。在本程式碼研究室的這個部分,您將根據摘要前置字元建立排除匯出規則,以免 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 輻射點,並使用「export-exclude-ranges」關鍵字篩除特定範圍內的 /24 匯總路徑,避免這兩個 /25 子網路匯入至中樞路由表。
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
注意*:使用者最多可為每個 NCC 輻射線篩選 16 個獨特 IP 範圍。
列出 NCC Hub 的預設路由表內容。NCC Hub 路由表中的兩個 /25 子網路發生什麼問題?
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 中樞偵測到與 VPC2 重疊的 IP 範圍。請注意,VPC2 和 VPC3 都使用相同的 10.3.3.0/24 IP 子網路。
使用「排除匯出」功能篩除重疊的 IP 範圍
在編寫此程式碼研究室的內容時,這是已知的問題,使用者必須刪除並重新建立 NCC 輻條,才能對匯出篩選器進行設定變更。
gcloud network-connectivity spokes delete vpc2-spoke2 --global --quiet
注意:刪除與特定虛擬私有雲相關聯的虛擬私有雲輪輻後,必須等待 10 分鐘的冷卻期過後,才能重新建立參照相同虛擬私有雲的新輪輻。
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
系統會排除 VPC2 和 VPC3 重疊的 IP 範圍。NCC Hub 轉送表支援所有有效的 IPv4 範圍類型,但不支援私用公開 IP 位址 (PUPI)。
5. 包含跨專案輪輻的 NCC
總覽
到目前為止,您已設定 NCC 輻條,且與中樞屬於同一個專案。在本節中,您將使用 gcloud 指令,將 VPC 設為 NCC 中樞以外的 NCC 輻射點。
這樣一來,管理自有虛擬私有雲的專案擁有者就能透過 NCC 中樞參與網路連線。
跨專案:Google Cloud 控制台和 Cloud Shell
為了與 GCP 互動,我們會在本研究室中使用 Google Cloud 控制台和 Cloud Shell。
Cross Project Spoke Google Cloud Console
如要前往 Cloud 控制台,請前往 https://console.cloud.google.com。
在 Google Cloud 中設定下列項目,以便設定 Network Connectivity Center:
在 Google Cloud 控制台的專案選取器頁面中,選取或建立 Google Cloud 專案。
啟動 Cloud Shell。本程式碼研究室會使用 $variables 協助在 Cloud Shell 中實作 gcloud 設定。
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。請務必根據需求為使用者設定 NCC IAM 角色。
跨專案 Spoke 管理員至少必須具備下列 IAM 角色:「networkconnectivity.networkSpokeManager」。」
下表列出 NCC 中樞和輪輻管理員所需的 IAM 角色,供您參考。
角色/說明 | 權限 |
networkconnectivity.networkAdmin:允許網路管理員管理中樞和輻條。 | networkconnectivity.hubs.networkconnectivity.spokes. |
networkconnectivity.networkSpokeManager:允許在中樞中新增及管理輪輻。適用於共用虛擬私有雲,其中主機專案擁有 Hub,但其他專案的其他管理員可以為其附件新增 Hub 輻條。 | networkconnectivity.spokes.** |
networkconnectivity.networkUsernetworkconnectivity.networkViewer - 允許網路使用者查看中樞和輻條的不同屬性。 | networkconnectivity.hubs.getnetworkconnectivity.hubs.listnetworkconnectivity.spokes.getnetworkconnectivity.spokes.listnetworkconnectivity.spokes.aggregatedList |
在跨專案中建立虛擬私有雲網路和子網路
虛擬私人雲端網路包含您將用於安裝 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
NCC 中樞專案 URI
請使用這項 gcloud 指令來找出 NCC Hub URI。您需要 URI 路徑,才能在下一個步驟中設定跨專案 NCC 語音助理。
gcloud network-connectivity hubs describe ncc-hub
跨專案 Spoke VPC
登入 VPC 不在 NCC Hub 專案中的其他專案。在 Cloud Shell 中,使用以下指令將 VPC 設為 NCC 輻射點。
- HUB_URI 應為其他專案中的樞紐 URI。
- VPC_URI 應與輪輻位於相同專案
- VPC-network 會指定這項跨專案中的 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
總覽
NCC Hub 管理員必須明確接受跨專案輻條,才能加入中心。這可防止專案擁有者將不當的 NCC 輻條連結至 NCC 全域路由表。一旦接受或拒絕某個 Spoke,您可以執行上述指令,隨後多次拒絕或接受該 Spoke。
登入 Cloud Shell,返回 NCC 中樞所在的專案。
找出要檢查的跨專案 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"
列出 Hub 上的 Active 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
在中樞上列出子網路路徑
您是否可以在輸出內容中看到跨虛擬私有雲輪輻的子網路路徑?
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. 虛擬私有雲之間的 Private NAT
總覽
在本節中,您將為兩個虛擬私有雲之間重疊的子網路範圍設定私有 NAT。請注意,虛擬私有雲之間的私人 NAT 需要 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
將可轉送的子網路範圍專用於 VPC2 重疊子網路的來源 NAT 流量。使用「–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
建立專用 Cloud Router 來執行私人 NAT
gcloud compute routers create private-nat-cr \
--network vpc2-ncc \
--region us-central1
請將 Cloud Router 設定為來源 NAT,從 vpc2-ncc 的 10.3.3.0/24 重疊範圍。在下列範例設定中,「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
在先前的步驟中,我們建立了 NAT IP 範圍集區和要轉譯的特定子網路。在這個步驟中,請建立 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
驗證 Private 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」
確認系統預設已啟用動態通訊埠分配功能。
接下來,您將驗證使用為 VPC2 設定的私人 NAT 路徑的資料路徑。
開啟 "vm1-vpc1-ncc" 的 SSH 工作階段,然後使用下方的 tcpdump 指令,擷取來自 NAT 集區範圍 "10.10.10.0/29" 的封包。
vm1-vpc1-ncc
sudo tcpdump -i any net 10.10.10.0/29 -n
在撰寫此程式碼研究室的內容時,私人 NAT 不支援 ICMP 封包。建立 SSH 工作階段,連線至「pNat-vm-vpc2」,然後使用下列 curl 指令,透過 TCP 80 通訊埠連線至「vm1-vpc1-ncc」。
pnat-vm-vpc2
curl 10.1.1.2 -v
檢查 "vm1-vpc1-ncc" 上的 tcpdump 輸出內容。"vm1-vpc1-ncc." 上,與我們的網路伺服器建立 TCP 工作階段的來源 IP 位址為何?
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 轉儲,以追蹤來自「vm2-vpc2-ncc」的 ICMP 封包。提醒你,這個 VM 位於 VPC2 中。
vm1-vpc1-ncc
sudo tcpdump -i any icmp -v -e -n
建立 SSH 工作階段,連線至「vm1-vpc2-ncc」並「ping」vm1-vpc1-ncc 的 IP 位址。
vm1-vpc2-ncc
ping 10.1.1.2
建立 SSH 連線至「vm1-vpc2-ncc」,並「ping」vm1-vpc4-ncc 的 IP 位址。
vm1-vpc2-ncc
ping 240.0.0.2
9. 清除
登入 Cloud Shell,並刪除中樞和分支機構網站網路中的 VM 執行個體
刪除私人 VPC Nat 設定
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
拒絕跨專案輻
從 NCC 中樞拒絕跨專案虛擬私有雲輪輻。
gcloud network-connectivity spokes reject projects/$xprojname/locations/global/spokes/xproj-spoke \--details="cleanup" \
--global
刪除 NCC 中樞
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
刪除虛擬私有雲子網路
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 delete vpc1-ncc vpc2-ncc vpc3-ncc vpc4-ncc
--quiet
10. 恭喜!
您已完成 Network Connectivity Center 研究室!
涵蓋內容
- 已設定全網狀虛擬私有雲對等互連網路,並使用 NCC Hub
- NCC 輪輻排除篩選器
- 跨專案輪輻支援
- 虛擬私有雲之間的 Private NAT
後續步驟
©Google, LLC 或其關係企業。版權所有。請勿散布。