IP 位址和通訊埠

本頁面說明 Cloud NAT 閘道如何使用 IP 位址,以及如何將來源通訊埠分配給使用閘道的 Compute Engine 虛擬機器 (VM) 執行個體和 Google Kubernetes Engine (GKE) 節點。

查看這項資訊前,請先熟悉 Cloud NAT 總覽

公開 NAT IP 位址

「公開 NAT IP 位址」是可在網際網路上轉送的地區性外部 IP 位址。沒有外部 IP 位址的 VM 位於由 Public NAT 閘道提供服務的子網路 (subnet) 中,當 VM 將封包傳送至網際網路上的目的地時,會使用 Public NAT IP 位址。

如要將網路位址轉譯 (NAT) IP 位址指派給 Public NAT 閘道,請使用下列任一方法:

  • 自動分配 NAT IP 位址。選取這個方法或選擇 Google Cloud 預設值時,公開 NAT 會根據下列項目,自動將區域外部 IP 位址新增至閘道:

    • 所選聯播網層級
    • 使用閘道的 VM 數量
    • 為每個 VM 預留的通訊埠數量

    公開 NAT 也會在不再需要該 NAT IP 位址的任何來源通訊埠時,自動移除 NAT IP 位址。

    自動 NAT IP 位址分配的特性如下:

    • 當 Public NAT 閘道新增 NAT IP 位址時,會在您設定閘道時選取的網路層級中,建立靜態 (預留) 地區性外部 IP 位址。舉例來說,如果您選取進階級,則公開 NAT 閘道會在該級別中建立 IP 位址。支援的網路級別為進階級 (預設選項) 和標準級。

      您可以在靜態外部 IP 位址清單中查看自動新增的 NAT IP 位址。這些位址不會計入個別專案配額

    • 如果變更公開 NAT 閘道的網路層級,系統會釋出該閘道的現有 IP 位址,並指派所選層級的新一組 IP 位址。
    • 使用自動分配功能時,您無法預測系統會分配下一個 IP 位址。如果您需要事先知道可能的 NAT IP 位址組合 (例如建立許可清單),請改用手動 NAT IP 位址指派。
    • 自動新增的 NAT IP 位址不再使用時,系統會移除這些 IP 位址。不過,只有在指派至該位址的最後一個 VM 不再使用任何通訊埠時,Public NAT 才會釋放位址。因此,當使用公開 NAT 的 VM 數量減少時,IP 數量可能不會減少。原因是 Cloud NAT 不會動態重新指派 VM 的 IP 位址,因為重新指派會中斷已建立的連線。只要至少有一個 VM 使用 IP 位址,IP 位址就會保持有效,且可指派給新的 VM。

      如果您想手動將 VM 從一個 IP 位址重新指派到另一個 IP 位址,以便盡量減少 IP 位址使用量,請使用手動 NAT IP 位址指派。手動 NAT IP 位址指派可讓您耗盡公開 NAT IP 位址

    • 如果您日後改用手動 NAT IP 位址指派作業,系統會刪除自動保留的區域外部 IP 位址。詳情請參閱「切換指派方法」。

  • 手動指派 NAT IP 位址。選取這個選項後,您可以建立並手動將靜態 (保留) 區域性外部 IP 位址指派給公用 NAT 閘道。您可以手動指派進階級或標準級 IP 位址,或同時指派兩者,但須符合條件

    • 您可以編輯 Cloud NAT 閘道,增加或減少手動指派的 NAT IP 位址數量。
    • 使用手動 NAT IP 位址指派功能時,您必須計算公開 NAT 閘道所需的區域性外部 IP 位址數量。如果閘道沒有 NAT IP 位址,公開 NAT 會捨棄封包。使用 Cloud NAT 記錄功能啟用錯誤記錄時,系統會記錄遭到捨棄的封包。
    • 如需計算範例,請參閱連接埠預留範例

如要瞭解自動分配或手動指派的 NAT IP 位址數量上限,請參閱「Cloud NAT 限制」。

手動指派進階級和標準級 IP 位址

使用手動 NAT IP 位址指派方法建立公開 NAT 閘道時,只要不同網路層級的 IP 位址不屬於同一個規則 (包括預設規則),您就可以指派混合使用進階級和標準級 IP 位址。

在規則 (包括預設規則) 中,指派給有效範圍的所有 IP 位址「必須」屬於同一個網路層級。如果您嘗試在同一規則中使用不同層級的 IP 位址, Google Cloud 會拒絕設定。

切換指派方法

您可以將公開 NAT 閘道從自動 NAT IP 位址分配切換為手動 NAT IP 位址指派,但無法保留 NAT IP 位址。即使自動分配的 NAT IP 位址為靜態,也不能移至手動 NAT IP 位址指派。舉例來說,您無法開始使用具有自動分配 NAT IP 位址的公開 NAT 閘道,然後在切換為手動指派的 NAT IP 位址時使用相同的位址。

公開 NAT 用於自動分配 NAT IP 位址的地區性外部 IP 位址組合,與您可手動選擇的地區性外部 IP 位址組合不同。

排空公開 NAT IP 位址

使用手動 NAT IP 位址指派功能設定 Public NAT 閘道時,您可以選擇在需要減少閘道使用的 NAT IP 位址數量時,要採取哪種做法:

  • 如果您移除手動指派的 NAT IP 位址,已建立的 NAT 連線會立即中斷。

  • 您可以選擇排空手動指派的 NAT IP 位址。排空會指示 Public NAT 閘道停止使用 NAT IP 位址進行新連線,但會繼續使用該 IP 位址進行已建立的連線。已建立的連線可正常關閉,而不會突然終止。如要排空與未使用 NAT 規則的 Public NAT 閘道相關聯的 IP 位址,請參閱「排空與 NAT 相關聯的外部 IP 位址」。如要排空與使用 NAT 規則的 NAT 閘道相關聯的 IP 位址,請參閱「更新 NAT 規則」。

私人 NAT IP 位址

私人 NAT 位址是區域內的內部 IPv4 位址,來自位於與私人 NAT 閘道相同區域和虛擬私有雲網路的 私人 NAT 子網路的主要 IPv4 位址範圍。私人 NAT IP 位址無法在網際網路上路由。私人 NAT 子網路的主要 IPv4 位址範圍中的 IP 位址,只能由私人 NAT 閘道使用。如要建立私人 NAT 子網路,請使用 Google Cloud CLI 和 --purpose=PRIVATE_NAT 標記新增僅限 IPv4 的子網路

設定 Private NAT 閘道後,即可為虛擬私有雲網路中的子網路提供 NAT 服務。此時,在該子網路中具有網路介面的 VM 就能將封包傳送至其他網路中的資源,例如與同一個 Network Connectivity Center 中樞連結的虛擬私有雲網路 (該網路會代管 Private NAT 閘道),或是透過 Cloud Interconnect 或 Cloud VPN 連線至Google Cloud 的 Google Cloud 外部網路。在傳出時,Google Cloud 會將來源 IP 位址變更為與閘道相關聯的私人 NAT 子網路中的 IP 位址。

私人 NAT IP 位址的特性如下:

  • 您無法自動將私人 NAT IP 位址指派給私人 NAT 閘道。相反地,在私人 NAT 閘道中建立規則時,您必須手動指定私人 NAT 子網路或子網路。私人 NAT 子網路必須與閘道位於相同的 VPC 網路和區域。閘道只會使用私人 NAT 子網路的主要 IPv4 位址範圍 IP 位址。
  • 如要判斷每個私人 NAT 子網路可提供多少個 NAT IP 位址,請使用下列公式:2(32 - PREFIX_LENGTH) - 4,其中 PREFIX_LENGTH 是私人 NAT 子網路主要 IPv4 位址範圍的子網路遮罩長度。在每個子網路的主要 IPv4 位址範圍中,有四個 IP 位址無法使用

通訊埠

Cloud NAT 閘道 (包括公開 NAT 和私人 NAT) 的每個 NAT IP 位址都提供 64,512 個 TCP 來源通訊埠和 64,512 個 UDP 來源通訊埠。TCP 和 UDP 各自支援每個 IP 位址的 65,536 個通訊埠,但 Cloud NAT 不會使用前 1,024 個已知 (特權) 通訊埠。

當 Cloud NAT 閘道針對 VM 傳送的封包執行來源網路位址轉譯 (SNAT) 時,會變更封包的 NAT 來源 IP 位址和來源通訊埠。

建立 Cloud NAT 閘道時,您可以選擇使用靜態通訊埠分配動態通訊埠分配。建立閘道後,您可以變更連接埠分配方式。如要瞭解變更 Cloud NAT 閘道的通訊埠分配方法對已建立連線的影響,請參閱「切換通訊埠分配方法」。

如果您已手動將多個靜態 (保留) 區域外部 IP 位址指派給 Public NAT 閘道,則使用閘道的單一 VM 可從任何已指派的 NAT IP 位址取得所需的連接埠,甚至可同時從多個 NAT IP 位址取得連接埠。

靜態通訊埠分配

設定靜態通訊埠分配時,您需要指定每個 VM 執行個體的通訊埠數量下限。如果您未指定每個 VM 的最低通訊埠數量,Google Cloud 會使用預設值。

預設情況下,Public NAT 會啟用靜態通訊埠分配功能。另一方面,Private NAT 則預設使用動態通訊埠分配功能。

由於所有 VM 都會分配相同數量的通訊埠,因此如果所有 VM 的傳出用量相似,靜態通訊埠分配功能的效果就會最好。設定靜態通訊埠分配功能後,系統會為每個 VM 分配固定數量的通訊埠,即使某些 VM 使用比其他 VM 更多的通訊埠,或是某個 VM 用盡所有通訊埠,也不會改變。如果出口用量有所不同,請考慮設定動態通訊埠分配

如果您想在 Public NAT 閘道上設定與端點無關的對應關係,就必須使用靜態通訊埠分配。端點獨立對應不適用於 Private NAT 閘道。

動態通訊埠分配

設定動態通訊埠分配功能時,您需要指定每個 VM 執行個體的通訊埠數量下限每個 VM 執行個體的通訊埠數量上限

私人 NAT 預設會啟用動態通訊埠分配功能。Public NAT 預設會使用靜態通訊埠分配功能。

設定動態通訊埠分配功能之後,相同的 Cloud NAT 閘道就能按照 VM 用量,為每個 VM 分配不同數量的通訊埠。一開始,系統會為 VM 分配每個 VM 執行個體的最低通訊埠數量。如果 VM 的通訊埠分配量即將用盡,VM 會將指派給 VM 的通訊埠數量加倍。VM 可以重複要求更多通訊埠,但不得超過每個 VM 執行個體的通訊埠數量上限。當通訊埠用量大幅減少時,系統會取消分配通訊埠,並將通訊埠分配給使用相同 NAT 閘道的其他 VM。

動態通訊埠分配有下列優點:

  • 減少已分配但未使用的通訊埠數量。

  • NAT 閘道會監控每個 VM 的通訊埠用量,並視需要修改分配給每個 VM 的通訊埠數量。您不需要監控連接埠用量或調整 NAT 閘道設定。

使用動態通訊埠分配功能前,請考量下列事項:

  • 如果在 Cloud NAT 閘道上啟用與端點無關的對應關係,就無法設定動態通訊埠分配。如果您需要與端點無關的對應關係,請使用靜態通訊埠分配

  • 在為 VM 分配額外連接埠時,您可能會看到連線逾時或延遲。如要瞭解有助於防止連線中斷的策略,請參閱「使用動態連接埠分配功能減少連線中斷情形」。

切換通訊埠分配方法

您可以為特定 Cloud NAT 閘道切換靜態埠位分配和動態埠位分配。

只有在符合下列任一條件時,切換至動態通訊埠分配方法才會中斷現有的 NAT 連線:

  • 您將每個 VM 的通訊埠數量上限設為低於先前 NAT 設定 (使用靜態通訊埠分配) 中指定的每個 VM 通訊埠數量下限。

    如果在先前的設定中,每個 VM 的通訊埠數量下限設為大於 1024,且您在新設定中將 1024 指定為每個 VM 的通訊埠數量上限,則會因為第一個條件優先,導致現有連線中斷。

  • 您將每個 VM 的通訊埠數量上限設為小於 1024 的值。

除非符合上述任一條件,否則切換至動態通訊埠分配功能「不會」中斷現有的 NAT 連線。

停用動態通訊埠分配功能並改用靜態通訊埠分配功能會造成中斷,並中斷所有有效的 NAT 連線。

連接埠預留程序

Cloud NAT 會使用下列程序,為 Cloud NAT (包括公開 NAT 和私人 NAT) 閘道服務的每個 VM 佈建 NAT 來源 IP 位址和來源連接埠元組。

  1. Cloud NAT 會判斷應執行 NAT 的 VM 內部 IP 位址。VM 內部 IP 位址是由閘道已設定用於服務的子網路 IP 位址範圍決定。

    • 如果公開 NAT 閘道已設定為針對 VM 網路介面使用的子網路主要 IP 位址範圍執行 NAT,閘道就會針對 VM 的主要內部 IP 位址和任何來自子網路主要 IP 位址範圍的 VM 別名 IP 範圍執行 NAT。

    • 如果公開 NAT 閘道已設定為針對 VM 網路介面所用子網路的次要 IP 位址範圍執行 NAT,閘道就會針對該子網路的次要 IP 位址範圍中的任何別名 IP 範圍執行 NAT。

    由於私人 NAT 閘道已設定為針對 VM 網路介面使用的子網路的所有 IP 位址範圍執行 NAT,因此閘道會針對該子網路的所有 IP 範圍執行 NAT。

  2. Cloud NAT 會視需求調整每個 VM 執行個體的通訊埠數量下限。如果已設定靜態通訊埠分配功能,且閘道會針對具有多個位址 (網路遮罩小於 /32) 的別名 IP 範圍執行 NAT,Cloud NAT 會將每個 VM 的通訊埠數量下限調整為下列兩個值的最大值:

    • 您指定的每個 VM 執行個體的最低通訊埠數量

    • 1,024

    在所有其他情況下 (包括設定動態通訊埠分配功能時),Cloud NAT 閘道會使用每個 VM 執行個體的指定通訊埠數量下限做為輸入內容,繼續進行下一個步驟。如果未指定每個 VM 執行個體的最低通訊埠數量,系統會採用預設值:64 為靜態通訊埠分配,32 為動態通訊埠分配。

  3. Cloud NAT 會為每個 VM 保留 NAT 來源 IP 位址和來源連接埠元組。Cloud NAT 閘道會使用上一個步驟中指定或調整的每個 VM 執行個體最低通訊埠數量,計算要指派給 VM 的 NAT 來源 IP 位址和來源通訊埠元組數量。

    針對公開 NAT, Google Cloud 會使用 2 的倍數分配 NAT 來源 IP 位址和來源通訊埠元組,因此 NAT 來源 IP 位址和來源通訊埠元組的數量會大於或等於您指定的每個 VM 執行個體所需的最低通訊埠數量。

    針對私人 NAT, Google Cloud 會為每個 VM 分配兩倍的必要通訊埠數量下限,以確保可靠性。請確認 Private NAT 指派 IP 位址和通訊埠的子網路大小是否適當。

    • 如果 Cloud NAT 閘道使用兩個以上的 NAT IP 位址,NAT 來源 IP 位址和來源通訊埠元組可能會跨越多個 NAT IP 位址。單一 NAT IP 位址可能沒有足夠的可用來源通訊埠,無法容納 VM 所需的 NAT 來源 IP 位址和來源通訊埠元組數量。

    • Cloud NAT 閘道會將來源 IP 位址和來源通訊埠元組分配給每個 VM。

      • 如果您已設定靜態通訊埠分配,來源 IP 位址和來源通訊埠元組的數量就會固定。每部 VM 最多只能使用所分配的來源 IP 位址和來源通訊埠元組數量,即使在流量激增期間也是如此。

      • 如果您已設定動態通訊埠分配功能,來源 IP 位址和來源通訊埠元組的數量可視需求而變更。如果 VM 目前的通訊埠分配量即將用盡,Cloud NAT 會分配額外的通訊埠,不過會以您指定的每個 VM 執行個體通訊埠數量上限值為限。當 VM 的通訊埠用量降至低於閾值時,系統就會釋出通訊埠,並將其分配給其他 VM。

增加每個 VM 的通訊埠數量

如果您已設定使用靜態通訊埠分配功能的 Cloud NAT 閘道,當您在閘道上增加每個 VM 的通訊埠數量下限時,流量就不會中斷。

如果您已設定具備動態通訊埠分配功能的 Cloud NAT 閘道,則增加每個 VM 的通訊埠數量下限、上限,或兩者皆增加不會中斷現有的 NAT 連線,也不會中斷透過 NAT 閘道傳送的流量。

增加 VM 的通訊埠數量時,請考量以下事項:

  • 使用公開 NAT 搭配手動 NAT IP 位址指派功能時,您必須計算所需的 NAT 來源 IP 位址數量。在增加每個 VM 的最低通訊埠數量之前,請先將至少相同數量的 NAT IP 位址指派給公開 NAT 閘道。

  • 使用 Public NAT 搭配自動 NAT IP 位址分配功能時,如果增加每個 VM 的通訊埠最低數量,Public NAT 閘道就會自動取得及分配更多區域外部 IP 位址。

  • 使用私人 NAT 時,請確認閘道分配 IP 位址的子網路有足夠的 IP 位址。

減少每個 VM 的通訊埠數量

如果您已設定使用靜態通訊埠分配的 Cloud NAT 閘道,並且減少閘道上每個 VM 的通訊埠數量下限,就不會發生連線耗盡的情況。已建立的 NAT 連線會立即中斷,用戶端必須建立新的 TCP 連線。

如果您已設定具備動態連接埠分配功能的 Cloud NAT 閘道,則下列陳述式為真:

  • 降低每個 VM 的通訊埠數量下限不會中斷現有的 NAT 連線,也不會中斷透過 NAT 閘道傳送的流量。
  • 降低每個 VM 的通訊埠數量上限會立即中斷所有現有的 NAT 連線,且所有 VM 的分配通訊埠數量會暫時重設為每個 VM 的最低通訊埠數量指定值。

通訊埠和連線

Cloud NAT 閘道為 VM 保留的 NAT 來源 IP 位址和來源通訊埠元組數量,會限制 VM 可與特定目的地建立的連線數量:

  • 「獨特目的地」是指由目標 IP 位址、目標通訊埠和 IP 通訊協定 (例如 TCP 或 UDP) 組成的不重複 3 元組。

  • 「連線」是指不重複的 5 元組,其中包含 NAT 來源 IP 位址和來源通訊埠元組,以及不重複的目的地 3 元組。由於 UDP 通訊協定是無連線的,因此連線的概念已簡化為與唯一 UDP 資料單元相關聯的 5 元組。

假設 Cloud NAT 閘道依據通訊埠保留程序,為 VM 計算 1,024 個固定通訊埠數量。Cloud NAT 閘道會為 VM 保留 1,024 個 NAT 來源 IP 位址和來源通訊埠元組的組合。Cloud NAT 閘道可處理 1,024 個同時連線至每個獨特目的地 3 元組。不過,Cloud NAT 會將關閉的連線視為在連線關閉後的 120 秒內「無法使用」,這可能會影響同時使用的連線數量。

範例:

  • 閘道支援使用 TCP 通訊協定,透過通訊埠 80 同時連線至目的地 IP 位址 203.0.113.99 的 1,024 個連線。

  • 閘道也支援另一個 1,024 個同時連線,這些連線會使用 TCP 通訊協定,並連線至位於 443 的相同目的地 IP 位址。

  • 閘道也支援另一個 1,024 個同時連線,連線至通訊埠 80 上的不同目的地 IP 位址,同樣使用 TCP 通訊協定。

同時使用通訊埠重複使用和端點獨立對應

只要目的地 3 元組中的至少有一項資訊 (目的地 IP 位址、目的地通訊埠、通訊協定) 有所變更,同一個 NAT 來源 IP 位址和來源通訊埠元組就能同時用於多個不同的連線。

公開 NAT 會使用 端點獨立對應,如 RFC 5128 的第 2.3 節所定義。因此,如果公開 NAT 將相同的 NAT 來源 IP 位址和來源通訊埠元組指派給多個客戶端 VM 的內部 IP 位址和暫時性來源通訊埠,則客戶端 VM 可對不重複目的地 3 元組建立的同時連線數量可能會減少。如果用戶端 VM 有大量內部來源 IP 位址,並且建立大量連線至相同目的地 3 元組,就會發生這種情況。當用戶端 VM 第一次從內部 IP 位址和臨時來源埠傳送封包時,Public NAT 會在以下項目之間建立多對一端點無關對應:

  • 內部 IP 位址和臨時來源通訊埠元組
  • 不重複的 NAT 來源 IP 位址和來源通訊埠元組

舉例來說,當用戶端 VM 使用臨時來源通訊埠 10001,從其內部 IP 位址 10.0.0.2 傳送封包時,Public NAT 會指派 10.0.0.2:10001。接著,這個 NAT 來源 IP 位址和來源通訊埠元組會用於10.0.0.2:10001 到任何目的地 3 元組的所有後續連線

如果同一個 VM 使用不同的臨時來源通訊埠傳送封包 (例如 10.0.0.2:20002),公開 NAT 也會為從 10.0.0.2:20002 到任何目的地 3 元組的所有後續連線,指派 NAT 來源 IP 位址和來源通訊埠元組。在某些情況下,Public NAT 可能會將相同的 NAT 來源 IP 位址和來源通訊埠組合指派給這些內部 IP 位址和臨時來源通訊埠組合的兩者,導致端點獨立衝突

如需更詳細的範例,請參閱「不依端點而異的對應衝突範例」。

減少端點獨立衝突

您可以調整設定,減少端點獨立的衝突。詳情請參閱「封包遭到捨棄,原因為端點獨立衝突」。

延遲 TCP 來源通訊埠重複使用

Cloud NAT 閘道關閉 TCP 連線後, Google Cloud會強制延遲,讓閘道能夠重複使用相同的 NAT 來源 IP 位址和來源通訊埠元組,以及相同的目標 (目標 IP 位址、目標通訊埠和通訊協定)。延遲時間長度由 TCP TIME_WAIT 逾時設定控制。

如有需要,您可以修改 TCP TIME_WAIT 逾時的預設值,縮短這段延遲時間。如要瞭解如何修改 NAT 逾時時間,請參閱「變更 NAT 逾時時間」。或者,您也可以進行下列任一變更:

  • 提高每個 VM 執行個體的通訊埠數量下限,讓通訊埠保留程序為 VM 指派更多 NAT 來源 IP 位址和來源通訊埠元組。

  • 如果 VM 需要使用相同的通訊協定,快速開啟及關閉連往相同目的地 IP 位址和目的地通訊埠的 TCP 連線,請將外部 IP 位址指派給 VM,並使用防火牆規則限制未經授權的傳入連線,而非使用 Cloud NAT。

來源通訊埠和安全性

如果您將來源通訊埠隨機化做為安全措施,請考量以下事項:

  • 提高每個 VM 執行個體的通訊埠數量下限,讓通訊埠保留程序為 VM 指派更多 NAT 來源 IP 位址和來源通訊埠元組。增加每個 VM 執行個體的通訊埠數量下限,可隨機為每個 VM 指派一組通訊埠,但從該組中選取的來源通訊埠是連續的。

  • 將外部 IP 位址指派給 VM,而非使用公用 NAT。

範例

以下範例說明 Cloud NAT 如何為 VM 保留 NAT 來源 IP 位址和來源連接埠,以及如何為傳送至網際網路的封包執行 NAT。

通訊埠保留

以下範例說明如何應用連接埠保留程序

假設您要設定公開 NAT 閘道,為子網路的主要 IP 位址範圍提供 NAT,而使用該子網路的 VM 沒有任何子網路主要 IP 位址範圍的別名 IP 範圍。將任何除法運算的結果向下捨入至最接近的整數。⌊⌋ 是捨去小數 (整數) 函式,也就是捨棄除法運算的任何小數結果。

  • 如果您使用手動指派功能,為公開 NAT 閘道設定單一 NAT IP 位址,並將每個 VM 執行個體的通訊埠數量下限設為 64,閘道最多可為 1,008 個 VM 提供 NAT 服務:

    ⌊(1 個 NAT IP 位址) × (每個位址 64,512 個通訊埠) / (每個 VM 64 個通訊埠)⌋ = 1,008 個 VM

  • 如果您需要支援超過 1,008 個 VM,可以為 Cloud NAT 閘道指派第二個 NAT IP 位址。使用兩個 NAT IP 位址,並將每個 VM 的通訊埠數量下限設為 64,即可支援 2,016 個 VM:

    ⌊(2 個 NAT IP 位址) × (每個位址 64,512 個通訊埠) / (每個 VM 64 個通訊埠)⌋ = 2,016 個 VM

  • 如果您將每個 VM 的通訊埠數量下限設為 4,096,每個 NAT IP 位址可支援 15 個 VM。這項計算會向下捨入至最接近的整數:

    ⌊(1 個 NAT IP 位址) × (每個位址 64,512 個通訊埠) / (每個 VM 4,096 個通訊埠)⌋ = 15 個 VM

假設您要設定私人 NAT 閘道,為子網路的所有 IP 位址提供 NAT:

  • 您可以建立的子網路最小大小為八個 IPv4 位址,也就是 /29 的子網路遮罩。如果您設定私人 NAT 閘道,並使用最小大小的 NAT 子網路,並將每個 VM 執行個體的通訊埠數量下限設為 64,閘道最多可為 2,016 個 VM 提供 NAT 服務:

    ⌊(2(32-29) - 4) NAT IP 位址 × (每個位址 64,512 個連接埠) / (每個 VM 64 個連接埠 × 2)⌋ = 2,016 個 VM

    在前述範例中,如果您將每個 VM 執行個體的通訊埠數量下限設為 1024,閘道最多可為 126 個 VM 提供 NAT 服務:

    ⌊(2(32-29) - 4) 個 NAT IP 位址 × (每個位址 64,512 個連接埠) / (每個 VM 1024 個連接埠 × 2)⌋ = 126 個 VM

  • 如果您設定的 Private NAT 閘道 NAT 子網路遮罩為 /28,並將每個 VM 執行個體的通訊埠數量下限設為 64,閘道最多可為 6,048 個 VM 提供 NAT 服務:

    ⌊(2(32-28) - 4) 個 NAT IP 位址 × (每個位址 64,512 個連接埠) / (每個 VM 64 個連接埠 × 2)⌋ = 6,048 個 VM

端點獨立對應衝突

以下範例說明即使有足夠的免費 NAT 來源 IP 位址和來源通訊埠元組可供用戶端 VM 使用,端點獨立對應功能仍可能減少從用戶端 VM 連線至相同目的地 3 元組並行連線數量。

假設您已設定 Public NAT 閘道,為子網路的主要 IP 位址範圍提供 NAT。您已建立用戶端 VM,其中包含一個網路介面,其主要內部 IP 位址為該子網路中的 10.0.0.2。範例 VM 的網路介面並未指派外部 IP 位址。

  1. VM 會開啟具有下列特性的連線:

    • 來源內部 IP 位址和通訊埠:10.0.0.2:10001
    • 目的地 3 元組:使用 TCP 的 203.0.113.1:80
    • 公開 NAT 會使用下列 NAT 來源 IP 位址和來源通訊埠組合:192.0.2.10:30009
  2. VM 會開啟第二個連線,其特徵如下:

    • 來源內部 IP 位址和通訊埠:10.0.0.2:10002
    • 目的地 3 元組:使用 TCP 的 203.0.113.2:80
    • 公開 NAT 可能會選擇為此連線使用相同的 NAT 來源 IP 位址和來源通訊埠組合 192.0.2.10:30009。您可以使用相同的 NAT 來源 IP 位址和來源通訊埠組合,為不同的用戶端 IP 位址和臨時來源通訊埠使用。
  3. 當第一和第二個連線都處於活動狀態時,公開 NAT 無法開啟具有下列特性的第三個 TCP 連線:

    • 與第一個連線相同的來源內部 IP 位址和通訊埠: 10.0.0.2:10001
    • 與第二個連線相同的目的地 3 元組:使用 TCP 的 203.0.113.2:80

    由於第一個連線建立的端點獨立對應關係規定 10.0.0.2:10001 的所有連線都必須使用相同的 NAT 來源 IP 位址和來源連接埠元組 192.0.2.10:30009,因此這個第三次連線嘗試會因端點獨立衝突錯誤而中斷。不過,192.0.2.10:30009 已由 203.0.113.2:80 的第二個 TCP 連線使用。

  4. 為了避免產生歧義,只要下列任一條件為真,這個範例中的後續連線嘗試就會成功:

    • 第一個 TCP 連線已關閉。關閉連線後,10.0.0.2:10001192.0.2.10:30009 之間的端點無關對應項目就會移除,因此第三個連線可以對應至不同的 NAT 來源 IP 位址和來源通訊埠元組,以便透過 TCP 與 203.0.113.2:80 通訊。
    • 第二個 TCP 連線已關閉。關閉連線後,10.0.0.2:10001 即可使用 NAT 來源 IP 位址和來源通訊埠 192.0.2.10:30009,透過 TCP 與 203.0.113.2:80 通訊。
    • 第三次連線嘗試會選取其他暫時 (內部) 來源連接埠。在本例中,端點無關對應建立了內部 NAT 來源 IP 位址和來源連接埠 10.0.0.2:1000110.0.0.2:10002 的多對一對應,以便在使用 TCP 與 203.0.113.2:80 通訊時使用 192.0.2.10:30009。如果第三次連線嘗試使用與 1000110002 不同的臨時來源通訊埠,則可能會使用不同的 NAT 來源 IP 位址和來源通訊埠,透過 TCP 與 203.0.113.2:80 通訊。
    • 關閉端點獨立性。關閉後,10.0.0.2:10001 的新連線就不需要使用 192.0.2.10:30009,而是可以使用不同的 NAT 來源 IP 位址和連接埠。

如要瞭解可用來避免衝突的技術,請參閱「減少端點獨立衝突」。

後續步驟