Public NAT
有了公開 NAT,Compute Engine 虛擬機器 (VM) 執行個體就能為每個使用公開 NAT 建立網際網路連線的 VM 分配一組共用的外部 IPv4 位址和來源通訊埠,進而與網際網路通訊。
有了 Public NAT,沒有外部 IPv4 位址的 VM 執行個體就能與網際網路上的 IPv4 目的地通訊。公開 NAT 還可讓具備外部或內部 IPv6 位址的 VM 執行個體,連線至網際網路上的 IPv4 目的地 (預先發布版)。
規格
公開 NAT 支援下列網路位址轉譯 (NAT) 功能:
從 IPv4 到 IPv4,或 NAT44。詳情請參閱「公用 NAT 中的 NAT44」。
從 IPv6 轉換為 IPv4,或 NAT64 (預先發布版)。NAT64 可用於 Compute Engine VM 執行個體。針對 Google Kubernetes Engine (GKE) 節點、無伺服器端點和區域性網際網路網路端點群組,公開 NAT 只會轉譯 IPv4 位址。詳情請參閱「公共 NAT 中的 NAT64」。
一般規格
-
公開 NAT 會允許傳出連線,以及這些連線的傳入回應。每個 Public NAT 的 Cloud NAT 閘道會針對傳出流量執行來源 NAT,針對已建立的回應封包執行目的地 NAT。
-
公開 NAT 不會允許來自網際網路的未經要求的內送要求,即使防火牆規則允許這些要求也不例外。詳情請參閱「適用的 RFC」。
-
每個公用 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 位址, Google Cloud 會自動針對來源與介面主要內部 IP 位址相符的封包執行一對一 NAT,因為網路介面符合 Google Cloud 網際網路存取規定。介面上有外部 IP 位址的情況一律優先,且一律會執行一對一 NAT,而不會使用公開 NAT。
為 VM 網路介面指派的別名 IP 範圍:即使網路介面已指派外部 IP 位址,您仍可為公用 NAT 設定 Cloud NAT 閘道,為來源來自介面別名 IP 範圍的封包提供 NAT。介面上的外部 IP 位址絕不會為別名 IP 位址執行一對一的 NAT。
GKE 叢集:在某些情況下,即使叢集具有外部 IP 位址,公開 NAT 也能提供服務。詳情請參閱 GKE 互動。
針對 NAT64 (預先發布版),公用 NAT 可為下列來源傳送的傳出封包提供 NAT:
- VM 專用 IPv6 網路介面的內部 /96 位址範圍。
- VM 的僅限 IPv6 網路介面外部 /96 位址範圍。
路徑和防火牆規則
公開 NAT 會使用本機靜態路徑,其下一個躍點為預設網際網路閘道。預設路徑通常符合這項要求。詳情請參閱路徑互動。
公開 NAT 沒有任何 Cloud NGFW 規則要求。防火牆規則會直接套用至 Compute Engine VM 的網路介面,而非用於公開 NAT 的 Cloud NAT 閘道。
您不必建立任何特殊防火牆規則,允許從 NAT IP 位址連線或傳送連線。當 Public NAT 的 Cloud NAT 閘道為 VM 網路介面提供 NAT 時,適用的傳出防火牆規則會在 NAT 之前,以該網路介面的封包形式進行評估。傳入防火牆規則會在封包經過 NAT 處理後進行評估。
子網路 IP 位址範圍適用性
公開 NAT 可為 IPv4 子網路範圍、IPv6 子網路範圍,或兩者提供 NAT:
針對 IPv4 子網路範圍,您可以使用下列選項為主要 IP 位址範圍、別名 IP 範圍或兩者設定 NAT:
-
區域中所有子網路的主要和次要 IPv4 位址範圍:單一 Cloud NAT 閘道會為符合條件的 VM 提供 NAT,這些 VM 的網路介面會在區域中使用 IPv4 子網路。
-
區域中所有子網路的主要 IPv4 位址範圍:單一 Cloud NAT 閘道會為符合條件的 VM 提供 NAT,這些 VM 的網路介面會在區域中使用 IPv4 子網路,而主要內部 IP 位址和別名 IP 範圍則來自子網路的主要 IP 位址範圍。您可以在該區域中為公開 NAT 建立其他 Cloud NAT 閘道,為符合資格的 VM 提供子網路次要 IP 位址範圍的別名 IP 範圍提供 NAT。
-
自訂子網路清單:單一 Cloud NAT 閘道可為符合條件的 VM 提供 NAT,這些 VM 的網路介面會使用指定子網路清單中的子網路。
-
自訂子網路 IPv4 位址範圍:您可以視需要為公開 NAT 建立任意數量的 Cloud NAT 閘道,但須遵守公開 NAT 配額和限制。您可以選擇各個閘道要提供哪些子網路主要或次要 IP 位址範圍。
-
針對 IPv6 子網路範圍,您可以使用下列選項為內部 IP 位址範圍、外部 IP 位址範圍或兩者設定 NAT:
- 區域中所有子網路的內部和外部 IPv6 位址範圍:單一 Cloud NAT 閘道可為區域中的所有內部和外部 IP 位址範圍提供 NAT。
- 自訂子網路清單:單一 Cloud NAT 閘道會為符合條件的 VM 提供 NAT,這些 VM 的網路介面會使用指定子網路清單中的子網路。
多個 Cloud NAT 閘道
如果符合下列任一條件,您可以在同一個 VPC 網路的區域中,為公開 NAT 建立多個 Cloud NAT 閘道:
每個閘道都會針對不同的子網路進行設定。
在單一子網路內,每個閘道都會針對不同的 IP 位址範圍進行設定。您可以使用自訂 Cloud NAT 對應,將公開 NAT 的 Cloud NAT 閘道對應至特定子網路或 IP 位址範圍。
只要已對應的 NAT 閘道不重疊,您可以視需要為公開 NAT 建立多個 Cloud NAT 閘道,但須遵守公開 NAT 配額和限制。詳情請參閱「Cloud NAT 閘道限制」。
頻寬
使用 Cloud NAT 閘道進行 Public NAT 不會變更 VM 可使用的傳出或傳入頻寬量。如要瞭解頻寬規格 (視機器類型而異),請參閱 Compute Engine 說明文件中的「網路頻寬」一節。
具有多個網路介面的 VM
如果您設定 VM 具有多個網路介面,則每個介面都必須位於個別的 VPC 網路中。因此,以下為正確:
- 適用於公開 NAT 的 Cloud NAT 閘道只能套用至 VM 的單一網路介面。針對公開 NAT 的個別 Cloud NAT 閘道可為同一個 VM 提供 NAT,其中每個閘道都會套用至個別介面。
- 多個網路介面 VM 的其中一個介面可以有外部 IPv4 位址,這會使該介面不符合公用 NAT 的使用資格,但如果該介面沒有外部 IPv4 位址,且您已為公用 NAT 設定 Cloud NAT 閘道,以便套用至適當的子網路 IP 位址範圍,則其另一個介面就符合 NAT 的使用資格。對於 IPv6,系統支援內部和外部 IPv6 位址。
NAT IP 位址和通訊埠
建立公開 NAT 的 Cloud NAT 閘道時,您可以選擇讓閘道自動分配地區外部 IP 位址。或者,您也可以手動為閘道指派固定數量的區域外部 IP 位址。
如要為 Public NAT 使用自動 NAT IP 位址分配功能的 Cloud NAT 閘道,請考慮以下事項:
- 您可以選取 Cloud NAT 閘道分配 IP 位址的網路服務級別 (進階級或標準級)。
當您變更已自動分配 NAT IP 位址的公開 NAT 的 Cloud NAT 閘道層級時, Google Cloud 會釋出該閘道的所有已指派 IP 位址,並撤銷所有通訊埠分配。
系統會自動分配新選取層級的新 IP 位址組合,並為所有端點提供新的通訊埠分配。
針對特定的 Public NAT Cloud NAT 閘道,您也可以手動指派進階級或標準級的 IP 位址 (或兩者皆可),但須符合特定條件。
如要進一步瞭解 NAT IP 位址指派作業,請參閱「公開 NAT IP 位址」。
您可以設定每個 Cloud NAT 閘道為提供 NAT 服務的每個 VM 保留的來源通訊埠數量。您可以設定靜態通訊埠分配,為每個 VM 保留相同數量的通訊埠,或是設定動態通訊埠分配,讓保留的通訊埠數量介於您指定的最低和最高限制之間。
閘道設定為提供的子網路 IP 位址範圍,會決定要為哪些 VM 提供 NAT。
如要進一步瞭解通訊埠,請參閱「通訊埠」。
適用的 RFC
公開 NAT 支援 端點獨立對應和 端點依附篩選器,如 RFC 5128 所定義。您可以啟用或停用端點獨立對應功能。根據預設,建立 NAT 閘道時會停用與端點無關的對應。
端點無關對應是指如果 VM 從特定內部 IP 位址和通訊埠組合傳送封包至多個不同的目的地,閘道就會將所有這些封包對應至相同的 NAT IP 位址和通訊埠組合,不論封包的目的地位於何處。如要瞭解與端點獨立對應相關的詳細資訊和影響,請參閱「同時重複使用通訊埠和端點獨立對應」。
端點依附篩選功能:只有來自 VM 已傳送封包的 IP 位址和通訊埠,才能允許網際網路的回應封包進入。無論端點對應類型為何,篩選都會依端點而定。這項功能一律會開啟,且無法由使用者設定。
如要進一步瞭解連接埠和連線之間的關係,請參閱「連接埠和連線」和 NAT 流程範例。
Public NAT 是 Port Restricted Cone NAT,如 RFC 3489 所定義。
NAT 穿越
如果啟用與端點無關的對應功能,公開 NAT 會與常見的網路位址轉譯穿越通訊協定相容,例如 STUN 和 TURN (如果您部署自己的 STUN 或 TURN 伺服器):
- 建立通訊管道後,STUN (Session Traversal Utilities for NAT,RFC 5389) 可讓 NAT 後方的 VM 直接通訊。
- TURN (Traversal Using Relays around NAT,RFC 5766) 可透過第三方伺服器 (該伺服器具有外部 IP 位址),讓 NAT 後方的 VM 進行通訊。每個 VM 都會連線至伺服器的外部 IP 位址,而該伺服器會轉送兩個 VM 之間的通訊。TURN 更為穩健,但會消耗更多頻寬和資源。
NAT 逾時
公開 NAT 會為通訊協定連線設定逾時時間。如要瞭解這些逾時時間和預設值,請參閱「NAT 逾時時間」。
Public NAT 中的 NAT44
下圖顯示 IPv4 流量的基礎公開 NAT 設定:
在這個例子中:
nat-gw-us-east
閘道已設定為套用至us-east1
區域中subnet-1
的主要 IP 位址範圍。如果 VM 網路介面沒有外部 IP 位址,則可以使用主要內部 IP 位址或主要 IP 位址範圍subnet-1
的別名 IP 範圍 10.240.0.0/16,將流量傳送至網際網路。如果 VM 網路介面沒有外部 IP 位址,且主要內部 IP 位址位於
subnet-2
,就無法存取網際網路,因為沒有 Cloud NAT 閘道可套用至該子網路的任何 IP 位址範圍。nat-gw-eu
閘道已設定為套用至europe-west1
區域中subnet-3
的主要 IP 位址範圍。如果 VM 的網路介面沒有外部 IP 位址,則可使用主要內部 IP 位址或主要 IP 位址範圍subnet-3
的別名 IP 範圍 192.168.1.0/24,將流量傳送至網際網路。
工作流程範例
在上圖中,VM 的主要內部 IP 位址為 10.240.0.4,但沒有外部 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 位址和來源連接埠元組。舉例來說,公開 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 通訊協定,將封包傳送至目的地通訊埠 80 的更新伺服器 203.0.113.1 時,會發生下列情況:
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 伺服器會在從A
記錄取得的目的地 IPv4 位址前面加上64:ff9b::/96
前置字串,藉此合成嵌入 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
前置字元的目的地時,閘道會將 VPC 網路的 IPv4 路由表套用至目的地 IPv4 位址。如果 IPv4 轉送表有目的地 IPv4 位址的路徑,且下一個躍點為預設網際網路閘道,則系統會將修改過的封包傳送到網際網路。
收到回應後,Cloud NAT 閘道會執行 DNAT,方法如下:
- 在回應封包的來源 IP 位址前方加上
64:ff9b::/96
前置字串。 - 重新寫回應封包的目的地位址和目的地通訊埠,以便將封包傳送至 VM。
後續步驟
- 瞭解 Cloud NAT 產品互動。
- 瞭解 Cloud NAT 位址和通訊埠。
- 瞭解 Cloud NAT 規則。
- 設定 Public NAT。