1. 總覽
Cloud NAT 是功能強大的工具,可讓 Compute Engine 和 Google Kubernetes Engine (GKE) 工作負載以可擴充且安全的方式存取網際網路資源,不必使用外部 IP 位址,就能避免工作負載暴露於外部存取。
Cloud NAT 採用無 Proxy 設計,直接在 Andromeda SDN 層實作 NAT。因此,工作負載的效能不會受到影響,而且可以輕鬆擴充至多個 VM、區域和 VPC。
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 網路導覽,例如「Networking in 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 專案中不得重複,且一經設定即無法變更。Cloud 控制台會自動產生專屬字串,通常您不需要在意該字串為何。在大多數程式碼研究室中,您需要參照專案 ID (通常會標示為
PROJECT_ID),因此如果您不喜歡該字串,可以產生另一個隨機字串,或嘗試使用自己的字串,看看是否可用。專案建立後,系統就會「凍結」該值。
- 接著,您必須在 Cloud 控制台中啟用帳單,才能使用 Google Cloud 資源。
完成本程式碼研究室的費用應該不高,甚至完全免費。請務必按照「清除」部分的指示操作,瞭解如何停用資源,避免在本教學課程結束後繼續產生帳單費用。Google Cloud 新使用者可參加價值$300 美元的免費試用計畫。
啟動 Cloud Shell
雖然可以透過筆電遠端操作 Google Cloud,但在本程式碼研究室中,您將使用 Google Cloud Shell,這是可在雲端執行的指令列環境。
在 GCP 主控台,按一下右上角工具列的 Cloud Shell 圖示:

佈建並連線至環境的作業需要一些時間才能完成。完成後,您應該會看到如下的內容:

這部虛擬機器搭載各種您需要的開發工具,並提供永久的 5GB 主目錄,而且可在 Google Cloud 運作,大幅提升網路效能並強化驗證功能。本實驗室的所有工作都可在瀏覽器上完成。
3. 實驗室設定
在本實驗室中,您將使用專案,並建立兩個虛擬私有雲,每個虛擬私有雲都有一個子網路。您將預留外部 IP 位址,然後建立及設定 Cloud NAT 閘道 (搭配 Cloud Router)、兩個生產者執行個體和一個消費者執行個體。驗證預設 Cloud NAT 行為後,您將建立 Cloud NAT 自訂規則並驗證其行為。
網路架構總覽:

4. 保留外部 IP 位址
請保留本實驗室中要使用的所有外部 IP 位址。這有助於您在消費者和生產者 VPC 中編寫所有相關的 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」,提供面向網際網路的服務。
首先,請建立 VPC。透過 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
下一步是建立兩個 Producer 執行個體。
生產者執行個體會在 Docker 容器中執行 IP 迴響服務,該容器可在 Docker Hub 上取得 (原始碼位於服務作者的 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 和執行個體
您已建立生產端服務,現在可以建立用戶端 VPC 和其 Cloud NAT 閘道。
建立虛擬私有雲和子網路後,我們會新增簡單的輸入防火牆規則,允許 TCP 來源 IP 範圍的 IAP。這樣我們就能使用 gcloud 直接透過 SSH 連線至消費者執行個體。
接著,我們會在手動分配模式中建立簡單的 Cloud NAT 閘道,並將保留的「nat-address-1」位址與其建立關聯。在程式碼研究室的後續部分,我們會更新閘道的設定,加入自訂規則。。
首先,請建立 VPC。透過 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,以便稍後在執行個體中參照。透過 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,並填入環境變數
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"`
接著,請嘗試對兩個 Producer 執行個體執行 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,並填入環境變數
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"`
接著,請嘗試對兩個 Producer 執行個體執行 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 位址應與預設行為相同。新增 NAT 規則後,第二個 IP 位址應等於「nat-address-2」。
根據預設行為,對任何外部 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 閘道說明指令
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 中沒有「rules:」區段。表示未設定任何 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. 或其關係企業。版權所有。請勿散布。