IP 位址和通訊埠

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

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

公開 NAT IP 位址

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

切換指派方法

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

Public 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 位址範圍。Private NAT IP 位址無法在網際網路上路由。私有 NAT 子網路主要 IPv4 位址範圍的 IP 位址,只能由私有 NAT 閘道使用。如要建立 Private NAT 子網路,請使用 Google Cloud CLI 和 --purpose=PRIVATE_NAT 標記新增僅限 IPv4 的子網路

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

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

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

通訊埠

Cloud NAT 閘道上的每個 NAT IP 位址 (包括公開 NAT 和私人 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 的最低通訊埠數量,Google Cloud 會使用預設值。

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

由於所有 VM 分配到的通訊埠數量相同,如果所有 VM 的輸出用量相近,最適合使用靜態通訊埠分配功能。設定靜態通訊埠分配功能之後,分配給每個 VM 的通訊埠數量就會固定,不會因為部分 VM 使用的通訊埠數量多於其他 VM,或 VM 用盡所有通訊埠而改變。如果輸出用量有所不同,請考慮設定動態通訊埠分配

如要在 Public NAT 閘道上設定與端點無關的對應關係,必須使用靜態通訊埠分配。私人 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 閘道切換靜態和動態連接埠配置。

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

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

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

  • 您將每個 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。

    由於 Private NAT 閘道已設定為對 VM 網路介面使用的子網路所有 IP 位址範圍執行 NAT,因此閘道會對該子網路的所有 IP 範圍執行 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, Google Cloud 系統會以 2 的倍數分配 NAT 來源 IP 位址和來源通訊埠元組,因此 NAT 來源 IP 位址和來源通訊埠元組的數量會大於或等於您指定的每個 VM 執行個體通訊埠數量下限。

    如果是 Private NAT,系統會分配每個 VM 要求的通訊埠數量下限的兩倍,以確保可靠性。 Google Cloud 請確認 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 的虛擬函式 (VF) 數量時,請注意下列事項:

  • 使用公開 NAT 並手動指派 NAT IP 位址時,您必須計算所需的 NAT 來源 IP 位址數量。增加每個 VM 的最低通訊埠數之前,請先為公開 NAT 閘道指派至少該數量的 NAT IP 位址。

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

  • 連線是指由 NAT 來源 IP 位址和來源通訊埠元組,加上不重複的目的地 3 元組所構成的不重複 5 元組。由於 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 個同時連線,連線至通訊埠 443 上的相同目的地 IP 位址,同樣使用 TCP 通訊協定。

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

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

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

公開 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 位址和來源通訊埠元組。公開 NAT 可能會將相同的 NAT 來源 IP 位址和來源通訊埠元組指派給這兩者,導致在特定情況下發生端點獨立衝突

如需更詳細的範例,請參閱「Endpoint-Independent Mapping 衝突範例」。

減少端點獨立衝突

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

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 隨機指派通訊埠範圍;不過,從該範圍中選擇的來源通訊埠是連續的。

  • 為 VM 指派外部 IP 位址,而非使用 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 的子網路遮罩。如果您設定的 Private 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 元組:203.0.113.1:80 (使用 TCP)
    • 公用 NAT 使用下列 NAT 來源 IP 位址和來源通訊埠元組:192.0.2.10:30009
  2. VM 會開啟第二個連線,具有下列特徵:

    • 來源內部 IP 位址和通訊埠:10.0.0.2:10002
    • 目的地 3 元組:203.0.113.2:80 (使用 TCP)
    • 公開 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: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 建立多對一對應,以便在與 203.0.113.2:80 進行 TCP 通訊時使用 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 位址和連接埠。

如要瞭解如何避免衝突,請參閱「減少端點獨立衝突」。

後續步驟