Cloud NAT 產品互動

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

路線互動

Public NAT 閘道只能使用下一個躍點為預設網際網路閘道的路徑。每個虛擬私有雲 (VPC) 網路都會以預設路徑啟動,目的地為 0.0.0.0/0,下一個躍點為預設網際網路閘道。如需重要背景資訊,請參閱路徑總覽

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

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

  • 如果您建立的自訂靜態路徑下一個躍點是 Cloud VPN 通道, Public NAT 不會使用該路徑。舉例來說,目的地為 0.0.0.0/0 且下一個躍點為 Cloud VPN 通道的靜態路徑,會將流量導向該通道,而不是預設網際網路閘道。因此, Public NAT 閘道無法使用該路徑。同樣地, Public NAT 閘道也無法使用目的地更具體的靜態路徑,包括 0.0.0.0/1128.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/1128.0.0.0/1),也會發生這種情況。

Private NAT 使用下列路由:

  • 對於 Network Connectivity Center 輪輻,Private NAT 會使用子網路路徑和動態路徑:
    • 如果 Network Connectivity Center 中樞只包含虛擬私有雲輪輻,則附加至該中樞的兩個虛擬私有雲輪輻之間的流量,Private NAT 會使用附加虛擬私有雲輪輻交換的子網路路徑。如要瞭解虛擬私有雲輻射網路,請參閱「虛擬私有雲輻射網路總覽」。
    • 如果 NCC 中樞同時包含 VPC 輪輻和混合式輪輻 (例如 Cloud Interconnect 的 VLAN 連結、Cloud VPN 通道或路由器設備 VM),私人 NAT 會使用混合式輪輻透過 BGP 學習到的動態路徑,以及所連 VPC 輪輻交換的子網路路徑。如要瞭解混合式輪輻,請參閱「混合式輪輻」。
  • 如果是 Hybrid NAT,Private NAT 會使用 Cloud Router 透過 Cloud Interconnect 或 Cloud VPN 學習的動態路徑。

Private Google Access 互動

Public 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可讓單一機構中的多個服務專案,使用主專案中的共用虛擬私有雲網路。如要為使用共用虛擬私有雲網路的服務專案中的 VM 提供 NAT,您必須在主專案中建立 Cloud NAT 閘道。

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

Cloud NAT 閘道會與單一區域和單一虛擬私有雲網路中的子網路 IP 位址範圍建立關聯。在一個虛擬私有雲網路中建立的 Cloud NAT 閘道,無法為透過 虛擬私有雲網路對等互連連線的其他虛擬私有雲網路中的 VM 提供 NAT,即使對等互連網路中的 VM 與閘道位於相同區域也一樣。

GKE 互動

公用 NAT 閘道可以為私人叢集中的節點和 Pod 執行 NAT,這是一種虛擬私有雲原生叢集。 Public NAT 閘道必須設定為至少適用於叢集所用子網路的下列子網路 IP 位址範圍:

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

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

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

設定 公開 NAT 閘道,為私有叢集提供 NAT 時,系統會為每個節點 VM 保留 NAT 來源 IP 位址和來源通訊埠。由於 Pod IP 位址是實作方式是為每個節點 VM 指派別名 IP 範圍,因此 Pod 可以使用這些 NAT 來源 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 NAT 閘道處理:

  • 如果是虛擬私有雲原生叢集,系統會設定 Public NAT 閘道,套用至叢集 Pod 的次要 IP 位址範圍。

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

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

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

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

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

您無法只為 Pod1Pod2 啟用 NAT。

Private NAT 閘道可為私人叢集和非私人叢集中的節點和 Pod 執行 NAT。私人 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 執行個體所需通訊埠數量的兩倍。如果是 Private NAT,這個標記必須設為每個 Cloud Run 執行個體所需連接埠數量的四倍。

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

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

Connectivity Tests 互動

您可以使用 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 傳播連線互動

在同一個虛擬私有雲輪輻中同時使用 NCC 的 Private NATPrivate 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。

後續步驟