理解 Google Cloud VPC 網路
虛擬私有雲 (Virtual Private Cloud, VPC) 是 Google Cloud 中定義網路連通性的基礎。它為你的虛擬機 (VM)、容器 (GKE) 和負載平衡器提供了一個邏輯隔離的私有網路環境。對於 Associate Cloud Engineer (ACE) 來說,網路通常是最抽象也最容易失分的部分。你需要理解 VPC 是全球資源 (Global Resource),而子網路 (Subnets) 是區域資源 (Regional Resource)。
GCP 的網路架構與傳統資料中心 (IDC) 或其他雲端平台(如 AWS)有很大不同,特別是它的全球化能力和彈性定義。
白話文解釋
1. 城市的交通網路 (交通號誌類比)
- VPC (全球網路):整個國家的高速公路系統。
- 子網路 (Subnets):城市裡的街道。每條街道都在特定的地區 (Region)。
- 防火牆規則 (Firewall Rules):紅綠燈和交警。他們決定哪些車(流量)可以進入,哪些必須被攔下。
- 路由 (Routes):導航系統。它告訴流量「要去 B 地,你必須經過 A 出口」。
2. 公司的辦公大樓 (辦公室類比)
- VPC: 公司的整棟大樓。
- 子網路: 大樓裡的辦公區(如 3 樓是研發部,4 樓是財務部)。
- 網路標籤 (Network Tags): 員工身上的部門掛牌。交警(防火牆)可以說:「只允許掛著『研發』掛牌的人進入實驗室」。
3. 多功能瑞士軍刀 (瑞士刀類比)
- VPC 對等互連 (VPC Peering): 兩把軍刀之間的連接器。讓兩個獨立的網路像是一個網路一樣互相通訊。
- Cloud NAT: 軍刀裡的單向透鏡。讓內部的工具(私有 VM)可以看到外面,但外面的人看不到裡面。
建立 VPC 網路與子網路
全球 VPC 與區域子網路
VPC 是全球性的。這意味著一個 VPC 可以跨越多個區域 (Regions),而不需要透過複雜的 VPN 或連結。但是,子網路 (Subnet) 必須屬於特定的區域。 Source ↗
- 預設 VPC (Default VPC): 每個專案都有一個,預裝了各區域的子網路和預設防火牆規則(建議在生產環境中刪除或自定義)。
- 自動模式 VPC (Auto Mode VPC): 自動在每個區域建立子網路。
- 自定義模式 VPC (Custom Mode VPC,推薦):手動定義子網路及其 IP 範圍 (CIDR),提供更好的安全性與管理性。
設定防火牆規則與網路標籤
防火牆規則基礎
防火牆規則決定了流量是否允許通過。
- 方向 (Direction): 入站 (Ingress) 或 出站 (Egress)。
- 動作 (Action): 允許 (Allow) 或 拒絕 (Deny)。
- 優先級 (Priority): 0-65535,數字越小優先級越高。
網路標籤 (Network Tags)
網路標籤 (Network Tags) 是防火牆規則的最佳拍檔。你不必手動輸入每個 VM 的 IP 地址,只需將 'web-server' 標籤貼在 VM 上,並設定防火牆規則為 '允許流量進入標籤為 web-server 的 VM'。 Source ↗
- 服務帳戶 (Service Accounts): 另一種更安全的方法是使用服務帳戶作為防火牆的來源或目標。
理解路由與對等互連
路由 (Routes)
路由告訴 VPC 如何處理目的地不在子網路範圍內的流量。
- 預設路由 (Default Route):
0.0.0.0/0指向網際網路閘道 (Internet Gateway)。 - 自定義路由 (Custom Routes): 例如將流量導向 VPN 閘道或某個特定的 VM(如網路防火牆設備)。
VPC 網路對等互連 (VPC Network Peering)
VPC Peering 允許兩個不同專案(甚至不同組織)的 VPC 內部互通。流量保持在 Google 的私有骨幹網路上,不會經過公共網際網路。 Source ↗
- 注意:IP 範圍不能重疊。Peering 不具備傳遞性 (Non-transitive),如果 A 與 B Peer,B 與 C Peer,A 不會自動與 C Peer。
共用 VPC:多專案網路管理
對於大型企業,管理數十個專案的網路非常困難。共用 VPC (Shared VPC) 解決了這個問題。
- 宿主專案 (Host Project): 包含 VPC 和子網路的「主機」專案。由網路團隊管理。
- 服務專案 (Service Projects): 連結到宿主專案的「服務」專案。開發團隊在這裡部署 VM,但使用的是宿主專案的網路。
共用 VPC 實現了管理與技術的分離。網路工程師控制網路(宿主),開發工程師使用資源(服務)。 Source ↗
生產環境在 ACE 考試裡的標準答案是 Custom Mode VPC(用 gcloud compute networks create my-vpc --subnet-mode=custom 建立)搭配 Shared VPC,由宿主專案 (Host Project) 持有子網路,服務專案 (Service Projects) 只負責部署資源。Auto Mode 只適合學習用,因為它會在每個 region 預先建立固定 /20 的子網路,很容易與後續的 VPC Peering 或地端 CIDR 重疊。
Source ↗
考試陷阱:VPC Network Peering 看起來像可以串成 mesh,但它沒有傳遞性 (non-transitive)──就算 VPC-A peer VPC-B、VPC-B peer VPC-C,VPC-A 仍然無法存取 VPC-C。而且只要 subnet CIDR 重疊就無法建立 peering,所以 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16 的位址規劃必須在 peering 之前做好,VM 部署後沒辦法重新切 IP。
Source ↗
私有 Google 存取權與 Cloud NAT
私有 Google 存取權 (Private Google Access)
讓「只有內部 IP」的 VM 能夠存取 Google API(如 Cloud Storage 或 BigQuery)。
- 必須在子網路層級啟用。
Cloud NAT (網路位址轉譯)
考試陷阱:如果你有一台 VM 為了安全沒有分配外部 IP (Public IP),但它需要下載軟體更新,你應該部署 Cloud NAT 而非分配外部 IP。 Source ↗
透過 gcloud CLI 管理網路
# 建立一個自定義 VPC
gcloud compute networks create my-vpc --subnet-mode=custom
# 建立子網路
gcloud compute networks subnets create my-subnet \
--network=my-vpc \
--region=us-central1 \
--range=10.0.0.0/24
# 建立防火牆規則
gcloud compute firewall-rules create allow-http \
--network=my-vpc \
--allow=tcp:80 \
--target-tags=web-server
建立 VPC 的指令是 gcloud compute networks create,生產環境一律加 --subnet-mode=custom。Auto Mode 雖然開箱即用,但它的 /20 預設子網路範圍會擋住未來的 VPC Peering 與 Cloud VPN/Interconnect 規劃。
Source ↗
VPC 服務控制 (VPC Service Controls, VPC SC)
這是一個高階安全功能,它在 Google Cloud 服務周圍建立了一個「安全邊界」,防止資料被意外洩漏到組織外部,即便使用者擁有正確的 IAM 權限。
VPC 網路最佳實踐
- 最小化外部 IP 的使用:優先使用堡壘機 (Bastion Host) 或 Identity-Aware Proxy (IAP) 來存取私有 VM。
- 優先選用自定義模式 VPC:避免預設子網路帶來的 IP 衝突。
- 利用優先級管理規則:例如建立一條優先級 65535 的「拒絕所有」規則,然後根據需要建立高優先級的「允許」規則。
- 監控流量日誌 (Flow Logs):開啟 VPC Flow Logs 以記錄所有的網路流量,用於審計和故障診斷。
ACE 考試的常見場景
- 情境:你需要連接兩個位於不同專案中的 VPC。
- 解決方案:使用 VPC 網路對等互連 (VPC Network Peering)。
- 情境:你需要讓私有 VM 存取網際網路,但不想讓網際網路存取 VM。
- 解決方案:部署 Cloud NAT。
- 情境:你發現某台 VM 無法透過 SSH 連線。
- 解決方案:檢查防火牆是否允許 Port 22,或檢查 VM 是否貼了正確的標籤 (Tag)。
常見問題 (FAQ)
Q1: VPC 是區域性的還是全球性的? 答:VPC 是全球性的,但其中的子網路 (Subnets) 是區域性的。
Q2: 什麼是預設網路 (Default Network)?
答:每個專案預設都有一個名為 default 的網路,它在每個區域都有一個子網路,並有一組寬鬆的防火牆規則。
Q3: VPC Peering 會收費嗎? 答:Peering 本身不收費,但跨區域的流量傳輸費(Egress)依然適用。
Q4: 什麼是 Cloud Router? 答:它主要用於與外部網路(如你的辦公室)透過動態路由 (BGP) 交換路由資訊,常用於 Cloud VPN 或 Dedicated Interconnect。
Q5: 可以在 VPC 內使用我自己的 IP 位址嗎? 答:可以,GCP 支援 Bring Your Own IP (BYOIP),但這通常適用於特定的合規場景。
ACE 總結清單
- 區分 VPC (Global) 與 子網路 (Regional)。
- 熟記防火牆規則的四大要素(方向、動作、標籤、優先級)。
- 理解 VPC Peering (連接) 與 Shared VPC (集中管理) 的差異。
- 知道私有 Google 存取權與 Cloud NAT 的使用時機。
- 掌握
gcloud compute networks指令族群。