共用方式為


關於 Azure VPN 閘道上的 NAT

本文概述 Azure VPN 閘道中的 NAT (的網路位址轉譯) 支援。 NAT 定義將 IP 封包中的一個 IP 位址轉譯為另一個 IP 位址的機制。 下列為多種 NAT 的案例:

  • 連線具有重疊 IP 位址的多個網路
  • 從具有私人 IP 位址的網路 (RFC1918) 連線至網際網路 (網際網路卸載)
  • 將 IPv6 網路連線至 IPv4 網路 (NAT64)

重要

Azure VPN 閘道 NAT 支援第一個案例,以將內部部署網路或分公司連線至具有重疊 IP 位址的 Azure 虛擬網路。 支援網際網路卸載和 NAT64。

重疊的位址空間

組織通常會使用 RFC1918 中定義的私人 IP 位址,在其私人網路中進行內部通訊。 使用 VPN 透過網際網路或跨私人 WAN 連線至這些網路時,位址空間不得重疊,否則通訊會失敗。 若要連線兩個或更多具有重疊 IP 位址的網路,請在連線網路的閘道裝置上部署 NAT。

NAT 類型:靜態和動態

閘道裝置上的 NAT 會依據 NAT 原則或規則來轉譯來源和/或目的地 IP 位址,以避免位址衝突。 下列為 NAT 轉譯規則的不同類型:

  • 靜態 NAT:靜態規則定義固定的位置對應關聯性。 針對指定的 IP 位址,其會對應至目標集區的相同位置。 靜態規則的對應是無狀態,因為已固定對應。

  • 動態 NAT:針對動態 NAT,依據可用性或具有不同 IP 位址和 TCP/UDP 連接埠的組合,IP 位址可以轉譯為不同的目標 IP 位址。 後者也稱為 NAPT (網路位址和連接埠轉譯)。 動態規則會根據任何指定時間的流量,產生具狀態的轉譯對應。

注意

使用動態 NAT 規則時,流量會是單向,這表示必須從規則內部對應欄位中所呈現的站台起始通訊。 如果從外部對應起始流量,則將不會建立連線。 如果您必須起始雙向流量,請使用靜態 NAT 規則來定義 1:1 對應。

請也考量轉譯的位址集區大小。 如果目標位址集區大小與原始位址集區相同,請使用靜態 NAT 規則,依序定義 1:1 對應。 如果目標位址集區小於原始位址集區,請使用動態 NAT 規則來容納差距。

重要

  • 下列 SKU 支援 NAT:VpnGw2~5、VpnGw2AZ~5AZ。
  • 只有 IPsec 跨單位連線支援 NAT。 不支援 VNet 對 VNet 連線或 P2S 連線。
  • 每個動態 NAT 規則都可以指派給單一連線。

NAT 模式:輸入和輸出

每個 NAT 規則皆會針對對應的網路位址空間,定義位址對應或轉譯關聯性:

  • 輸入:IngressSNAT 規則會將內部部署網路位址空間對應至已轉譯的位址空間,以避免位址重疊。

  • 輸出:EgressSNAT 規則會將 Azure VNet 位址空間對應至其他已轉譯的位址空間。

針對每個 NAT 規則,下列兩個欄位會指定轉譯前後的位址空間:

  • 內部對應:轉譯的位址空間。 針對輸入規則,此欄位會對應至內部部署網路的原始位址空間。 針對輸出規則,此欄位是原始 VNet 位址空間。

  • 外部對應:內部部署網路 (輸入) 或 VNet (輸出) 轉譯的位址空間。 針對連線至 Azure VPN 閘道的不同網路,所有外部對應的位址空間不得相互重疊,且在無 NAT 時不得重疊已連線的網路。

NAT 與路由

定義連線的 NAT 規則後,針對具有規則的連線,會變更有效位址空間。 如果 Azure VPN 閘道上已啟用 BGP,請選取「啟用 BGP 路由轉譯」,自動轉換具有 NAT 連規則的連線上已學習和通告路由:

  • 學習的路由:透過具有 IngressSNAT 規則的連線,學習的路由目地首碼,會針對這些規則從內部對應首碼 (NAT 處理前) 轉譯成外部對應首碼 (NAT 處理後)。

  • 通告的路由:Azure VPN 閘道會針對 VNet 位址空間通告 EgressSNAT 規則的外部對應 (NAT 處理後) 首碼,並通告具有其他連線 NAT 處理前位址首碼的已學習路由。

  • NAT'ed (已進行網路位址轉譯) 內部部署網路的 BGP 對等體 IP 位址考量:

    • APIPA (169.254.0.1 至 169.254.255.254) 位址:NAT 不支援使用 BGP APIPA 位址。
    • 非 APIPA 位址:從 NAT 範圍排除 BGP 對等 IP 位址。

注意

若沒有 IngressSNAT 規則,則不會轉換連線上已學習的路由。 若沒有 EgressSNAT 規則,則也不會轉換通告至連線的 VNet 路由。

NAT 範例

下圖顯示 Azure VPN NAT 設定的範例:

Diagram showing NAT configuration and rules.

此圖表顯示 Azure VNet 和兩個內部部署網路,位址空間皆為 10.0.1.0/24。 若要將這兩個網路連線至 Azure VNet 和 VPN 閘道,請建立下列規則:

  • IngressSNAT 規則 1:此規則會將內部部署位址空間 10.0.1.0/24 轉譯為 100.0.2.0/24。

  • IngressSNAT 規則 2:此規則會將內部部署位址空間 10.0.1.0/24 轉譯為 100.0.3.0/24。

  • EgressSNAT 規則 1:此規則會將 VNet 位址空間 10.0.1.0/24 轉譯為 100.0.1.0/24。

在圖表中,每個連線資源都有下列規則:

  • 連線 1 (VNet-Branch1):

    • IngressSNAT 規則 1
    • EgressSNAT 規則 1
  • 連線 2 (VNet-Branch2)

    • IngressSNAT 規則 2
    • EgressSNAT 規則 1

根據與連線相關聯的規則,以下是每個網路的位址空間:

網路 原始 已轉譯
VNet 10.0.1.0/24 100.0.1.0/24
Branch 1 10.0.1.0/24 100.0.2.0/24
Branch 2 10.0.1.0/24 100.0.3.0/24

下圖顯示從分支 1 到 VNet 的 IP 封包 (NAT 轉譯前後):

Diagram showing before and after NAT translation.

重要

單一 SNAT 規則會定義特定網路的「」向轉譯:

  • IngressSNAT 規則會定義從內部部署網路「進入」AZURE VPN 閘道的來源 IP 位址轉譯。 它也會處理從 VNet 到相同內部部署網路的目的地 IP 位址轉譯。
  • EgressSNAT 規則會定義從 Azure VPN 閘道到內部部署網路的來源 IP 位址轉譯。 它也會處理透過 EgressSNAT 規則連線進入 VNet 之封包的目的地 IP 位址轉譯。
  • 在任一情況下,都不需要任何 DNAT 規則。

NAT 設定

若要依照上述所示實作 NAT 設定,請先在您的 Azure VPN 閘道中建立 NAT 規則,然後使用對應的相關聯 NAT 規則來建立連線。 如需設定跨單位連線的 NAT 步驟,請參閱在 Azure VPN 閘道上設定 NAT

NAT 限制與考量

重要

NAT 功能有幾項限制。

  • 下列 SKU 支援 NAT:VpnGw2~5、VpnGw2AZ~5AZ。
  • 僅支援 IPsec/IKE 跨單位連線的 NAT。 不支援 VNet 對 VNet 連線或 P2S 連線。
  • 已啟用「使用原則型流量選取器」的連線不支援 NAT 規則。
  • 動態 NAT 支援的最大外部對應子網路大小為 /26。
  • 連接埠對應只能設定靜態 NAT 類型。 動態 NAT 案例不適用於連接埠對應。
  • 連接埠對應目前無法採用範圍。 必須輸入個別連接埠。
  • 連接埠對應可用於 TCP 和 UDP 通訊協定。

NAT 常見問題

所有的 Azure VPN 閘道 SKU 上是否都支援 NAT?

VpnGw2~5 和 VpnGw2AZ~5AZ 支援 NAT。

我可以在 VNet 對 VNet 或 P2S 連線上使用 NAT 嗎?

否。

我可以在一個 VPN 閘道上使用多少 NAT 規則?

在一個 VPN 閘道上,您最多可以建立 100 個 NAT 規則 (輸入和輸出規則合計)。

我可以在 NAT 規則名稱中使用 / 嗎?

否。 您會收到錯誤。

NAT 是否可以套用至 VPN 閘道上的所有連線?

NAT 會套用至具有 NAT 規則的連線。 如果連線沒有 NAT 規則,則 NAT 不會對該連線產生任何作用。 在相同的 VPN 閘道中,您可以將使用 NAT 的部分連線和不使用 NAT 的其他連線,共同運作。

Azure VPN 閘道支援哪些類型的 NAT?

僅支援靜態 1:1 NAT 和動態 NAT。 「不」支援 NAT64。

NAT 是否可用於雙主動式 (Active-Active) VPN 閘道?

是。 NAT 可用於雙主動式和主動備用 (Active-Standby) VPN 閘道。 每個 NAT 規則都會套用至 VPN 閘道的單一執行個體。 在主動-主動閘道中,透過 [IP 設定識別碼] 欄位,為每個閘道執行個體建立個別的 NAT 規則。

NAT 是否可與 BGP 連線搭配運作?

可以,您可以使用 BGP 搭配 NAT。 以下是一些重要考量:

  • 在 [NAT 規則設定] 頁面上選取 [啟用 BGP 路由轉譯],確定已知的路由和公告的路由會根據與連線相關聯的 NAT 規則,轉譯為 NAT 處理後位址首碼 (外部對應)。 您必須確定內部部署 BGP 路由器會公告 IngressSNAT 規則中定義的確切首碼。

  • 如果內部部署 VPN 路由器使用一般、非 APIPA 位址,而且與虛擬網路位址空間或其他內部部署網路空間發生衝突,請確定 IngressSNAT 規則會將 BGP 對等互連 IP 轉譯為唯一、非重疊的位址,然後將 NAT 處理後位址放置在區域網路閘道的 [BGP 對等互連 IP 位址] 欄位中。

  • BGP APIPA 位址不支援 NAT。

我是否需要為 SNAT 規則建立相符的 DNAT 規則?

否。 單一 SNAT 規則會定義特定網路的「」向轉譯:

  • IngressSNAT 規則會定義從內部部署網路「進入」AZURE VPN 閘道的來源 IP 位址轉譯。 此規則也會處理從虛擬網路離開到相同內部部署網路的目的地 IP 位址轉譯。

  • EgressSNAT 規則會定義離開 Azure VPN 閘道到內部部署網路的虛擬網路來源 IP 位址轉譯。 此規則也會處理透過 EgressSNAT 規則連線進入虛擬網路之封包的目的地 IP 位址轉譯。

  • 在任一情況下,都不需要任何 DNAT 規則。

如果我的 VNet 或區域網路閘道位址空間有兩個以上的首碼,該怎麼辦? 我可以將 NAT 套用至全部的首碼嗎? 或是只能套用至子集?

您必須針對每一個需要執行 NAT 的首碼建立一個 NAT 規則,因為每個 NAT 規則只能包含一個 NAT 的位址首碼。 例如,如果區域網路閘道位址空間包含 10.0.1.0/24 和 10.0.2.0/25,您可以建立兩個規則,如下所示:

  • IngressSNAT 規則 1:將 10.0.1.0/24 對應至 100.0.1.0/24
  • IngressSNAT 規則 2:將 10.0.2.0/25 對應至 100.0.2.0/25

這兩個規則必須符合對應位址首碼的首碼長度。 虛擬網路位址空間的 EgressSNAT 規則也同樣適用。

重要

如果您只將一個規則連結至上述連線,則「」會轉譯另一個位址空間。

我可以使用哪些 IP 範圍進行外部對應?

您可以使用任何要進行外部對應的適用 IP 範圍,包括公用和私人 IP。

我是否可以使用不同的 EgressSNAT 規則,將 VNet 位址空間轉譯為不同內部部署網路的不同首碼?

可以,您可以為相同的 VNet 位址空間建立多個 EgressSNAT 規則,並將 EgressSNAT 規則套用至不同的連線。

我是否可以在不同的連線上使用相同的 IngressSNAT 規則?

可以,這通常會在連線用於相同內部部署網路以提供備援時使用。 如果連線用於不同內部部署網路,您無法使用相同的輸入規則。

NAT 連線皆需要輸入和輸出兩種規則嗎?

當內部部署網路位址空間與虛擬網路位址空間重疊時,您需要在相同連線上使用輸入和輸出規則。 如果虛擬網路位址空間在所有連線的網路中都是唯一的,則您在這些連線上不需要 EgressSNAT 規則。 您可以使用輸入規則來避免內部部署網路之間的位址重疊。

我選擇什麼做為「IP 設定識別碼」?

「IP 組態識別碼」只是您想要 NAT 規則使用的 IP 組態物件名稱。 透過此設定,您只需要選擇哪個閘道公用 IP 位址會套用至 NAT 規則。 如果您尚未在閘道建立期間指定任何自訂名稱,則閘道的主要 IP 位址會指派給「預設」IPconfiguration,並將次要 IP 指派給「activeActive」IPconfiguration。

下一步

如需設定跨單位連線的 NAT 步驟,請參閱在 Azure VPN 閘道上設定 NAT