1. 總覽
Cloud NAT 是一項強大的工具:有了這項工具,Compute Engine 和 Google Kubernetes Engine (GKE) 工作負載就能以可擴充且安全的方式存取網際網路資源,無須透過外部 IP 讓執行的工作負載向外部存取。
Cloud NAT 採用無 Proxy 設計,可直接在 Andromeda SDN 層實作網路位址轉譯 (NAT)。因此,效能不會影響工作負載,而且可輕鬆擴充至許多 VM、區域和虛擬私有雲。
NAT 規則是 Cloud NAT 的擴充功能。Cloud NAT 的 NAT 規則功能可讓您建立存取規則,定義使用 Cloud NAT 連線至網際網路的方式。目前 NAT 規則支援依據目的地位址選取來源 NAT 位址。
如果沒有網路位址轉譯 (NAT) 規則,啟用 Cloud NAT 的 VM 就會使用同一組 NAT IP 位址存取所有網際網路位址。
有時候,NAT 用途會呼叫 Cloud NAT 為特定目的地使用不同的來源 IP 位址。NAT 規則會定義比對項目和相應動作。指定 NAT 規則後,封包就會與各個 NAT 規則相符。比對出符合規則後,就會執行與比對相符的動作。
詳情請參閱 NAT 規則「說明文件」一節 。
課程內容
- 如何設定 Cloud NAT 閘道,為 NAT 規則做好準備。
- 如何使用一般運算語言 (CEL) 設計 NAT 規則。
- 如何建立 NAT 規則並附加至 NAT 閘道。
- 如何從執行個體測試 NAT 規則。
- 如何更新 NAT 閘道規則。
- 如何刪除 NAT 規則並還原預設的 Cloud NAT 行為。
軟硬體需求
- Google Compute Engine 的基本知識
- 基本的網路和 TCP/IP 知識
- 基本的 Unix/Linux 指令列知識
- 完成 GCP 網路導覽,例如 Google Cloud 中的網路技術研究室。
- 瞭解 Cloud NAT 基本概念。
2. 使用 Google Cloud 控制台和 Cloud Shell
本研究室中會同時使用 Google Cloud 控制台和 Cloud Shell,以便與 GCP 互動。
Google Cloud Console
如要前往 Cloud 控制台,請前往 https://console.cloud.google.com。
自修環境設定
- 專案名稱是這項專案的個人 ID。您只要遵守命名慣例,即可任意使用,並隨時更新。
- 所有 Google Cloud 專案的專案 ID 均不得重複,且設定後即無法變更。Cloud 控制台會自動產生一個不重複的字串。但通常是在乎它何在在大部分的程式碼研究室中,您必須參照專案 ID (通常稱為
PROJECT_ID
),因此如果您不喜歡的話,請隨機產生一個,或者,您也可以自行嘗試看看是否可用。是「凍結」建立專案後
- 接下來,您需要在 Cloud 控制台中啟用計費功能,才能使用 Google Cloud 資源。
執行這個程式碼研究室並不會產生任何費用,如果有的話。請務必依照「清除所用資源」一節指示本節將說明如何關閉資源,這樣您就不會產生本教學課程結束後產生的費用。Google Cloud 的新使用者符合 $300 美元免費試用計畫的資格。
啟動 Cloud Shell
雖然 Google Cloud 可以從筆記型電腦遠端操作,但在本程式碼研究室中,您將使用 Google Cloud Shell,這是一種在 Cloud 中執行的指令列環境。
在 GCP 控制台的右上方,按一下「Cloud Shell」圖示:
佈建並連線至環境的作業只需幾分鐘的時間。完成後,您應該會看到類似下方的內容:
這部虛擬機器都裝載了您需要的所有開發工具。提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作,大幅提高網路效能和驗證能力。這個研究室中的所有工作都可以透過瀏覽器完成。
3. 設定研究室
在這個研究室中,您將使用專案,並在每個專案中建立兩個有子網路的虛擬私有雲。您將保留外部 IP 位址,然後建立並設定 Cloud NAT 閘道 (搭配 Cloud Router)、兩個生產端執行個體和取用端執行個體。驗證預設 Cloud NAT 行為後,您將建立 Cloud NAT 自訂規則並驗證其行為。
網路架構總覽:
4. 保留外部 IP 位址
保留在這個研究室中使用的所有外部 IP 位址。這有助於您在消費者和生產端的虛擬私有雲中,編寫所有相關 NAT 和防火牆規則。
透過 Cloud Shell:
gcloud compute addresses create nat-address-1 nat-address-2 nat-address-3 producer-address-1 producer-address-2 --region us-east4
輸出:
Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-1]. Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-2]. Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-3]. Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/producer-address-1]. Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/producer-address-2].
填入保留為環境變數的 IP 位址。
export natip1=`gcloud compute addresses list --filter name:nat-address-1 --format="get(address)"` export natip2=`gcloud compute addresses list --filter name:nat-address-2 --format="get(address)"` export natip3=`gcloud compute addresses list --filter name:nat-address-3 --format="get(address)"` export producerip1=`gcloud compute addresses list --filter name:producer-address-1 --format="get(address)"` export producerip2=`gcloud compute addresses list --filter name:producer-address-2 --format="get(address)"`
預期不會有任何輸出內容,但為了確認地址填入正確,讓我們輸出所有環境變數的值。
$ env | egrep '^(nat|producer)ip[1-3]'
輸出:
producerip1=<Actual Producer IP 1> producerip2=<Actual Producer IP 2> natip1=<NAT IP 1> natip2=<NAT IP 2> natip3=<NAT IP 3>
5. 生產端虛擬私有雲與執行個體設定。
現在要為生產端資源建立資源。在生產端虛擬私有雲中運作的執行個體將使用兩個公開 IP「Producer-address-1」,提供面向網際網路的服務和「Producer-address-2」,直接在 Google Cloud 控制台實際操作。
首先來建立虛擬私有雲透過 Cloud Shell:
gcloud compute networks create producer-vpc --subnet-mode custom
輸出:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/global/networks/producer-vpc]. NAME SUBNET_MODE BGP_ROUTING_MODE IPV4_RANGE GATEWAY_IPV4 producer-vpc CUSTOM REGIONAL Instances on this network will not be reachable until firewall rules are created. As an example, you can allow all internal traffic between instances as well as SSH, RDP, and ICMP by running: $ gcloud compute firewall-rules create <FIREWALL_NAME> --network producer-vpc --allow tcp,udp,icmp --source-ranges <IP_RANGE> $ gcloud compute firewall-rules create <FIREWALL_NAME> --network producer-vpc --allow tcp:22,tcp:3389,icmp
接著在 us-east4 中建立子網路透過 Cloud Shell:
gcloud compute networks subnets create producer-e4 \ --network producer-vpc --range 10.0.0.0/24 --region us-east4
輸出:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/regions/us-east4/subnetworks/producer-e4]. NAME REGION NETWORK RANGE producer-e4 us-east4 producer-vpc 10.0.0.0/24
接著,請建立虛擬私有雲防火牆規則,允許網路位址轉譯 (NAT) IP 位址連上通訊埠 8080 的生產端執行個體。
透過 Cloud Shell 建立第一項規則:
gcloud compute firewall-rules create producer-allow-8080 \ --network producer-vpc --allow tcp:8080 \ --source-ranges $natip1,$natip2,$natip3
輸出:
Creating firewall...⠹Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/global/firewalls/producer-allow-8080]. Creating firewall...done. NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED producer-allow-8080 producer-vpc INGRESS 1000 tcp:8080 False
接著要建立兩個生產端執行個體。
生產端執行個體會在 Docker Hub 提供的 Docker 容器中執行 IP echo 服務 (原始碼可在服務作者的 GitHub 存放區中取得)。
為了快速佈建執行個體和所有必要軟體,我們將使用 Compute Engine 上的容器部署功能。
為了能夠寫入網路位址轉譯 (NAT) 規則,我們會以不同的保留 IP 位址佈建每個執行個體。
建立第一個執行個體。透過 Cloud Shell:
gcloud compute instances create-with-container producer-instance-1 \ --zone=us-east4-a --machine-type=e2-medium \ --network-interface=address=producer-address-1,network-tier=PREMIUM,subnet=producer-e4 \ --container-image=mpolden/echoip --container-restart-policy=always
輸出:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/zones/us-east4-a/instances/producer-instance-1]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS producer-instance-1 us-east4-a e2-medium 10.0.0.2 <producer IP 1> RUNNING
接著建立第二個執行個體。透過 Cloud Shell:
gcloud compute instances create-with-container producer-instance-2 \ --zone=us-east4-a --machine-type=e2-medium \ --network-interface=address=producer-address-2,network-tier=PREMIUM,subnet=producer-e4 \ --container-image=mpolden/echoip --container-restart-policy=always
輸出:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/zones/us-east4-a/instances/producer-instance-2]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS producer-instance-2 us-east4-a e2-medium 10.0.0.3 <producer IP 2> RUNNING
6. 設定用戶端虛擬私有雲、Cloud NAT 和執行個體
您已成功建立生產端服務,接著要建立消費者虛擬私有雲及其 Cloud NAT 閘道。
建立虛擬私有雲和子網路後,我們會新增簡單的輸入防火牆規則,允許 TCP 來源 IP 範圍的 IAP。這樣一來,我們就能直接使用 gcloud 透過 SSH 連線至用戶端執行個體。
接著,我們會在手動分配模式下建立簡易的 Cloud NAT 閘道,以及保留的位址「nat-address-1」相關聯的資源在程式碼研究室的後續部分中,我們會更新閘道設定,藉此新增自訂規則。。
首先來建立虛擬私有雲透過 Cloud Shell:
gcloud compute networks create consumer-vpc --subnet-mode custom
輸出:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/global/networks/consumer-vpc]. NAME SUBNET_MODE BGP_ROUTING_MODE IPV4_RANGE GATEWAY_IPV4 consumer-vpc CUSTOM REGIONAL Instances on this network will not be reachable until firewall rules are created. As an example, you can allow all internal traffic between instances as well as SSH, RDP, and ICMP by running: $ gcloud compute firewall-rules create <FIREWALL_NAME> --network consumer-vpc --allow tcp,udp,icmp --source-ranges <IP_RANGE> $ gcloud compute firewall-rules create <FIREWALL_NAME> --network producer-vpc --allow tcp:22,tcp:3389,icmp
接著在 us-east4 中建立子網路透過 Cloud Shell:
gcloud compute networks subnets create consumer-e4 \ --network consumer-vpc --range 10.0.0.0/24 --region us-east4
輸出:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/regions/us-east4/subnetworks/consumer-e4]. NAME REGION NETWORK RANGE consumer-e4 us-east4 consumer-vpc 10.0.0.0/24
接著,請建立虛擬私有雲防火牆規則,允許 IAP 範圍位址傳送至通訊埠 22 的用戶執行個體。
針對第一個防火牆規則,從 Cloud Shell 執行下列指令:
gcloud compute firewall-rules create consumer-allow-iap \ --network consumer-vpc --allow tcp:22 \ --source-ranges 35.235.240.0/20
輸出:
Creating firewall...⠹Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/global/firewalls/consumer-allow-iap]. Creating firewall...done. NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED consumer-allow-iap consumer-vpc INGRESS 1000 tcp:22 False
在建立 NAT 閘道之前,我們必須先建立 Cloud Router 執行個體 (我們會使用私人 ASN 編號,但與這個研究室的活動無關)。透過 Cloud Shell:
gcloud compute routers create consumer-cr \ --region=us-east4 --network=consumer-vpc \ --asn=65501
輸出:
Creating router [consumer-cr]...done. NAME REGION NETWORK consumer-cr us-east4 consumer-vpc
接著建立 NAT 閘道執行個體。透過 Cloud Shell:
gcloud compute routers nats create consumer-nat-gw \ --router=consumer-cr \ --router-region=us-east4 \ --nat-all-subnet-ip-ranges \ --nat-external-ip-pool=nat-address-1
輸出:
Creating NAT [consumer-nat-gw] in router [consumer-cr]...done.
建立用戶測試執行個體。我們會在這裡填入預留生產端 IP,方便之後在執行個體中參照這些 IP。透過 Cloud Shell:
gcloud compute instances create consumer-instance --zone=us-east4-a \ --machine-type=e2-medium --network-interface=subnet=consumer-e4,no-address \ --metadata=producer-service-ip1=$producerip1,producer-service-ip2=$producerip2
輸出:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/zones/us-east4-a/instances/consumer-instance]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS consumer-instance us-east4-a e2-medium 10.0.0.2 RUNNING
7. 驗證預設的 Cloud NAT 行為
此時,取用端執行個體會使用預設的 Cloud NAT 行為,而該行為使用相同的預留 IP「nat-address-1」可用來與所有外部位址通訊
讓我們先驗證這項行為,再使用 Cloud NAT 中的全新 NAT 規則功能。
透過 SSH 登入用戶執行個體。透過 Cloud Shell:
gcloud compute ssh consumer-instance --zone=us-east4-a
您現在應該位於執行個體殼層。
輸出內容範例 (為求簡潔,完整輸出內容會截斷)
No zone specified. Using zone [us-east4-a] for instance: [consumer-instance]. External IP address was not found; defaulting to using IAP tunneling. ... ... <username>@consumer-instance:~$
在取用端執行個體中,先擷取兩個生產端 IP,並填入這些 IP 做為環境變數
export producerip1=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip1" -H "Metadata-Flavor: Google"` export producerip2=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip2" -H "Metadata-Flavor: Google"`
接著嘗試對生產端執行個體執行 curl 指令,並觀察傳回的來源 IP 位址。
<username>@consumer-instance:~$ curl http://$producerip1:8080 34.136.8.83 <username>@consumer-instance:~$ curl http://$producerip2:8080 34.136.8.83
您應該會看到兩個端點傳回的相同 IP 位址,相當於外部保留 IP「nat-address-1」的值。
同樣地,傳送至任何外部 IP 反射器服務的 curl 也應顯示相同的 IP,例如:
<username>@consumer-instance:~$ curl http://ifconfig.co 34.136.8.83 <username>@consumer-instance:~$ curl http://ifconfig.me 34.136.8.83 <username>@consumer-instance:~$ curl http://ip.fyr.io 34.136.8.83
暫時結束執行個體的 SSH 工作階段,我們會在設定 NAT 規則後返回 SSH。
8. 建立 Cloud NAT 規則
NAT 規則是以一般運算語言語法編寫。如要進一步瞭解規則運算式語言,請參閱規則運算式語言。
您也可以使用 gcloud 指令,將 NAT 規則新增至現有的 NAT 閘道。我們會探索建立 Cloud NAT 規則的兩個選項。
首先要建立一個 NAT 規則 YAML 檔案。
透過 Cloud Shell:
export projectid=`gcloud config get-value project` cat <<EOF >natrulesfile.txt rules: - ruleNumber: 100 match: destination.ip == '$producerip2' action: sourceNatActiveIps: - /projects/$projectid/regions/us-east4/addresses/nat-address-2 EOF
接著,讓我們使用這個規則檔案更新現有的 NAT 閘道。透過 Cloud Shell:
gcloud alpha compute routers nats update consumer-nat-gw \ --router=consumer-cr \ --rules=natrulesfile.txt \ --router-region=us-east4
您應該會看到以下輸出內容:
Updating nat [consumer-nat-gw] in router [consumer-cr]...done.
確認規則設定成功。透過 Cloud Shell:
gcloud alpha compute routers nats rules list \ --nat=consumer-nat-gw --router=consumer-cr \ --router-region=us-east4
您應該會看到以下輸出內容:
RULE_NUMBER MATCH 100 destination.ip == '35.192.142.134'
您可以試著只使用 gcloud 指令重新建立相同的規則。請先刪除現有規則。透過 Cloud Shell:
gcloud alpha compute routers nats rules delete 100 \ --nat=consumer-nat-gw --router=consumer-cr \ --router-region=us-east4 --quiet
您應該會看到以下輸出內容:
Updated [https://www.googleapis.com/compute/alpha/projects/ghaleb-s2/regions/us-east4/routers/consumer-cr]
然後使用以下 gcloud 指令重新建立規則。透過 Cloud Shell:
gcloud alpha compute routers nats rules create 100 \ --match='destination.ip == "'$producerip2'"' \ --source-nat-active-ips=nat-address-2 --nat=consumer-nat-gw \ --router=consumer-cr --router-region=us-east4
您應該會看到以下輸出內容:
Creating Rule [100] in NAT [consumer-nat-gw]...done.
再次確認規則已成功建立,請重複先前的指令。這次我們要新增 YAML 格式切換鈕,查看規則的完整詳細資料。
透過 Cloud Shell:
gcloud alpha compute routers nats rules list\ --nat=consumer-nat-gw --router=consumer-cr \ --router-region=us-east4 --format=yaml
您應該會看到以下輸出內容:
--- action: sourceNatActiveIps: - https://www.googleapis.com/compute/alpha/projects/<Project-ID>/regions/us-east4/addresses/nat-address-2 match: destination.ip == <actual IP for producer-IP 2> ruleNumber: 100
最後,請注意,「nat-address1」現在和「nat-address-2」外部位址會顯示為「IN_USE」。如要查看確認,請在 Cloud Shell 執行下列指令:
$ gcloud compute addresses list
您應該會看到下列輸出結果 (實際 IP 位址應與您保留的位址相符):
NAME ADDRESS/RANGE TYPE PURPOSE NETWORK REGION SUBNET STATUS nat-address-1 34.136.8.83 EXTERNAL us-east4 IN_USE nat-address-2 34.70.137.35 EXTERNAL us-east4 IN_USE nat-address-3 34.135.103.88 EXTERNAL us-east4 RESERVED producer-address-1 34.66.0.105 EXTERNAL us-east4 IN_USE producer-address-2 35.192.142.134 EXTERNAL us-east4 IN_USE
9. 驗證 Cloud NAT 規則行為
這時,取用端執行個體應使用已建立的 Cloud NAT 規則,透過 nat-address-2 與 Producer-address-2 進行通訊。
讓我們驗證這個行為。透過 SSH 登入用戶執行個體。透過 Cloud Shell:
gcloud compute ssh consumer-instance --zone=us-east4-a
您現在應該位於執行個體殼層。
輸出內容範例 (為求簡潔,完整輸出內容會截斷)
No zone specified. Using zone [us-east4-a] for instance: [consumer-instance]. External IP address was not found; defaulting to using IAP tunneling. ... ... <username>@consumer-instance:~$
在取用端執行個體中,先擷取兩個生產端 IP,並填入這些 IP 做為環境變數
export producerip1=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip1" -H "Metadata-Flavor: Google"` export producerip2=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip2" -H "Metadata-Flavor: Google"`
接著嘗試對生產端執行個體執行 curl 指令,並觀察傳回的來源 IP 位址。
<username>@consumer-instance:~$ curl http://$producerip1:8080 34.136.8.83 <username>@consumer-instance:~$ curl http://$producerip2:8080 34.70.137.35
現在,您應該會看到兩個端點傳回的 IP 位址不同,第一個 IP 位址應與預設行為相同。第二個 IP 位址必須等於「nat-address-2」新增的 NAT 規則。
傳送至任何外部 IP 反射器服務的 curl 仍應顯示與預設行為相同的 IP,例如:
<username>@consumer-instance:~$ curl http://ifconfig.co 34.136.8.83 <username>@consumer-instance:~$ curl http://ifconfig.me 34.136.8.83 <username>@consumer-instance:~$ curl http://ip.fyr.io 34.136.8.83
暫時結束執行個體的 SSH 工作階段,我們會透過 SSH 返回測試位址排除作業。
10. 更新 &刪除 Cloud NAT 規則
您可以更新現有的 Cloud NAT 規則。舉例來說,您可以連結新的 IP 位址,並排除與現有規則相關聯的現有 IP 位址。
讓我們更新 NAT 規則檔案,如下所示
透過 Cloud Shell:
export projectid=`gcloud config get-value project` cat <<EOF >natrulesfile.txt rules: - ruleNumber: 100 match: destination.ip == '$producerip2' action: sourceNatDrainIps: - /projects/$projectid/regions/us-east4/addresses/nat-address-2 sourceNatActiveIps: - /projects/$projectid/regions/us-east4/addresses/nat-address-3 EOF
這個新檔案現已取代「nat-address-2」就會處於排除狀態然後新增「nat-address-3」都處於啟用狀態這樣應該可讓使用 nat-address-2 的現有連線正常終止,而僅使用 nat-address-3 建立新連線。
接著,讓我們使用這個規則檔案更新現有的 NAT 閘道。透過 Cloud Shell:
gcloud alpha compute routers nats update consumer-nat-gw \ --router=consumer-cr \ --rules=natrulesfile.txt \ --router-region=us-east4
您應該會看到以下輸出內容:
Updating nat [consumer-nat-gw] in router [consumer-cr]...done.
確認規則設定成功。透過 Cloud Shell:
gcloud alpha compute routers nats rules list \ --nat=consumer-nat-gw --router=consumer-cr \ --router-region=us-east4 --format=yaml
您應該會看到以下輸出內容:
--- action: sourceNatActiveIps: - https://www.googleapis.com/compute/alpha/projects/ghaleb-s2/regions/us-east4/addresses/nat-address-3 sourceNatDrainIps: - https://www.googleapis.com/compute/alpha/projects/ghaleb-s2/regions/us-east4/addresses/nat-address-2 match: destination.ip == '35.192.142.134' ruleNumber: 100
請注意,「nat-address-2」已進入排除狀態我們會自行決定是否使用正確的 NAT IP,驗證來自消費者虛擬私有雲的新連線。
最後,如要從 Cloud NAT 閘道刪除 NAT 規則,並還原為預設行為,您可以使用下列 gcloud 指令。透過 Cloud Shell:
gcloud alpha compute routers nats rules delete 100 \ --nat=consumer-nat-gw --router=consumer-cr \ --router-region=us-east4 --quiet
您應該會看到以下輸出內容:
Updated [https://www.googleapis.com/compute/alpha/projects/ghaleb-s2/regions/us-east4/routers/consumer-cr]
如要確認不再存在 NAT 規則,請使用 NAT 閘道「describe」指令
gcloud alpha compute routers nats describe consumer-nat-gw \ --router=consumer-cr --router-region=us-east4
您應該會看到以下輸出內容:
enableEndpointIndependentMapping: false name: consumer-nat-gw natIpAllocateOption: MANUAL_ONLY natIps: - https://www.googleapis.com/compute/alpha/projects/ghaleb-s2/regions/us-east4/addresses/nat-address-1 sourceSubnetworkIpRangesToNat: ALL_SUBNETWORKS_ALL_IP_RANGES
請注意,這裡不會顯示「規則」:都會出現在輸出 YAML 中表示未設定任何網路位址轉譯 (NAT) 規則。
11. 清除步驟
為避免週期性費用,請刪除與本程式碼研究室相關聯的所有資源。
請先刪除所有執行個體。
透過 Cloud Shell:
gcloud compute instances delete consumer-instance \ producer-instance-1 producer-instance-2 \ --zone us-east4-a --quiet
預期的輸出內容:
Deleted [https://www.googleapis.com/compute/v1/projects/<Project Id>/zones/us-east4-a/instances/consumer-instance]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project Id>/zones/us-east4-a/instances/producer-instance-1]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project Id>/zones/us-east4-a/instances/producer-instance-2].
接著,請刪除 Cloud Router。透過 Cloud Shell:
gcloud compute routers delete consumer-cr \ --region us-east4 --quiet
您應該會看到以下輸出內容:
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/routers/consumer-cr].
釋出所有外部 IP 位址。透過 Cloud Shell:
gcloud compute addresses delete nat-address-1 \ nat-address-2 nat-address-3 producer-address-1 \ producer-address-2 --region us-east4 --quiet
您應該會看到以下輸出內容:
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-1]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-2]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-3]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/producer-address-1]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/producer-address-2].
刪除虛擬私有雲防火牆規則。透過 Cloud Shell:
gcloud compute firewall-rules delete consumer-allow-iap \ producer-allow-8080 --quiet
您應該會看到以下輸出內容:
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/firewalls/consumer-allow-iap]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/firewalls/producer-allow-8080].
刪除子網路。透過 Cloud Shell:
gcloud compute networks subnets delete consumer-e4 \ producer-e4 --region=us-east4 --quiet
您應該會看到以下輸出內容:
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/subnetworks/consumer-e4]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/subnetworks/producer-e4].
最後先刪除虛擬私有雲透過 Cloud Shell:
gcloud compute networks delete consumer-vpc \ producer-vpc --quiet
您應該會看到以下輸出內容:
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/networks/consumer-vpc]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/networks/producer-vpc].
12. 恭喜!
您已完成 Cloud NAT 規則研究室!
涵蓋內容
- 如何設定 Cloud NAT 閘道,為 NAT 規則做好準備。
- 如何使用一般運算語言 (CEL) 設計 NAT 規則。
- 如何建立 NAT 規則並附加至 NAT 閘道。
- 如何從執行個體測試 NAT 規則。
- 如何更新 NAT 閘道規則。
- 如何刪除 NAT 規則並還原預設的 Cloud NAT 行為。
後續步驟
- 建立更複雜的 NAT 規則進行實驗,例如這個範例
- 瞭解如何排除 NAT IP 位址,並觀察連線影響。
- 進一步瞭解 Google Cloud Platform 的網路功能
©Google, Inc. 或其關係企業。版權所有。請勿散佈。