IP 位址和通訊埠

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

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

Public NAT IP 位址

Public NAT IP 位址是可在網際網路上路由傳輸的區域外部 IP 位址。如果 VM 沒有外部 IP 位址,且位於 Public NAT 閘道服務的子網路中,當 VM 將封包傳送至網際網路上的目的地時,會使用 Public NAT IP 位址。

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

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

    • 您選取的網路層級
    • 使用閘道的 VM 數量
    • 為每個 VM 保留的通訊埠數量

    如果 Public NAT 不再需要該 NAT IP 位址上的任何來源連接埠,也會自動移除 NAT IP 位址。

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

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

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

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

      如要手動將 VM 從一個 IP 位址重新分配到另一個 IP 位址,盡量減少 IP 位址用量,請使用手動 NAT IP 位址指派。手動指派 NAT IP 位址可排空 Public NAT IP 位址。

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

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

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

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

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

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

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

切換指派方式

您可以將 Public NAT 閘道從自動 NAT IP 位址分配切換為手動 NAT IP 位址指派,但無法保留 NAT IP 位址。雖然自動分配的 NAT IP 位址是靜態的,但無法移至手動 NAT IP 位址指派作業。舉例來說,您無法先使用 Public NAT 閘道和自動分配的 NAT IP 位址,之後再切換為手動指派 NAT IP 位址,並使用相同的位址。

公用 NAT 用於自動 NAT IP 位址分配的區域外部 IP 位址集,與您可手動選擇的區域外部 IP 位址集不同。

排空公開 NAT IP 位址

手動指派 NAT IP 位址來設定 Public NAT 閘道時,您可以選擇在需要減少閘道使用的 NAT IP 位址數量時,該如何處理:

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

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

私人 NAT IP 位址

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

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

Private NAT IP 位址的特徵如下:

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

通訊埠

Cloud NAT 閘道上的每個 NAT IP 位址 (包括 Public NAT 和 Private NAT) 提供 64,512 個 TCP 來源連接埠和 64,512 個 UDP 來源連接埠。每個 IP 位址的 TCP 和 UDP 各支援 65,536 個通訊埠。Cloud NAT 不會使用知名 (具備特殊權限) 的通訊埠 (0 到 1,023)。

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

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

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

靜態通訊埠分配

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

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

由於所有 VM 分配到的通訊埠數量相同,如果所有 VM 的輸出用量相近,最適合使用靜態通訊埠分配。設定靜態通訊埠分配時,分配給每個 VM 的通訊埠數量是固定的,不會因為部分 VM 使用的通訊埠數量較多,或 VM 用盡所有通訊埠而有所變更。如果輸出用量有所不同,建議設定動態通訊埠分配。

如要在 Public NAT 閘道上設定與端點無關的對應 (EIM),必須使用靜態通訊埠分配。與端點無關的對應關係不適用於 Private NAT 閘道。

動態通訊埠分配

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

系統預設會為 Private NAT 啟用動態通訊埠分配功能。 Public NAT 預設使用靜態通訊埠分配功能。

設定動態通訊埠分配功能後,同一個 Cloud NAT 閘道就能根據 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,且您在新設定中將每個 VM 的通訊埠數量上限設為 1024,則現有連線會中斷,因為第一個條件的優先順序較高。

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

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

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

通訊埠預留程序

Cloud NAT 會使用下列程序,為 Cloud NAT (Public NAT 和 Private NAT) 閘道服務的每個 VM,佈建 NAT 來源 IP 位址和來源埠元組。

  1. Cloud NAT 會判斷應執行 NAT 的 VM IP 位址。Cloud NAT 可對內部 IPv4 位址 (NAT44) 和內部/外部 IPv6 位址 (NAT64) 執行 NAT。

    如果是 NAT44,VM 內部 IP 位址是由閘道設定服務的子網路 IP 位址範圍決定:

    • 如果 Public NAT 閘道設定為對 VM 網路介面使用的子網路主要 IPv4 位址範圍執行 NAT,則閘道會對 VM 的主要內部 IPv4 位址和子網路主要 IPv4 位址範圍中的任何 VM 別名 IP 範圍執行 NAT。

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

    • Private NAT 的 Cloud NAT 閘道會自動為 VM 子網路中的所有 IPv4 位址範圍執行 NAT。

    如果是 NAT64,Cloud NAT 閘道會對內部和外部 IPv6 位址執行 NAT。

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

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

    • 數字 1,024

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

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

    如果是 Public NAT,系統會以 2 的次方倍數分配 NAT 來源 IP 位址和來源通訊埠元組,因此 NAT 來源 IP 位址和來源通訊埠元組的數量,會大於或等於您指定的每個 VM 執行個體通訊埠數量下限。 Cloud de Confiance

    如果是 Private NAT,系統會分配的通訊埠數量是每個 VM 要求的最低通訊埠數量的兩倍,以確保可靠性。 Cloud de Confiance 請確認 Private NAT 指派 IP 位址和通訊埠的子網路大小是否適當。

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

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

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

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

增加每個 VM 的通訊埠數量

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

如果您已設定 Cloud NAT 閘道並啟用動態通訊埠分配功能,增加每個 VM 的通訊埠數量下限、上限或兩者,不會中斷現有的 NAT 連線,也不會干擾流經 NAT 閘道的流量。

增加 VM 的通訊埠數量時,請注意下列事項:

  • 使用 Public NAT 並手動指派 NAT IP 位址時,您必須計算所需的 NAT 來源 IP 位址數量。增加每個 VM 的通訊埠下限前,請先為 Public NAT 閘道指派至少相同數量的 NAT IP 位址。

  • 使用 Public NAT 並自動分配 NAT IP 位址時,增加每個 VM 的最少連接埠數,會導致 Public NAT 閘道自動取得並分配更多區域外部 IP 位址。

  • 使用 Private 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 元組。

  • 連線是指由 NAT 來源 IP 位址和來源埠元組組成的專屬 5 元組,以及專屬目的地 3 元組。由於 UDP 通訊協定沒有連線,連線概念會縮減為與專屬 UDP 資料報相關聯的 5 元組。

假設 Cloud NAT 閘道按照通訊埠預留程序,為 VM 計算出 1,024 個固定通訊埠數。Cloud NAT 閘道會為 VM 保留 1,024 個 NAT 來源 IP 位址和來源通訊埠元組的獨特組合。Cloud NAT 閘道可處理 1,024 個同時連線,每個連線都具有不重複的目的地 3 元組。不過,Cloud NAT 會將已關閉的連線視為無法使用,直到 TCP TIME_WAIT 逾時為止,這可能會影響一次使用的連線數量。

範例:

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

  • 閘道也支援在通訊埠 443 上,使用 TCP 通訊協定與相同目的地 IP 位址建立「另外」 1,024 個並行連線。

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

同時重複使用通訊埠和與端點無關的對應

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

Public NAT 會使用獨立於端點的對應,如 RFC 5128 第 2.3 節所定義。因此,如果 Public 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),則 Public NAT 也會為 10.0.0.2:20002 後續連線至任何目的地 3 元組指派 NAT 來源 IP 位址和來源通訊埠元組。Public NAT 可能會將相同的 NAT 來源 IP 位址和來源通訊埠元組,指派給這些內部 IP 位址和臨時來源通訊埠元組,在特定情況下導致端點獨立衝突。

如需更詳細的範例,請參閱「與端點無關的對應衝突範例」。

減少端點獨立性衝突

您可以變更設定,減少端點獨立衝突。 詳情請參閱「Packets dropped with reason endpoint independent conflict」。

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

當使用 Cloud NAT 閘道的 VM 關閉 TCP 連線時,會發生兩種獨立的延遲:

  • Cloud NAT TIME_WAIT 逾時:Cloud NAT 會強制延遲,然後才能將新連線對應至相同的 NAT 後 5 元組 (NAT 來源 IP 位址、NAT 來源通訊埠、目的地 IP 位址、目的地通訊埠和通訊協定)。這項延遲是由 TCP TIME_WAIT 逾時設定控制。Cloud NAT TIME_WAIT 的預設值為 30 秒或 120 秒,視您建立閘道的時間而定。如要瞭解如何設定自訂 Cloud NAT 逾時值,請參閱「變更 NAT 逾時」。TIME_WAIT

  • VM 的TIME_WAIT逾時:用戶端 VM 的作業系統有自己的TIME_WAIT,代表用戶端 VM 使用相同的 NAT 前 5 元組 (原始來源 IP 位址、來源埠、目的地 IP 位址、目的地埠和通訊協定) 建立新連線前的延遲時間。Linux 系統的預設 TIME_WAIT 為 60 秒,Windows 系統的預設 TIME_WAIT 為 240 秒。

用戶端 VM 的 TIME_WAIT 可以大於或等於 Cloud NAT TIME_WAIT。降低 Cloud NAT TIME_WAIT 超時值時,不需要相應減少用戶端 VM 的 TIME_WAIT。

如果用戶端 VM 需要快速開啟及關閉與相同目的地 3 元組 (目的地 IP 位址、目的地通訊埠和通訊協定) 的 TCP 連線,較短的 Cloud NAT TIME_WAIT逾時時間就很有用,因為閘道可以更快將新連線對應至先前使用的 NAT 後 5 元組。

來源通訊埠和安全性

如果您依賴來源通訊埠隨機化做為安全措施,請考慮下列事項:

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

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

範例

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

保留通訊埠

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

假設您要設定 Public NAT 閘道,為子網路的主要 IP 位址範圍提供 NAT,而使用該子網路的 VM 沒有來自子網路主要 IP 位址範圍的任何別名 IP 位址範圍。將任何除法運算的結果無條件捨去至最接近的整數。⌊⌋ 是底數 (最大整數) 函式,表示捨棄除法的任何分數結果。

  • 如果您使用手動指派方式,為 Public 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

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

  • 您可建立的最小子網路大小為八個 IPv4 位址,也就是 /29 的子網路遮罩。如果您使用最小大小的 NAT 子網路設定 Private 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

端點獨立對應衝突

以下範例說明端點獨立對應如何減少用戶端 VM 與相同目的地 3 元組的 並行連線數量,即使用戶端 VM 有足夠的可用 NAT 來源 IP 位址和來源埠元組也一樣。

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

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

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

    • 來源內部 IP 位址和通訊埠:10.0.0.2:10002
    • 目的地 3 元組:203.0.113.2:80 (使用 TCP)
    • Public NAT 也可能會選擇使用相同的 NAT 來源 IP 位址和來源通訊埠元組 192.0.2.10:30009 來建立這個連線。針對不同的用戶端 IP 位址和暫時性來源通訊埠,使用相同的 NAT 來源 IP 位址和來源通訊埠元組是可行的。
  3. 當第一個和第二個連線都處於啟用狀態時,Public NAT 無法開啟具有下列特徵的第三個 TCP 連線:

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

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

  4. 為消除模稜兩可的情況,只要符合下列任一條件,這個範例中的後續連線嘗試就會成功:

    • 第一個 TCP 連線已關閉。關閉連線會移除 10.0.0.2:10001 和 192.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:10001 和 10.0.0.2:10002 建立一對多對應,以便在透過 TCP 與 203.0.113.2:80 通訊時使用 192.0.2.10:30009。如果第三次嘗試連線時使用的暫時來源通訊埠與 10001 和 10002 皆不相同,則可能使用不同的 NAT 來源 IP 位址和來源通訊埠,透過 TCP 與 203.0.113.2:80 通訊。
    • 關閉端點獨立性。切換後,10.0.0.2:10001 的新連線就不必使用 192.0.2.10:30009,可以改用其他 NAT 來源 IP 位址和連接埠。

如需避免衝突的技巧,請參閱「減少端點獨立衝突」。

後續步驟