Public NAT

公開 NAT 會為每個使用公開 NAT 建立網際網路輸出連線的 VM,分配一組共用的外部 IPv4 位址和來源通訊埠,讓 Compute Engine 虛擬機器 (VM) 執行個體與網際網路通訊。

透過 Public NAT,沒有外部 IPv4 位址的 VM 執行個體可以與網際網路上的 IPv4 目的地通訊。此外,公開 NAT 也允許具有外部或內部 IPv6 位址的 VM 執行個體,連線至網際網路上的 IPv4 目的地 (搶先版)。

規格

公開 NAT 支援下列項目的網路位址轉譯 (NAT):

  • 從 IPv4 到 IPv4,或 NAT44。詳情請參閱「Public NAT 中的 NAT44」。

  • 從 IPv6 到 IPv4,或 NAT64 (預覽版)。 NAT64 適用於 Compute Engine VM 執行個體。如果是 Google Kubernetes Engine (GKE) 節點、無伺服器端點和區域性網際網路網路端點群組,Public NAT 只會轉譯 IPv4 位址。詳情請參閱「Public NAT 中的 NAT64」。

一般規格

  • Public NAT 允許傳出連線,以及這些連線的傳入回應。Public NAT 的每個 Cloud NAT 閘道都會對輸出流量執行來源 NAT,並對已建立的回應封包執行目的地 NAT。

  • 即使防火牆規則允許,公開 NAT 也不會允許來自網際網路的未經要求連入要求。詳情請參閱「適用 RFC」。

  • 每個 Public NAT 的 Cloud NAT 閘道都會與單一 VPC 網路、區域和 Cloud Router 建立關聯。Cloud NAT 閘道和 Cloud Router 提供控制層,不會參與資料層,因此封包不會通過 Cloud NAT 閘道或 Cloud Router。

    雖然 Public NAT 的 Cloud NAT 閘道是由 Cloud Router 管理,但 Public NAT 不會使用或依賴邊界閘道通訊協定。

  • 如果是 NAT44,公開 NAT 可為下列項目傳送的傳出封包提供 NAT:

    • VM 網路介面的主要內部 IP 位址,前提是網路介面未獲派外部 IP 位址:如果網路介面已獲派外部 IP 位址, Trusted Cloud 會自動為來源符合介面主要內部 IP 位址的封包執行一對一 NAT,因為網路介面符合 Trusted Cloud 網際網路存取需求。介面上的外部 IP 位址一律優先,且一律會執行一對一 NAT,而不使用公開 NAT。

    • 指派給 VM 網路介面的別名 IP 範圍:即使網路介面已獲派外部 IP 位址,您仍可設定 Cloud NAT 閘道,透過 Public NAT 為封包提供 NAT,這些封包的來源來自介面的別名 IP 範圍。介面上的外部 IP 位址絕不會對別名 IP 位址執行一對一 NAT。

    • GKE 叢集:即使叢集在特定情況下有外部 IP 位址,公開 NAT 仍可提供服務。詳情請參閱「GKE 互動」。

  • 對於 NAT64 (搶先版),Public NAT 可為從下列項目傳送的輸出封包提供 NAT:

    • VM 僅限 IPv6 網路介面的內部 /96 位址範圍。
    • VM 僅限 IPv6 網路介面的外部 /96 位址範圍。

路徑和防火牆規則

公開 NAT 依賴下一個躍點為預設網際網路閘道的本機靜態路徑。預設路徑通常會符合這項需求。詳情請參閱路徑互動

Cloud NGFW 防火牆規則會直接套用至 Compute Engine VM 的網路介面,而非 Public NAT 的 Cloud NAT 閘道。

當 Public NAT 的 Cloud NAT 閘道為 VM 的網路介面提供 NAT 時,系統會先評估該網路介面的封包,再進行 NAT,並套用適用的輸出防火牆規則。封包經過 NAT 處理後,系統會評估輸入防火牆規則。您不需要專為 NAT 建立任何防火牆規則。

不過,如要在虛擬私有雲網路中啟用 NAT64,且該網路具有 IPv4 目的地適用的輸出拒絕防火牆規則,建議您建立目的地 IPv4 嵌入式 IPv6 位址適用的額外輸出拒絕防火牆規則。這可確保使用 NAT64 的 VM 流量不會略過 IPv4 防火牆規則。舉例來說,如果 IPv4 規則中的目的地是 1.2.3.4/32,則 IPv6 規則中的目的地必須是 64:ff9b:0102:0304/128。如要進一步瞭解內嵌 IPv4 的 IPv6 位址,請參閱 NAT64

子網路 IP 位址範圍適用性

公開 NAT 可為 IPv4 子網路範圍、IPv6 子網路範圍或兩者提供 NAT:

  • 如要設定主要 IP 位址範圍、別名 IP 範圍或兩者的 NAT,您可以使用下列選項:

    • 區域中所有子網路的主要和次要 IPv4 位址範圍:單一 Cloud NAT 閘道會為符合資格的 VM 提供 NAT,這些 VM 的網路介面使用區域中的 IPv4 子網路,且 NAT 適用於主要內部 IP 位址和所有別名 IP 範圍。

    • 區域中所有子網路的主要 IPv4 位址範圍:單一 Cloud NAT 閘道會為符合資格的 VM 提供 NAT,這些 VM 的網路介面使用區域中的 IPv4 子網路,並從子網路主要 IP 位址範圍取得主要內部 IP 位址和別名 IP 範圍。您可以在區域中為公開 NAT 建立額外的 Cloud NAT 閘道,為符合資格的 VM 中,來自子網路次要 IP 位址範圍的別名 IP 範圍提供 NAT。

    • 自訂子網路清單:單一 Cloud NAT 閘道會為符合資格的 VM 提供 NAT,這些 VM 的網路介面使用指定子網路清單中的子網路,並使用主要內部 IP 位址和所有別名 IP 範圍。

    • 自訂子網路 IPv4 位址範圍:您可以視需要為 Public NAT 建立任意數量的 Cloud NAT 閘道,但須遵守 Public NAT 配額和限制。您可以選擇要由每個閘道服務的子網路主要或次要 IP 位址範圍。

  • 如要設定 IPv6 子網路範圍的 NAT,可使用下列選項設定內部 IP 位址範圍、外部 IP 位址範圍或兩者:

    • 區域中所有子網路的內部和外部 IPv6 位址範圍:單一 Cloud NAT 閘道會為區域中的所有內部和外部 IP 位址範圍提供 NAT。
    • 自訂子網路清單:單一 Cloud NAT 閘道會為符合資格的 VM 提供 NAT,這些 VM 的網路介面使用指定子網路清單中的子網路,並具有內部和外部 IP 位址範圍。

多個 Cloud NAT 閘道

如果符合下列任一條件,您可以在虛擬私有雲網路的同一區域中,為公用 NAT 建立多個 Cloud NAT 閘道:

  • 每個閘道都設定為不同的子網路。

  • 在單一子網路中,每個閘道都會設定不同的 IP 位址範圍。您可以透過自訂 Cloud NAT 對應,將 Public NAT 的 Cloud NAT 閘道對應至特定子網路或 IP 位址範圍。

只要對應的 NAT 閘道不重疊,您就可以視需要建立任意數量的 Public NAT Cloud NAT 閘道,但須遵守 Public NAT 配額和限制。詳情請參閱「Cloud NAT 閘道限制」一文。

頻寬

使用 Public NAT 的 Cloud NAT 閘道不會改變 VM 可用的傳出或傳入頻寬量。頻寬規格因機器類型而異,詳情請參閱 Compute Engine 說明文件中的「網路頻寬」一節。

具有多個網路介面的 VM

如果將 VM 設定為具有多個網路介面,每個介面都必須位於不同的 VPC 網路中。因此,下列情況屬實:

  • 公開 NAT 的 Cloud NAT 閘道只能套用至 VM 的單一網路介面。公開 NAT 的個別 Cloud NAT 閘道可為同一個 VM 提供 NAT,每個閘道適用於不同的介面。
  • 多個網路介面 VM 的其中一個介面可以有外部 IPv4 位址,這會導致該介面不符合 Public NAT 的資格,但如果另一個介面沒有外部 IPv4 位址,且您已設定 Cloud NAT 閘道,讓 Public NAT 適用於適當的子網路 IP 位址範圍,則該介面可能符合 NAT 資格。IPv6 則支援內部和外部 IPv6 位址。

NAT IP 位址和通訊埠

為公開 NAT 建立 Cloud NAT 閘道時,您可以選擇讓閘道自動分配地區外部 IP 位址。或者,您也可以手動為閘道指派固定數量的區域外部 IP 位址。

如果 Public NAT 的 Cloud NAT 閘道會自動分配 NAT IP 位址,請考慮下列事項:

  • 您可以選取網路服務級別 (進階級或標準級),Cloud NAT 閘道會從中分配 IP 位址。
  • 如果變更已自動分配 NAT IP 位址的 Public NAT Cloud NAT 閘道層級,系統會 Trusted Cloud 釋出該閘道的所有已指派 IP 位址,並停用所有通訊埠分配。

    系統會自動從新選取的層級分配一組新的 IP 位址,並為所有端點提供新的連接埠分配。

針對 Public NAT 的特定 Cloud NAT 閘道,您也可以手動指派進階級或標準級的 IP 位址,或同時指派兩者,但須符合特定條件

如要瞭解 NAT IP 位址指派作業的詳細資料,請參閱「公開 NAT IP 位址」。

您可以設定每個 Cloud NAT 閘道為公開 NAT 保留的來源通訊埠數量,這些通訊埠會用於提供 NAT 服務的每個 VM。您可以設定靜態通訊埠分配,為每個 VM 保留相同數量的通訊埠,也可以設定動態通訊埠分配,讓保留的通訊埠數量介於您指定的下限和上限之間。

系統會根據閘道設定服務的子網路 IP 位址範圍,判斷要為哪些 VM 提供 NAT。

如要進一步瞭解通訊埠,請參閱「通訊埠」。

適用的 RFC

公開 NAT 支援 Endpoint-Independent MappingEndpoint-Dependent Filtering,如 RFC 5128 所定義。您可以啟用或停用「與端點無關的對應」。建立 NAT 閘道時,系統預設會停用與端點無關的對應。

端點獨立對應是指如果 VM 從指定的內部 IP 位址和通訊埠配對傳送封包至多個不同目的地,閘道會將所有這些封包對應至相同的 NAT IP 位址和通訊埠配對,無論封包目的地為何。如要瞭解與端點獨立對應相關的詳細資料和影響,請參閱「同時重複使用通訊埠和端點獨立對應」。

端點相關篩選是指只有在 VM 已將封包傳送至某個 IP 位址和通訊埠時,才允許來自網際網路的回應封包進入。無論端點對應類型為何,篩選功能都取決於端點。這項功能一律會開啟,使用者無法自行設定。

如要進一步瞭解通訊埠和連線之間的關係,請參閱「通訊埠和連線」和 NAT 流程範例

Public NAT 是 Port Restricted Cone NAT,如 RFC 3489 所定義。

網路位址轉譯 (NAT) 周遊

如果啟用與端點無關的對應,且您部署了自己的 STUN 或 TURN 伺服器,公開 NAT 就會與常見的 NAT 穿越通訊協定 (例如 STUN 和 TURN) 相容:

  • STUN (NAT 的工作階段遍歷公用程式,RFC 5389) 可在建立通訊管道後,讓 NAT 後方的 VM 直接通訊。
  • TURN (Traversal Using Relays around NAT,RFC 5766) 可讓 NAT 後方的 VM 透過第三方伺服器進行通訊,前提是該伺服器必須有外部 IP 位址。每個 VM 都會連線至伺服器的外部 IP 位址,而該伺服器會轉送兩個 VM 之間的通訊。TURN 更強大,但會消耗更多頻寬和資源。

網路位址轉譯 (NAT) 逾時

公開 NAT 會為通訊協定連線設定逾時。如要瞭解這些逾時和預設值,請參閱「NAT 逾時」。

Public NAT 中的 NAT44

下圖顯示 IPv4 流量的基本公開 NAT 設定:

公開 NAT IPv4 轉譯範例。
Public NAT 轉譯示例 (按一下即可放大)。

在這個例子中:

  • nat-gw-us-east 閘道已設定為適用於 us-east1 區域中 subnet-1 的主要 IP 位址範圍。如果 VM 的網路介面沒有外部 IP 位址,可以透過主要內部 IP 位址或 subnet-1 (10.240.0.0/16) 主要 IP 位址範圍的別名 IP 範圍,將流量傳送到網際網路。

  • 如果 VM 的網路介面沒有外部 IP 位址,且主要內部 IP 位址位於 subnet-2,則該 VM 無法存取網際網路,因為沒有 Cloud NAT 閘道適用於該子網路的任何 IP 位址範圍。

  • nat-gw-eu 閘道已設定為適用於 europe-west1 區域中 subnet-3 的主要 IP 位址範圍。網路介面沒有外部 IP 位址的 VM 可以使用主要內部 IP 位址,或 subnet-3 主要 IP 位址範圍 (192.168.1.0/24) 中的別名 IP 範圍,將流量傳送至網際網路。

工作流程範例

在上圖中,主要內部 IP 位址為 10.240.0.4 的 VM 沒有外部 IP 位址,但需要從外部 IP 位址 203.0.113.1 下載更新。在圖表中,nat-gw-us-east 閘道的設定如下:

  • 每個執行個體的最低通訊埠數量:64 個
  • 手動指派兩個 NAT IP 位址:192.0.2.50 和 192.0.2.60
  • subnet-1 的主要 IP 位址範圍提供 NAT

公開 NAT 會按照連接埠保留程序,為網路中的每個 VM 保留下列 NAT 來源 IP 位址和來源連接埠元組。舉例來說,Public NAT 的 Cloud NAT 閘道會為內部 IP 位址為 10.240.0.4 的 VM 保留 64 個來源連接埠。NAT IP 位址 192.0.2.50 有 64 個未保留的通訊埠,因此閘道會為該 VM 保留下列 64 個 NAT 來源 IP 位址和來源通訊埠元組:

  • 192.0.2.50:34000 至 192.0.2.50:34063

當 VM 使用 TCP 通訊協定,將封包傳送至更新伺服器 203.0.113.1 的目的地通訊埠 80 時,會發生下列情況:

  • VM 會傳送具有下列屬性的要求封包:

    • 來源 IP 位址:10.240.0.4,這是 VM 的主要內部 IP 位址
    • 來源通訊埠:24000,這是 VM 作業系統選擇的臨時來源通訊埠
    • 目的地地址:203.0.113.1,更新伺服器的外部 IP 位址
    • 目的地通訊埠:80,這是傳送至更新伺服器的 HTTP 流量目的地通訊埠
    • 通訊協定:TCP
  • nat-gw-us-east 閘道會對輸出流量執行來源網路位址轉譯 (SNAT),重寫要求封包的 NAT 來源 IP 位址和來源通訊埠。如果虛擬私有雲 (VPC) 網路具有目的地為 203.0.113.1 的路徑,且下一個躍點是預設網際網路閘道,修改後的封包就會傳送至網際網路。預設路徑通常會符合這項需求。

    • NAT 來源 IP 位址:192.0.2.50,來自 VM 保留的 NAT 來源 IP 位址和來源通訊埠元組
    • 來源通訊埠:34022,這是 VM 其中一個保留來源通訊埠元組中未使用的來源通訊埠
    • 目的地地址:203.0.113.1,未變更
    • 目的地通訊埠:80,未變更
    • 通訊協定:TCP,不變
  • 更新伺服器傳送回應封包時,該封包會抵達 nat-gw-us-east 閘道,並具備下列屬性:

    • 來源 IP 位址:203.0.113.1,更新伺服器的外部 IP 位址
    • 來源通訊埠:80,更新伺服器傳回的 HTTP 回應
    • 目的地地址:192.0.2.50,與要求封包的原始 NAT 來源 IP 位址相符
    • 目的地通訊埠:34022,與要求封包的來源通訊埠相符
    • 通訊協定:TCP,不變
  • nat-gw-us-east 閘道會對回應封包執行目的地網路位址轉譯 (DNAT),重新編寫回應封包的目的地位址和目的地連接埠,以便將封包傳送至 VM:

    • 來源 IP 位址:203.0.113.1,未變更
    • 來源通訊埠:80,未變更
    • 目的地地址:10.240.0.4,VM 的主要內部 IP 位址
    • 目的地通訊埠:24000,與要求封包的原始暫時性來源通訊埠相符
    • 通訊協定:TCP,不變

Public NAT 中的 NAT64

NAT64 可讓僅支援 IPv6 網路介面的 VM 執行個體,與網際網路上的 IPv4 目的地通訊。公開 NAT 支援外部和內部 IPv6 位址的 NAT64。如要設定 NAT64,也必須設定 DNS64。

在 Cloud DNS 中設定 DNS64 後,系統會執行下列動作:

  • 當僅支援 IPv6 的 VM 執行個體發出要求,要解析只有 IPv4 位址的網際網路目的地名稱時,DNS64 伺服器會查詢 A 記錄。
  • 如果找到 A 記錄,DNS64 伺服器會將 64:ff9b::/96 前置字串加到從 A 記錄取得的目的地 IPv4 位址,合成內嵌 IPv4 的 IPv6 位址。舉例來說,如果目的地 IPv4 位址為 203.0.113.1,伺服器會傳回 64:ff9b::cb00:7101,其中 cb00:7101 是 203.0.113.1 的十六進位表示法。

    詳情請參閱「DNS64」。

當要求抵達已啟用 NAT64 的 Cloud NAT 閘道時,閘道會執行 SNAT,方法如下:

  • 將來源 IPv6 位址和通訊埠,替換為分配給閘道的其中一個外部 IPv4 位址和通訊埠。
  • 使用合成位址的最後 32 位元,將合成的目的地 IPv6 位址 (例如 64:ff9b::cb00:7101) 轉換為原始 IPv4 位址。

    Cloud NAT 閘道也會使用合成 IPv6 位址的最後 32 位元,判斷如何將要求封包路由至網際網路。當僅支援 IPv6 的 VM 執行個體將封包傳送至具有 64:ff9b::/96 前置字元的目的地時,閘道會將虛擬私有雲網路的 IPv4 路由表套用至目的地 IPv4 位址。如果 IPv4 路由表有目的地 IPv4 位址的路徑,且下一個躍點是預設網際網路閘道,修改後的封包就會傳送到網際網路。

收到回應後,Cloud NAT 閘道會執行 DNAT,方法如下:

  • 在回應封包的來源 IP 位址前加上 64:ff9b::/96 前置字元。
  • 重新編寫回應封包的目的地地址和目的地通訊埠,以便將封包傳送至 VM。

設定 NAT64 前,請先查看路徑和防火牆規則

後續步驟