[實作筆記] Google NAT 簡介與實作

前情提要

在打造安全的 VM 環境時,常常會遇到一個經典的矛盾點:
我們希望 VM 保持隱蔽,避免直接暴露於網際網路以減少安全風險,但同時又需要對外存取資源。
例如在開發或維運階段,像是執行 npm install、apt-get update,甚至提供給合作第三方的白名單 IP 等需求,往往都依賴外部下載與連線。

因此,我們的需求很明確:

  • VM 非必要時,不提供 Public IP。
  • VM 在發出 Request 時,需要擁有一個固定的對外 IP 地址。

傳統機房的解決方案

在傳統機房環境中,透過 NAT (Network Address Translation) 伺服器或防火牆設備,就能實現內部網路的安全管理。

內部流量管理: 內部 VM 使用私有 IP 位址,對外流量透過 NAT 進行轉換。
控制風險: 透過 NAT,內部伺服器可以訪問外部網路,但外部無法直接存取內部資源。
然而,傳統機房的設定通常需要額外的硬體設備,並增加了維護成本。

GCP 的解決方案 NAT

在 GCP 上,這個問題有一個優雅的解法:Cloud NAT。

無須公有 IP: Cloud NAT 允許私有 VM 不需配置公有 IP,就能存取外部網路。
集中管理: 透過 VPC 網路層級的 NAT 設定,簡化整體網路架構。
彈性擴展: Cloud NAT 可以根據流量自動擴展,減少單點故障風險。

NAT

實作筆記

步驟 1: 建立 VPC 網路

在 GCP 控制台中,前往 VPC 網路,選擇 建立 VPC 網路。
設定一個新的 VPC 網路,並確保 VM 的子網路設為 私有(Private)。這樣做可以保護 VM 不被直接暴露於公共網路。
實務上我選擇 default

步驟 2: 配置 Cloud NAT

前往 VPC 網路 > Cloud NAT,並選擇 建立 NAT 網關。
在設置過程中,選擇對應的子網路和路由(Route)設定。這樣可以確保 VM 在沒有 Public IP 的情況下仍能夠透過 NAT 網關訪問外部網路。
配置完成後,Cloud NAT 將會自動幫助 VM 處理對外的連線請求,而不需要直接公開 VM 的 IP。

步驟 3: 配置 Public IP(如果需要)

若要讓 VM 直接對外發送請求或開放服務,可以在創建 VM 時為其配置 Public IP。
在 Google Cloud Console 中創建虛擬機時,選擇 外部 IP 設為 靜態(static),這樣可以確保 Public IP 地址不會變動。
當 VM 配置了 Public IP,所有對外的請求將會直接通過這個 IP 進行。

心得

Cloud NAT 的設計,讓我們可以兼顧安全性與便利性。
關鍵優勢:

簡單配置: 不需像傳統 NAT 那樣繁複的硬體設置。
靈活性高: 無論是開發環境還是正式部署,都能輕鬆應對。
成本效益: 減少了維運成本,同時保護了內部資源。

參考

(fin)

Please enable JavaScript to view the Gitalk. :D