Cloud NAT 產品互動

本頁說明 Cloud NAT 與其他 Google Cloud 產品之間的重要互動。

路線互動

公開 NAT 閘道只能使用下一個躍點為預設網際網路閘道的路由。每個虛擬私有雲 (VPC) 網路一開始都有預設路由,目的地為 0.0.0.0/0,下一個躍點則是預設網際網路閘道。詳情請參閱「路線總覽」。

以下範例說明可能導致 公開 NAT 閘道無法運作的情況:

  • 如果您建立靜態路由,並將下一個躍點設為任何其他類型的靜態路由下一個躍點,則目的地 IP 位址與路由目的地相符的封包會傳送至該下一個躍點,而不是預設網際網路閘道。舉例來說,如果您使用執行 NAT 閘道、防火牆或 Proxy 軟體的虛擬機器 (VM) 執行個體,可以建立靜態路徑,將流量導向這些 VM 做為下一個躍點。下一個躍點 VM 需要外部 IP 位址。因此,依賴下一個躍點 VM 的 VM 流量,或下一個躍點 VM 本身,都無法使用 Public NAT 閘道。

  • 如果您建立的自訂靜態路由,下一個躍點是 Cloud VPN 通道,則 公開 NAT 不會使用該路由。舉例來說,如果靜態路由的目的地為 0.0.0.0/0,下一個躍點為 Cloud VPN 通道,流量就會導向該通道,而不是預設的網際網路閘道。因此, Public NAT 閘道無法使用該路徑。同樣地, Public NAT 閘道無法使用目的地更具體的靜態路由,包括 0.0.0.0/1 和 128.0.0.0/1。

  • 如果地端部署路由器將動態路由通告給管理 Cloud VPN 通道或 VLAN 連結的 Cloud Router,則 Public NAT 閘道無法使用該路由。舉例來說,如果地端部署路由器通告目的地為 0.0.0.0/0 的動態路由,0.0.0.0/0 會導向 Cloud VPN 通道或 VLAN 連結。即使是更具體的目的地 (包括 0.0.0.0/1 和 128.0.0.0/1),也適用這項行為。

Private NAT 使用下列路徑:

  • NCC 子網路路由和 NCC 動態路由:
    • 如果是 VPC 輪輻之間的流量,NAT 閘道會使用子網路路徑。
    • 對於同時具有 VPC 輪輻和混合式輪輻的 NCC 中樞,NAT 閘道會使用子網路路徑和動態路徑。
  • 本機動態路由:如果是 Hybrid NAT,NAT 閘道會使用 Cloud Router 透過 Cloud Interconnect 或 Cloud VPN 學習的動態路由。
  • 本機子網路路由和本機靜態路由 (僅限 NAT64):NAT 閘道會使用這些路由,轉送相同 VPC 網路內的流量。

如要進一步瞭解 Private NAT 中的路由,請參閱「路由和防火牆規則」。

Private Google Access 互動

公開 NAT 閘道一律不會對傳送至所選Google API 和服務的外部 IP 位址的流量執行 NAT。而是當您設定 公開 NAT 閘道套用至該子網路範圍 (主要或次要) 時,Google Cloud 會自動為子網路 IP 位址範圍啟用 Private Google Access。只要閘道為子網路的範圍提供 NAT,私人 Google 存取權就會套用至該範圍,且無法手動停用。

Public NAT閘道不會改變 Private Google Access 的運作方式。詳情請參閱「Private Google Access」。

Private NAT 閘道不適用於 Private Google Access。

Shared VPC 互動

Shared VPC可讓單一機構中的多個服務專案,使用主專案中的共用虛擬私有雲網路。如要為使用 Shared VPC 網路的服務專案中的 VM 提供 NAT,您必須在主專案中建立 Cloud NAT 閘道。

虛擬私有雲網路對等互連互動

Cloud NAT 閘道是為單一區域和單一虛擬私有雲網路中的子網路 IP 位址範圍設定。

因此,在一個虛擬私有雲網路中建立的 Cloud NAT 閘道,無法為其他虛擬私有雲網路中的 VM 提供 NAT44 或 NAT64,即使這些網路是透過虛擬私有雲網路對接連線,且 VM 與閘道位於相同區域也一樣。

此外,對於Private NAT,Cloud NAT 不支援透過 VPC 網路對接連線的 VPC 網路中的目的地。

GKE 互動

Public NAT 閘道可為私人叢集中的節點和 Pod 執行 NAT,私人叢集是 VPC 原生叢集的一種。您必須設定 Public NAT 閘道,至少套用至叢集所用子網路的下列子網路 IP 位址範圍:

  • 子網路主要 IP 位址範圍 (節點使用)
  • 叢集中 Pod 使用的子網路次要 IP 位址範圍
  • 用於叢集內服務的子網路次要 IP 位址範圍

為整個私人叢集提供 NAT 最簡單的方式,就是設定 Public NAT 閘道,套用至叢集子網路的所有子網路 IP 位址範圍。

如要瞭解 VPC 原生叢集如何使用子網路 IP 位址範圍,請參閱「虛擬私有雲原生叢集的 IP 範圍」。

如果設定 Public NAT 閘道,為私有叢集提供 NAT,系統會為每個節點 VM 保留 NAT 來源 IP 位址和來源連接埠。Pod 可以使用這些 NAT 來源 IP 位址和來源通訊埠,因為 Pod IP 位址是實作為指派給每個節點 VM 的別名 IP 範圍。

Google Kubernetes Engine (GKE) 虛擬私有雲原生叢集一律會為每個節點指派別名 IP 範圍,其中包含多個 IP 位址 (網路遮罩小於 /32)。

  • 如果設定靜態通訊埠分配,則 Public NAT 通訊埠預留程序會為每個節點預留至少 1,024 個來源通訊埠。如果為每個 VM 指定的通訊埠數量下限大於 1,024,系統會使用該值。

  • 如果已設定動態通訊埠分配,系統會先為每個節點分配指定的每個 VM 最低通訊埠數量。隨後,系統會根據需求,在每個 VM 的通訊埠數量下限和上限之間,分配不同數量的通訊埠。

如要瞭解 Pod IP 位址範圍和 VPC 原生叢集,請參閱「Pod 的子網路次要 IP 位址範圍」。

無論是 Public NAT ,當 Pod 將封包傳送至網際網路時,Google Kubernetes Engine 都會使用在每個節點上執行的軟體,執行來源網路位址轉譯 (來源 NAT 或 SNAT),除非您已變更叢集的 IP 偽裝設定。如要精細控管 Pod 的輸出流量,可以使用網路政策。

在特定情況下, Public NAT 也適用於非私有 VPC 原生叢集。由於非私人叢集中的節點具有外部 IP 位址,因此從節點的主要內部 IP 位址傳送的封包,一律不會由 Cloud NAT 處理。不過,如果符合下列條件,從非私人叢集中的 Pod 傳送的封包,可以由Public NATCloud NAT 閘道處理:

  • 如為 VPC 原生叢集,系統會設定 Public NAT 閘道,套用至叢集 Pod 的次要 IP 位址範圍。

  • 叢集的 IP 位址偽裝設定未設為對從 Pod 傳送至網際網路的封包執行 SNAT。

以下範例顯示 Public NAT 與 GKE 的互動:

將 Public NAT 與 GKE 搭配使用。
Public NAT 與 GKE (按一下即可放大)。

在本例中,您希望容器經過 NAT 轉換。如要為所有容器和 GKE 節點啟用 NAT,請務必選擇 Subnet 1 的所有 IP 位址範圍做為 NAT 候選項目:

  • 子網路主要 IP 位址範圍:10.240.0.0/24
  • 用於 Pod 的子網路次要 IP 位址範圍:10.0.0.0/16

您無法只為 Pod1 或 Pod2 啟用 NAT。

Private NAT 閘道可為私人叢集和非私人叢集中的節點和 Pod 執行 NAT。Private NAT 閘道會自動套用至叢集使用的私人子網路的所有子網路 IP 位址範圍。

直連虛擬私有雲輸出互動

Cloud NAT 閘道可為設定直接虛擬私有雲輸出的 Cloud Run 資源提供 NAT。如要讓 Cloud Run 使用 Cloud NAT 閘道進行 Public NAT 或 Private NAT,請設定下列項目:

  • 部署 Cloud Run 資源時,請設定 --vpc-egress 旗標。如要使用 Public NAT,值必須設為 all-traffic。

  • 使用下列設定配置 Cloud NAT 閘道:

    • 設定 --nat-custom-subnet-ip-ranges 旗標,指定可使用閘道的來源子網路範圍。將值設為部署 Cloud Run 資源的子網路名稱。
    • 將 --endpoint-types 旗標的值設為 ENDPOINT_TYPE_VM。
    • 如果是 Public NAT,請確保 --min-ports-per-vm 旗標的值設為單一 Cloud Run 執行個體所需連接埠數量的兩倍。如果是私人 NAT,這個旗標必須設為 Cloud Run 執行個體所需連接埠數量的四倍。

    • 如要設定手動 NAT IP 位址分配 (僅限 Public NAT),請為閘道指派足夠的 IP 位址,以涵蓋閘道服務的 VM 執行個體和 Cloud Run 執行個體總和。

直連虛擬私有雲輸出流量的 Cloud NAT 記錄檔不會顯示 Cloud Run 資源名稱。

Connectivity Tests 互動

您可以使用連線測試,檢查使用 Cloud NAT 設定的網路端點之間的連線。 您可以在使用Public NAT 閘道或Private NAT 閘道的網路,或同時使用這兩種閘道的網路執行 Connectivity Tests。

在「Connectivity test details」(連線測試詳細資料)頁面的「Configuration analysis trace」(設定分析追蹤記錄)窗格中,查看 NAT 設定詳細資料。

Cloud Load Balancing 互動

Google Cloud 區域性內部應用程式負載平衡器和區域性外部應用程式負載平衡器會與多個區域性網際網路網路端點群組 (NEG) 後端通訊。為區域網際網路 NEG 設定 Cloud NAT 閘道後,您就能分配自己的外部 IP 位址範圍, Google Cloud 流量應從該範圍發出。健康檢查和資料平面流量的來源,是您分配的 NAT IP 位址。

其他 Google Cloud 外部負載平衡器和健康狀態檢查系統會使用特殊路由路徑與 VM 通訊。後端 VM 不需要外部 IP 位址,Cloud NAT 閘道也不會管理負載平衡器和健康狀態檢查的通訊。詳情請參閱「Cloud Load Balancing 總覽」和「健康狀態檢查總覽」。

Private Service Connect 傳播連線互動

在同一個虛擬私有雲輪輻中同時使用 Network Connectivity Center 的 Private NAT 和 Private Service Connect 傳播連線時,適用下列事項:

  • 如果子網路設定了 Private NAT,系統會捨棄從子網路到 Private Service Connect 傳播連線的流量。

  • 如要避免捨棄來自不重疊子網路的流量,請在設定 Private NAT 時注意下列事項:

    • 使用 --nat-custom-subnet-ip-ranges 旗標指定重疊的子網路。
    • 請勿指定需要存取已傳播連線的互不重疊子網路。
    • 請勿使用 --nat-all-subnet-ip-ranges 旗標。

Hybrid Subnets 互動

Hybrid NAT 不支援 Hybrid Subnets。

如果流量來自已設定 Hybrid NAT 的子網路,且目的地 IP 位址符合混合式子網路路徑,系統就不會執行 SNAT。這項設定會導致無法預測的路由行為,因為流量可以使用原始的未翻譯來源 IP 位址,連線至非虛擬私有雲網路。

在設定 Hybrid NAT 的網路中,請勿使用 Hybrid Subnets。

後續步驟