🗺️ GCP 服務地圖
網路與內容傳遞・VPC 網路・ACE/PCSE/PCNE

VPC 網路、子網路與防火牆規則:一張全域網路,一本依序核對的守則

習慣 AWS 或 Azure 的人,第一次開 Google Cloud 常會問:為什麼一個 VPC 就能放台灣和美國的子網路?防火牆規則要掛在哪裡?這一頁讓你看懂子網路怎麼切,以及一個封包從階層式政策、VPC 規則到隱含動作,最後命中哪一條。

防火牆規則比對模擬器 子網路規劃計算器 控制台/gcloud/Terraform 三種做法

💡 先搞懂問題

虛構公司「青松物流」的工程師第一次在 Google Cloud 開了一台 VM 放訂單查詢網站。新專案預設帶了一個名叫 default 的網路,他直接用它,VM 也順手給了外部 IP。上線一週後,資安顧問指出幾件事:default 網路預先建好的規則把 SSH(TCP 22)與 RDP(TCP 3389)開給了 0.0.0.0/0,也就是整個網際網路;網站和資料庫的 VM 混在同一段位址裡;公司明年要在美國開客服中心,IP 規劃要先想好,免得以後接 VPN 撞號。

他有 AWS 的經驗,第一個念頭是「台灣一個 VPC、美國一個 VPC,再做對等互連」。第二個念頭是「SSH 太危險,加一條拒絕 22 的規則就好」。他之前為了測試方便,自己建過一條優先順序 1000、允許 SSH 來自 0.0.0.0/0 的規則;這次新增的拒絕規則填了優先順序 2000,結果 SSH 照樣連得進來。這兩個念頭都卡在同一件事:Google Cloud 的網路模型和另外兩家不太一樣。

先把名詞對齊。VPC 網路(Virtual Private Cloud network)是你在專案(project)裡擁有的私人網路,它是全域資源(global),本身沒有位址範圍,也不綁任何區域。位址範圍放在子網路(subnet)上,子網路是區域資源(regional):建在某個區域(Region),例如 asia-east1(台灣),並涵蓋這個區域裡所有的可用區(Zone)。所以台灣和美國的子網路可以放在同一個 VPC,彼此用內部 IP 直接互通,流量走 Google 的骨幹網路。

流量過濾靠VPC 防火牆規則(VPC firewall rules)。每條規則屬於整個 VPC,而不是某個子網路或某張網卡;它有方向(輸入 ingress/輸出 egress)、優先順序(priority,0~65535,數字越小越先比)、動作(允許 allow/拒絕 deny)、目標(target)與來源或目的地範圍。目標決定這條規則套用到哪些 VM:整個網路的所有執行個體、帶某個網路標記(network tag)的執行個體,或使用某個服務帳戶(service account)的執行個體。新手最常卡的地方有四個:以為拒絕規則一定贏(其實要看優先順序,數字小的先決定);以為同一個子網路裡的 VM 預設可以互連(其實沒有規則允許的輸入都會被擋);以為要自己寫回應封包的規則(其實規則有狀態,回應自動放行);以為 VPC 規則是唯一一層(其實機構或資料夾的階層式防火牆政策(hierarchical firewall policy)會先比對)。

qingsong-vpc(全域資源,本身沒有 IP 範圍) 防火牆規則與路由:屬於整個 VPC,在每台 VM 網卡旁分散執行 區域 asia-east1(台灣) 可用區 a 可用區 b 可用區 c 子網路 web-tw 10.10.0.0/24 橫跨 a、b、c 三個可用區 web-1(a) web-2(c) 子網路 db-tw 10.10.1.0/24 沒有外部 IP,連外走 Cloud NAT db-1(b) 區域 us-central1(美國) 可用區 a 可用區 b 可用區 c 子網路 web-us 10.20.0.0/24 同一個 VPC,不必另建網路 cs-1(b) 還沒用到的位址空間留給未來 (例如 10.20.1.0/24 給資料庫) web-1 → cs-1 用內部 IP 直連,流量走 Google 骨幹網路 (前提是防火牆規則允許;位址為示意)
一個 VPC 就能橫跨兩個區域。子網路才有 IP 範圍,而且一個子網路涵蓋整個區域的所有可用區,所以 web-1 在可用區 a、web-2 在可用區 c,仍在同一個子網路裡。防火牆規則掛在 VPC 層級,套用到所有子網路裡符合目標條件的 VM。

生活比喻:跨縣市的連鎖社區

想像一家建設公司在全國經營一個「青松連鎖社區」。社區只有一個名字、一套管委會,但實際的房子分散在各縣市:台北一棟大樓、台中一棟大樓、高雄一棟大樓。每棟大樓各自分到一段門牌號碼,大樓有好幾層,住戶分布在不同樓層;不同縣市的住戶要互相拜訪,走的是社區自己的專用接駁道路,不用上公共道路。

社區管委會訂了一本統一的門禁守則,每一條都有編號:「第 100 條:192.0.2 開頭的車牌一律不准進」「第 1000 條:送貨到穿綠色背心的住戶家,走 443 號門可以進」……警衛從最小的編號往下核對,第一條對得上的守則就決定結果。守則還會寫明適用的人:全體住戶、穿某個顏色背心的住戶,或持某家公司識別證的住戶。守則最後印著兩條沒有編號的總則:「外人沒有守則允許就不准進」「住戶出門不攔」。訪客進門時登記過,離開時警衛不會再翻一次守則。比這本守則更優先的,是建設公司總部發下來的全國規定,每個社區都得先照它檢查。

回到 Google Cloud:剛才的整個連鎖社區對應的就是VPC 網路,它是全域資源;各縣市的大樓是子網路,屬於一個區域,門牌號碼段是子網路的 IPv4 範圍;大樓裡的樓層是可用區,子網路涵蓋該區域所有可用區;社區專用接駁道路是 Google 的骨幹網路。管委會的守則是VPC 防火牆規則:編號是優先順序(0~65535,數字小先比),背心是網路標記,公司識別證是服務帳戶;兩條總則是隱含規則(輸入拒絕、輸出允許);不必再翻守則就放行離開,對應的是規則有狀態;總部的全國規定是機構或資料夾層級的階層式防火牆政策,它比 VPC 規則先評估。
連鎖社區(比喻) Google Cloud 的正式名稱 全國一個連鎖社區 各縣市的一棟大樓 大樓裡的各個樓層 每棟大樓的門牌號碼段 社區專用接駁道路 守則編號,小的先核對 背心顏色/公司識別證 總部發下來的全國規定 VPC 網路(全域) 子網路(區域) 可用區(子網路全部涵蓋) 子網路的 IPv4 範圍 Google 骨幹網路 優先順序 0~65535 網路標記/服務帳戶 階層式防火牆政策
左欄是比喻,右欄是 Google Cloud 的正式名稱。最容易被忽略的是第三列:子網路不是蓋在某一層樓,而是整棟大樓(整個區域的所有可用區)都算在內,這點和 AWS 的子網路固定在一個可用區不同。

這個比喻有幾個地方和實際不同。第一,社區的警衛站在大門口,VPC 防火牆規則卻是在每台 VM 的網卡旁分散執行,沒有一台集中的防火牆設備,所以同一個子網路裡的兩台 VM 互連,一樣要過規則;default 網路之所以內部互通,是因為它預先建了一條允許 10.128.0.0/9 的 default-allow-internal 規則,自己建的 VPC 沒有這條。第二,背心誰都能穿:能編輯 VM 的人就能改網路標記,等於自己換背心;服務帳戶則要有 IAM 權限才能指定給 VM,所以要求嚴謹的環境用服務帳戶當目標比較穩。第三,青松物流那條「優先順序 2000 拒絕 SSH」沒有用,是因為他自己建的允許規則是 1000,數字小的先決定;拒絕只有在優先順序相同時才勝過允許。第四,回應自動放行只對「已允許的連線」有效,而且有狀態追蹤:連線閒置太久(官方文件寫至少每 10 分鐘要有一個封包)追蹤就會失效。

Google Cloud AWS/Azure 1 個 VPC(全域) asia-east1 子網路 跨所有可用區 us-central1 子網路 跨所有可用區 內部 IP 直接互通 防火牆規則整個 VPC 共用 台灣區域的網路 子網路(AZ 1) 子網路(AZ 2) AWS 子網路綁 1 個 AZ 美國區域的網路 子網路 子網路 跨區要另外做對等互連或 Transit Gateway/Virtual WAN 等元件 跨區不需要額外的連接元件 Azure 的子網路可涵蓋區域內的可用性區域;AWS 子網路固定在一個 AZ
同樣是「台灣和美國都要有主機」:Google Cloud 一個 VPC、兩個區域子網路就完成;AWS 的 VPC 與 Azure 的 VNet 都綁單一區域,要兩個網路再連起來。這也是 Google Cloud 考試最愛拿來和另外兩家比較的地方。

🎮 互動實驗室一:防火牆規則比對模擬器

情境:青松物流的 VPC qingsong-vpc 裡有兩台 VM(見下方卡片)。選好來源、目的地、通訊協定與連接埠後按「送出封包」,畫面會依官方的預設評估順序逐層比對:先看機構的階層式防火牆政策,再看 VPC 防火牆規則,接著是網路防火牆政策(本情境沒有建立,會直接略過),最後是隱含動作。來源是 VM 時會先檢查它的輸出,目的地是 VM 時再檢查它的輸入。VPC 規則那一層會先篩掉方向或目標不符的規則,在符合的規則裡取優先順序數字最小的;同一個優先順序同時有允許與拒絕時,拒絕勝出。你可以直接改優先順序、刪除或新增規則,或切換成其他規則組合,目標是讓下方五個任務全部達成。

web-1(asia-east1-a)內部 IP 10.10.0.10、有外部 IP
網路標記 web・服務帳戶 web-sa
db-1(asia-east1-b)內部 IP 10.10.1.20、沒有外部 IP
網路標記 db・服務帳戶 db-sa
VPC 防火牆規則:

① 階層式防火牆政策:qingsong-org(機構層級)

屬於 Cloud NGFW,由資安團隊在機構或資料夾設定,比任何 VPC 規則都先評估。規則依優先順序比對,允許或拒絕就直接結束;goto_next 表示「交給下一層決定」,沒有規則符合時也等同 goto_next。

② VPC 防火牆規則:qingsong-vpc

只看方向與目標都符合的規則,再挑優先順序數字最小的那一條;同一優先順序拒絕勝過允許。優先順序欄位可以直接改(0~65535)。

③ 網路防火牆政策(全域、區域)

本情境沒有建立,評估時直接略過。實務上可以把規則集中在網路防火牆政策,一份政策關聯到多個 VPC。

④ 隱含動作

前面都沒有允許或拒絕時才會走到這裡,它不是可以刪除的規則。

還沒送出封包。
新增 VPC 防火牆規則
小寫英數與連字號,1~63 字元
0~65535,數字小先比
也可以寫 tag:web 當來源網路標記
例:tcp:22、tcp:80,tcp:443、udp:53、icmp、all
任務達成 0 / 5
已送出封包 0
畫面說明:載入中。

🎮 互動實驗室二:子網路規劃計算器

左邊先選 VPC 的子網路建立模式。自訂模式下,每一列是一個子網路:填名稱、選區域、填主要 IPv4 範圍(CIDR)。計算器會算出每個子網路的位址總數、Google Cloud 保留的 4 個位址與可用數量,並檢查格式、大小(最小 /29)、禁用範圍,以及同一個 VPC 裡所有子網路不能重疊,不管它們是不是在同一個區域。也可以填入地端或要對等互連的網段,看會不會撞號。下方的「擴充試算」示範子網路只能擴大、不能縮小。切到自動模式,可以看到 Google Cloud 自動在每個區域建立的 /20 子網路。

一、VPC 與子網路

子網路建立模式(Subnet creation mode)
子網路名稱區域主要 IPv4 範圍
位址總數 = 2(32 − n)可用 = 總數 − 4
之後要接 Cloud VPN、Interconnect 或 VPC 網路對等互連的網段,不能和子網路重疊

二、檢查結果

擴充試算:主要範圍只能擴大
畫面說明:載入中。

🛠️ 操作教學:建立 VPC、子網路、防火牆規則與 Cloud NAT

跟著 8 個步驟,在左邊的示意控制台替青松物流建立一個自訂模式 VPC、一個開啟私人 Google 存取的子網路、兩條防火牆規則(網站對外開放 HTTP/HTTPS、只讓 IAP 轉送 SSH),以及讓沒有外部 IP 的 VM 能連外的 Cloud Router 與 Cloud NAT。你填的名稱、區域、IP 範圍與規則會即時反映到右邊的 gcloud CLI 與 Terraform;目前步驟對應的那幾行以黃色底標示。填錯時畫面會說明原因,修正後才能進到下一步。

示意畫面:簡化重繪,只保留和本主題有關的欄位;實際畫面以 Google Cloud 控制台為準。
☁ 雲端控制台my-project-id搜尋資源、文件與產品

自己動手時要注意

權限:練習用的個人專案裡,專案擁有者(Owner)就夠了;在公司專案裡請找管理員依職責授權。建立 VPC、子網路、Cloud Router 與 Cloud NAT 需要 Compute Network Admin(roles/compute.networkAdmin),但這個角色只能檢視、不能修改防火牆規則;建立或修改防火牆規則需要 Compute Security Admin(roles/compute.securityAdmin)。網路團隊與資安團隊分開授權,正是 Google Cloud 官方建議的分工方式。第一次在專案裡用 Compute Engine 時,要先啟用 Compute Engine API(compute.googleapis.com),啟用 API 需要 Service Usage Admin 之類的權限。工程師要透過 IAP 轉送 SSH,還要有 IAP-secured Tunnel User(roles/iap.tunnelResourceAccessor)角色。

費用:VPC 網路、子網路與內部 IP 本身不收費,一般的 VPC 防火牆規則屬於 Cloud NGFW Essentials 層級,也不另外收費。會產生費用的是:Cloud NAT(依 Cloud NAT 的計價方式收費,它使用的外部 IP 位址也依小時計費)、外部 IP 位址、跨區域或流出網際網路的資料傳輸,以及打開 VPC 流量記錄或防火牆規則記錄後產生的記錄量。新帳戶的 Free Trial 有 300 美元抵用金、期限 90 天(查證日期 2026-10-08),練習產生的費用會先從抵用金扣。練習完請把 Cloud NAT 與 Cloud Router 刪掉。

收尾:用 Terraform 建立的,在同一個資料夾執行 terraform destroy 就會刪除它建立的所有資源。用 gcloud 建立的,要從依賴最少的往回刪:先刪 NAT 閘道與 Cloud Router,再刪防火牆規則、子網路,最後刪 VPC 網路;子網路裡還有 VM 時刪不掉。最乾淨的做法是整個練習都開一個專用專案,結束後刪除專案,專案會先進入 30 天的待刪除狀態,期間可以復原。

# 方法一:Terraform 建立的,在範本所在資料夾執行(會列出要刪的資源,確認後輸入 yes)
terraform destroy

# 方法二:gcloud 建立的,依序刪除(名稱、區域換成自己的值)
gcloud compute routers nats delete qingsong-nat --router=qingsong-router --region=asia-east1
gcloud compute routers delete qingsong-router --region=asia-east1
gcloud compute firewall-rules delete allow-web-http-https
gcloud compute firewall-rules delete allow-ssh-from-iap
gcloud compute networks subnets delete web-tw --region=asia-east1
gcloud compute networks delete qingsong-vpc

# 方法三:整個練習專案一起刪除(專案裡所有資源都會停止並排入刪除)
gcloud projects delete my-project-id

範例裡沒有任何服務帳戶金鑰、密碼或真實的專案 ID,my-project-id 請換成自己的專案 ID。在自己的電腦上用 gcloud,先執行 gcloud auth login 以使用者帳戶登入;Terraform 則用 gcloud auth application-default login 取得應用程式預設憑證(ADC)。在 CI/CD 管線裡執行 Terraform 時,改用 Workload Identity Federation 讓管線以短期憑證扮演服務帳戶,不要下載服務帳戶金鑰檔。也可以直接在控制台開 Cloud Shell,它已經登入並裝好 gcloud 與 Terraform。

☁️ 對照 AWS 與 Azure 的做法:AWS 的 Amazon VPC 綁單一區域,子網路固定在一個可用區域(AZ);流量過濾分兩層,安全群組掛在網路介面上、有狀態但只有允許規則,網路 ACL 掛在子網路上、無狀態且依規則編號比對,回應要另外放行臨時連接埠。完整比較見 AWS 站的 VPC、子網路、安全群組與網路 ACL 互動教學。Azure 的 VNet 同樣綁單一區域,子網路可涵蓋區域內的可用性區域;網路安全性群組(NSG)有優先順序(100~4096)、可允許可拒絕、有狀態,關聯到子網路或網路介面,概念上最接近 Google Cloud 的防火牆規則,但 Google Cloud 的規則定義在整個 VPC,用標記或服務帳戶挑目標。管理連線方面,Azure 用 Bastion,Google Cloud 用 IAP TCP 轉送。見 Azure 站的 虛擬網路、NSG 與 Bastion 互動教學。

📘 原理補完

VPC 與子網路:網路是全域的,位址是區域的

VPC 網路屬於某個專案,連同它的路由與防火牆規則都是全域資源;VPC 本身沒有 CIDR,位址範圍全部放在子網路上。子網路是區域資源,涵蓋該區域的所有可用區,所以同一個子網路裡可以放不同可用區的 VM,做跨可用區的高可用時不必像 AWS 那樣每個 AZ 各切一個子網路。不同區域的子網路只要在同一個 VPC,就能直接用內部 IP 互通。

建立 VPC 時要選子網路建立模式。自動模式(auto mode)會在每個區域自動建一個子網路,範圍取自 10.128.0.0/9,每個區域一段 /20,例如 us-central1 是 10.128.0.0/20、asia-east1 是 10.140.0.0/20,日後新開的區域也會自動加上子網路。自訂模式(custom mode)一開始沒有任何子網路,區域與範圍都由你決定。新專案預設帶的 default 網路就是自動模式,還附了四條優先順序 65534 的輸入允許規則:default-allow-internal(10.128.0.0/9 的所有 TCP、UDP 與 ICMP)、default-allow-ssh(0.0.0.0/0 的 TCP 22)、default-allow-rdp(0.0.0.0/0 的 TCP 3389)與 default-allow-icmp。練習可以用它,正式環境官方建議用自訂模式:IP 可以配合地端與其他網路規劃,也才能用 IPv6 子網路。自動模式可以用 gcloud compute networks update NETWORK --switch-to-custom-subnet-mode 單向轉成自訂模式,轉了就不能回去;兩個自動模式 VPC 的範圍一定重疊,所以不能互相對等互連。

子網路的主要 IPv4 範圍最小是 /29(8 個位址),官方建議不要比 /8 更大;同一個 VPC 裡所有子網路的主要與次要範圍都不能重疊,也不能和已對等互連網路的子網路重疊。0.0.0.0/8、127.0.0.0/8、169.254.0.0/16、224.0.0.0/4、255.255.255.255/32 以及私人 Google 存取用的 199.36.153.4/30、199.36.153.8/30 都不能拿來當子網路。主要範圍可以擴大(gcloud compute networks subnets expand-ip-range),但不能縮小或替換,擴大之後也不能復原,所以一開始寧可留空間。

子網路 web-tw 的主要 IPv4 範圍 10.10.0.0/24(共 256 個位址) .0網路位址 .1預設閘道 .2 ~ .253可分配給 VM:252 個 .254倒數第二個保留給未來 .255廣播位址 可用位址 = 2^(32 − 24) − 4 = 256 − 4 = 252 /29 只剩 4 個可用;次要範圍(常給 GKE Pod 用)不保留位址 對照:AWS 每個子網路保留 5 個,所以同樣 /24 只有 251 個
Google Cloud 在每個子網路的主要 IPv4 範圍保留 4 個位址:第一個(網路位址)、第二個(預設閘道)、倒數第二個(保留給 Google Cloud 未來使用)與最後一個(廣播位址)。實驗室二的「可用」就是總數減 4。

一條防火牆規則有哪些欄位

VPC 防火牆規則屬於單一 VPC,不能跨網路共用。每條規則只有一個方向:輸入(ingress)管進入目標 VM 的封包,比對的是來源(IPv4/IPv6 範圍、來源網路標記或來源服務帳戶);輸出(egress)管目標 VM 送出的封包,比對的是目的地範圍。沒有指定方向時預設是輸入,沒有指定來源範圍時預設是 0.0.0.0/0。優先順序是 0~65535 的整數,預設 1000。動作只有允許或拒絕其中一個。通訊協定和通訊埠可以寫 tcp、udp、icmp、esp、ah、sctp、ipip 或 IANA 協定編號,連接埠只對 TCP 與 UDP 有意義,不寫就代表全部。目標可以是網路中的所有執行個體、指定的網路標記或指定的服務帳戶;網路標記和服務帳戶不能混用在同一條規則(目標與來源都一樣)。規則還可以停用(保留但不執行),也可以開啟防火牆規則記錄,事後查是哪條規則放行或擋下。

規則 allow-web-https(屬於 qingsong-vpc) 方向輸入 INGRESS 優先順序1000(預設) 動作允許 allow 協定與埠tcp:443 目標:套用到哪些 VM網路標記 web(或服務帳戶、或全部) 來源:封包從哪裡來IPv4 範圍 0.0.0.0/0 輸入規則比對「來源」;輸出規則比對「目的地範圍」 網路標記與服務帳戶不能混用;能編輯 VM 的人就能改標記 輸出規則的目的地預設 0.0.0.0/0;沒寫方向時預設輸入
讀一條規則時,先看方向決定要比對來源還是目的地,再看目標決定它套用到哪些 VM,最後才看優先順序與動作。網站規則的目標用網路標記 web,代表只有帶這個標記的 VM 會開放 443,其他 VM 不受影響。

評估順序:階層式政策先看,隱含動作最後

VPC 防火牆規則現在屬於 Cloud NGFW(Cloud Next Generation Firewall)的 Essentials 層級。同一個 Cloud NGFW 底下還有三種「防火牆政策」:設在機構或資料夾的階層式防火牆政策、可以關聯到多個 VPC 的全域網路防火牆政策,以及區域網路防火牆政策。官方文件寫明的預設評估順序是:階層式政策(先機構,再從最上層資料夾往下)→ 區域系統防火牆政策(regional system firewall policies,部分 Google 受管服務使用,實驗室省略)→ VPC 防火牆規則 → 全域網路防火牆政策 → 區域網路防火牆政策 → 隱含動作。每一層都先跳過方向或目標不符的規則,再依優先順序找第一條符合的。允許與拒絕會直接結束評估;goto_next 會把決定交給下一層;一層裡沒有規則符合時,也等同 goto_next。VPC 網路可以把 networkFirewallPolicyEnforcementOrder 改成 BEFORE_CLASSIC_FIREWALL,讓網路防火牆政策排在 VPC 防火牆規則前面,但階層式政策永遠最先。

這個順序的實際意義是:機構的資安團隊可以在階層式政策寫「一律拒絕某段惡意 IP」或「一律允許監控系統的來源」,各專案的 VPC 規則改不動它;要把決定權交給專案,就寫 goto_next。同一層裡,VPC 規則的衝突只看優先順序:數字較小的勝出;只有優先順序相同時,拒絕才勝過允許,同優先順序又同動作時結果相同,但官方說用哪一條比對是不確定的,所以別依賴它來看記錄。

① 階層式防火牆政策機構 → 最上層資料夾 → … → 專案所在資料夾 ② 區域系統防火牆政策(部分受管服務) ③ VPC 防火牆規則符合者取最小優先順序;同順序拒絕優先 ④ 全域網路防火牆政策 ⑤ 區域網路防火牆政策 ⑥ 隱含動作輸入到 VM:拒絕 輸出:允許 goto_next/沒有符合沒有符合沒有符合沒有符合沒有符合 任何一層出現 允許或拒絕 → 立刻定案 後面的層都不看 ③ 可以和 ④⑤ 對調: enforcement order 設成 BEFORE_CLASSIC_FIREWALL ① 永遠最先 專案的 VPC 規則 推翻不了機構的拒絕
這是 Cloud NGFW 官方文件寫的預設順序(查證時間 2026 年 10 月)。實驗室一把第 ② 層省略,第 ④⑤ 層沒有建立,所以你看到的是「階層式 → VPC 規則 → 隱含動作」三段。

有狀態、隱含規則,以及永遠擋或永遠放的流量

防火牆規則是有狀態(stateful)的:一條連線被允許之後,回應封包(來源與目的地對調的同一組五元組)自動放行,你也沒辦法另外寫規則擋掉它。所以輸出走隱含允許的連線,回程就算碰上「輸入一律拒絕」也能回來;反過來,輸入被允許的連線,回應也不必寫輸出規則。連線追蹤支援 TCP、UDP、SCTP 與 ICMP,連線要至少每 10 分鐘有一個封包,追蹤才會持續。

隱含動作在官方文件裡寫成「評估的最後一步」:輸入到 VM 網卡是拒絕,輸出是允許。很多教材把它畫成兩條優先順序 65535 的規則,概念相同,重點是它們不能刪除,只能用更小的數字蓋過去。另外有幾種流量不受防火牆規則控制:到中繼資料伺服器 169.254.169.254 的流量一律允許;送往外部 IP 的 TCP 25 輸出預設一律封鎖(465、587 不受影響),寫允許規則也開不了。

情況一:外部連進來 網際網路使用者203.0.113.50 輸入規則允許allow-web-https web-1:443收到 ✓ 藍色虛線:回應自動放行,不必寫輸出規則 情況二:VM 主動連出去 db-110.10.1.20 隱含允許輸出沒有規則也放行 套件伺服器198.51.100.80:443 回應雖然是「進入」db-1,但屬於已允許的連線,不會被隱含拒絕輸入擋下 db-1 沒有外部 IP,實際上要經過 Cloud NAT 才能連到網際網路 (IP 為文件保留的示意位址)
有狀態的意思是:防火牆只對「發起連線的那一個方向」做決定,回應跟著放行。這和 AWS 網路 ACL 的無狀態設計相反,所以在 Google Cloud 不需要放行臨時連接埠。

管理連線:用 IAP TCP 轉送取代對網際網路開放 SSH/RDP

把 TCP 22 或 3389 開給 0.0.0.0/0,等於讓全世界的掃描程式都能嘗試登入。Google Cloud 的建議做法是 Identity-Aware Proxy(IAP)的 TCP 轉送:工程師在自己的電腦執行 gcloud compute ssh VM_NAME --tunnel-through-iap,連線先到 IAP,IAP 檢查這個使用者有沒有 IAP-secured Tunnel User 角色(也可以加上情境感知存取條件),通過後再從 Google 的 35.235.240.0/20 這段位址連到 VM 的內部 IP。VM 不需要外部 IP,防火牆只要允許來源 35.235.240.0/20 連 22(Windows 是 3389)。權限由 IAM 集中管理,誰在什麼時候連進哪台 VM 也會留在稽核記錄。

不建議:VM 有外部 IP,22 開給 0.0.0.0/0 工程師 掃描程式 允許 tcp:22來源 0.0.0.0/0 VM有外部 IP 建議:IAP TCP 轉送,VM 不需要外部 IP 工程師 掃描程式 IAP驗證身分與角色 允許 tcp:22來源 35.235.240.0/20 VM只有內部 IP ✕ 找不到外部 IP,也不在允許的來源範圍
IAP TCP 轉送把「誰能連」從防火牆的 IP 清單,換成 IAM 角色與身分驗證。防火牆規則只需要信任 IAP 的來源範圍 35.235.240.0/20,連 VM 的外部 IP 都可以拿掉。

私有 VM 怎麼連出去:Cloud NAT 與私人 Google 存取

拿掉外部 IP 之後,VM 還要下載修補程式、呼叫外部 API。這時用 Cloud NAT:它是建在某個區域 Cloud Router 上的受管服務,由 Google 的網路堆疊分散執行,沒有一台閘道 VM 會成為單點;它只處理 VM 主動發起的連線與回應,外面無法主動連進來。Cloud NAT 是區域資源,一個區域的子網路要用同區域的 Cloud Router 與 NAT 閘道。如果 VM 只是要存取 Cloud Storage、BigQuery 這類 Google API,在子網路開私人 Google 存取(Private Google Access)就夠了,流量不會經過 NAT,也不離開 Google 網路。注意防火牆的輸出規則仍然有效:如果你用高優先順序寫了「拒絕所有輸出」,NAT 和私人 Google 存取都救不了。

區域 asia-east1 子網路 db-tw(私人 Google 存取:開) db-1(無外部 IP) Cloud Router + Cloud NAT 區域資源;只出不進;自動配置外部 IP 網際網路的套件伺服器 看到的來源是 NAT 的外部 IP Google API Cloud Storage、BigQuery… 私人 Google 存取 經 NAT 連外
同一台沒有外部 IP 的 VM,連網際網路走 Cloud NAT,連 Google API 走私人 Google 存取。兩者都只解決「怎麼出去」,進來的連線(例如網站流量)要交給負載平衡器,管理連線交給 IAP。

相似功能怎麼分

功能設定在哪裡挑目標的方式動作適合的用途
VPC 防火牆規則單一 VPC(全域)所有執行個體、網路標記、服務帳戶允許、拒絕單一網路裡的日常規則,例如網站開 443、IAP 開 22
階層式防火牆政策機構或資料夾關聯到的資源底下所有 VPC;可再指定服務帳戶等允許、拒絕、goto_next 等資安團隊的全公司底線,專案改不動
網路防火牆政策(全域/區域)政策資源,可關聯多個 VPC支援安全標記(secure tags)等,受 IAM 控管允許、拒絕、goto_next 等集中管理多個 VPC 的規則;Standard、Enterprise 層級的 FQDN、威脅情資、第 7 層檢查
Google Cloud Armor外部負載平衡器的後端服務依 IP、地理位置、第 7 層條件允許、拒絕、限速等網站的 WAF 與 DDoS 防護,在流量到達 VM 之前處理
VPC Service Controls機構裡的服務邊界專案與 Google API 服務邊界內外的 API 存取防止資料從 BigQuery、Cloud Storage 等 API 外洩,不是封包防火牆
項目Google CloudAWSAzure
虛擬網路的範圍VPC 全域,子網路屬於區域VPC 屬於區域,子網路屬於一個 AZVNet 屬於區域,子網路涵蓋區域內的可用性區域
子網路保留位址主要範圍 4 個每個子網路 5 個每個子網路 5 個
主要的流量過濾VPC 防火牆規則(VPC 層級、有狀態、允許+拒絕、優先順序 0~65535)安全群組(有狀態、只有允許)+網路 ACL(無狀態、依編號)NSG(有狀態、允許+拒絕、優先順序 100~4096)
挑目標的方式網路標記、服務帳戶、全部掛在網路介面上的安全群組關聯子網路或網路介面;應用程式安全性群組
不開公開 IP 的管理連線IAP TCP 轉送Systems Manager Session Manager 等Azure Bastion

判斷步驟

  1. 先確定網路範圍:同一個團隊、同一個機構要跨區域部署,一個自訂模式 VPC 加多個區域子網路就夠,不需要每區一個 VPC。多個專案要共用網路,再考慮共用 VPC;兩個獨立管理的網路要互通,才考慮 VPC 網路對等互連。
  2. 規劃 IP:每個子網路的主要範圍不能和同一 VPC 的其他子網路、對等網路、地端網段重疊,大小最小 /29,而且只能擴大,所以先估好未來數量,再扣掉 4 個保留位址。
  3. 寫防火牆規則前先決定目標要用什麼挑:要求嚴謹就用服務帳戶,簡單情境用網路標記,真的要全部 VM 一致才用「所有執行個體」。
  4. 對外服務只開必要的連接埠,管理連線一律走 IAP(來源 35.235.240.0/20),不要對 0.0.0.0/0 開 22 或 3389。
  5. 要擋特定流量時,確認拒絕規則的優先順序數字比對應的允許規則小;整個公司都要擋的,交給階層式防火牆政策。
  6. 沒有外部 IP 的 VM 要連外:連網際網路用同區域的 Cloud NAT,只連 Google API 開私人 Google 存取。
  7. 上線後打開防火牆規則記錄或 VPC 流量記錄,搭配 Network Intelligence Center 的 Firewall Insights 找出沒用到或被遮蔽的規則(記錄會產生費用,看需要開)。
要控制的是什麼? VM 的封包IP、協定、連接埠 網站的 HTTP攻擊與 DDoS Google API資料外洩 管理員登入SSH/RDP Cloud Armor VPC Service Controls IAP TCP 轉送 整個機構或資料夾都要套用? 階層式防火牆政策 多個 VPC 共用,或要 FQDN、威脅情資、第 7 層檢查? 網路防火牆政策 VPC 防火牆規則 是否是否
這幾個功能常一起出現在選項裡。先分清楚要控制的是封包、網站請求、API 存取還是管理員登入,再決定用哪一層;它們不是互斥的,正式環境通常會一起用。

容易考錯的地方

「VPC 是區域資源」是錯的。常見的干擾選項會寫「在每個區域各建一個 VPC 再做對等互連」來達成跨區通訊,在 Google Cloud 這是多此一舉;正確答案通常是同一個 VPC 加多個區域子網路。反過來,子網路是區域資源,所以「把子網路建在某個可用區」的選項也不對。

拒絕不一定贏。題目給兩條規則時先比優先順序,數字小的決定;只有優先順序相同時拒絕才勝過允許。要擋掉某個來源,拒絕規則的數字要比允許規則小。

網路標記 vs 服務帳戶。題目強調「防止有 VM 編輯權限的人自己開放流量」或「依身分控管」時,答案是用服務帳戶當目標或來源;網路標記只要能改 VM 就能改。兩者不能混用在同一條規則。

不要開 0.0.0.0/0 的 22。需要讓管理員 SSH 進沒有外部 IP 的 VM,答案是 IAP TCP 轉送,防火牆允許 35.235.240.0/20;Cloud NAT 是讓 VM 連出去,方向相反,不能解決這個問題。

回應不用另外寫規則。規則有狀態,干擾選項常寫「新增輸出規則允許回應流量」或「放行 1024~65535」,那是 AWS 網路 ACL 的思維。

自訂 VPC 沒有內部互通規則。從 default 網路搬到自訂 VPC 後,VM 之間突然連不上,是因為少了 default-allow-internal 那類規則,要自己加允許內部範圍或指定標記的輸入規則。

子網路只能擴大。題目問「子網路 IP 不夠用、又不想中斷服務」,答案是擴大主要範圍(expand-ip-range),而且要確認新範圍不和其他子網路重疊;「縮小範圍」或「直接改成另一段 CIDR」都做不到。相關考試:ACE 的網路設定與管理、PCSE 的邊界安全與分段、PCNE 的 VPC 設計與 Cloud NGFW 都會考到這些判斷。

✅ 自我檢測

以下 6 題都是原創題,選完會立即顯示對錯與解析,全部作答後會出現總分。目前得分:0 / 6