防止 Azure 中的 IPv4 耗盡

Azure 防火牆
Azure 虛擬網路
Azure Private Link

本文說明如何在 Azure 中建置大型網路時,將私人地址空間耗用量降至最低。 如果未建立適當的配置原則,而且您用盡私人IP位址指派給 Azure 虛擬網路,您可能需要將位址空間耗用量降至最低。 本文提供 Azure 中適當 IP 位址管理的兩種方法。

案例詳細資料

公司網路通常會使用位於 RFC 1918 中定義之私人 IPv4 位址範圍中的地址空間。 地址範圍是 10.0.0.0/8、172.16.0.0/12 和 192.168.0.0/16。 在內部部署環境中,這些範圍提供足夠的IP位址,以符合即使是最大網路的需求。 因此,許多組織會開發位址管理做法,以優先處理簡單的路由設定和IP配置的敏捷式程式。 有效率地使用位址空間不是優先順序。

在雲端中,大型混合式網路很容易建置,而一些常見的架構模式,例如微服務或容器化,可能會導致IP位址耗用量增加。 因此,請務必調整這些位址管理做法。 在雲端環境中,將私人 IPv4 位址視為有限的資源。

Azure 虛擬網絡 IP 位址範圍

在您的 Azure 虛擬網路中,建議您使用 RFC 1918 所定義的位址區塊。 這些位址區塊適用於一般用途的專用網,而且在公用因特網上無法路由傳送。

您可以使用其他範圍,但在虛擬網路中使用這些範圍之前,請閱讀因特網指派號碼授權單位 (IANA) 檔,以瞭解對您的環境的潛在影響。 您可以使用下列範圍:

  • RFC 6598 所定義的共用位址空間,用於將 Azure 虛擬網絡 中視為私人地址空間的電信級網路位址轉換(NAT)。 位址區塊是 100.64.0.0/10。
  • 您組織不擁有的公用因特網路由IP位址。 不建議這種做法,因為虛擬網路中的資源無法存取透過公用IP位址公開的因特網端點。
  • IANA 所定義的特殊用途位址區塊,例如 192.0.0.0/24、192.0.2.0/24、 192.88.99.0/24、198.18.0.0/15、198.51.100.0/24、203.0.113.0/24 和 233.252.0.0/24。

注意

Windows 會封鎖類別 E IP 位址範圍 240.0.0.0/4,使其指派給 NIC,並在 Linux 的情況下發生相容性問題。 因此,雖然有可能以程序設計方式將範圍指派給虛擬網路,但我們不建議其在 Azure 虛擬網路中使用。

注意

先前的範圍不會為有 IPv4 耗盡問題的組織提供長期解決方案。 在此情況下,您應該將私人地址空間耗用量降至最低。

您無法在 Azure 虛擬網路中使用下列 IP 位址範圍:

  • 224.0.0.0/4 (多點傳送)
  • 255.255.255.255/32 (廣播)
  • 127.0.0.0/8 (回送)
  • 169.254.0.0/16 (Link-local)
  • 168.63.129.16/32 (內部 DNS)

Azure 登陸區域對齊

本文中的建議適用於以 Azure 登陸區域架構為基礎的案例。 指引假設:

  • 每個區域都有中樞和輪輻拓撲。
  • 位於不同區域的中樞和輪輻網路會透過全域虛擬網路對等互連或與相同 Azure ExpressRoute 線路或線路的連線彼此連線。
  • 中樞和輪輻網路會透過 ExpressRoute 線路和站對站 VPN 的組合連線到內部部署網站。

下圖顯示範例架構。 這些建議同樣適用於建置在 Azure 虛擬 WAN 之上的網路,此網路在每個區域中也有中樞和輪輻網路。

顯示區域中樞和輪輻拓撲的圖表。下載此架構的PowerPoint檔案

在以 Azure 登陸區域架構為基礎的案例中,應用程式會部署在自己的登陸區域中。 每個登陸區域都包含與區域中樞對等互連的輪輻虛擬網路。 輪輻虛擬網路是公司網路不可或缺的一部分,而且會指派可路由傳送的 IPv4 位址。 這些位址在整個公司網路中都是唯一的。 因此,部署在 Azure 中的所有架構元件 虛擬網絡 會取用公司網路位址空間中的 IPv4 位址,即使只有少數元件公開必須從整個公司網路連線的端點也一樣。 這些架構元件可能是虛擬機、第一方或第三方網路虛擬設備(NVA),或虛擬網路插入的平臺即服務(PaaS)服務。

針對本文的其餘部分, 前端元件 是指可從整個公司網路或元件登陸區域外部連線的應用程式元件。 後端元件 是指不會在公司網路中公開端點的應用程式元件,而且只需要從自己的登陸區域內連線。 例如,公開端點的 Web 應用程式是前端元件,而未公開端點的資料庫則是後端元件。

下列各節說明當您在 Azure 中建置大型網路時,將私人地址空間耗用量降至最低的兩種方法。

方法 1:不可路由登陸區域輪輻虛擬網路

RFC 1918 會將IP位址封鎖排除在IPv4 32位位址空間外,並使其在公用因特網上無法路由傳送,因此您可以在多個專用網中重複使用它們以進行內部通訊。 此方法是以套用至私人地址空間的相同原則為基礎。 一或多個位址範圍會從組織所使用的整個私人地址空間中刻出,並在組織的公司網路中宣告為不可路由。 位址範圍會在多個登陸區域中重複使用。 因此,每個登陸區域:

  • 會指派由一或多個位址範圍組成的可路由地址空間。 您的組織會集中管理位址範圍,並將它們唯一指派給登陸區域,以便與公司網路通訊。 路由空間中的位址會指派給前端元件。
  • 可以使用不可路由位址空間,這是貴組織在公司網路中宣告不可路由的位址範圍。 您可以在所有登陸區域中使用這些保留範圍進行內部通訊。 不可路由空間中的位址會指派給後端元件。

在客戶管理的 Azure 中樞和輪輻網路中,或以虛擬 WAN 為基礎,兩個以上的輪輻虛擬網路不能有重疊的 IP 位址空間。 無法路由位址區塊指派給登陸區域支點。 虛擬網路對等互連是不可傳輸的,因此登陸區域輪輻虛擬網路可以與 具有不可路由位址空間的第二層 輪輻虛擬網路對等互連。 下圖顯示登陸區域的雙重虛擬網路拓撲。

此圖顯示登陸區域的雙重虛擬網路拓撲。下載此架構的PowerPoint檔案

每個應用程式登陸區域都包含兩個對等互連的虛擬網路。 一個虛擬網路具有可路由傳送的IP位址,並裝載前端元件。 另一個虛擬網路具有不可路由的IP位址,並裝載後端元件。 具有區域中樞的可路由登陸區域輪輻對等互連。 具有可路由登陸區域支點的不可路由登陸區域輪輻對等。 虛擬網路對等互連不具傳輸性,因此區域中樞或公司網路的其餘部分看不到不可路由的前置詞。 可路由的虛擬網路無法使用不可路由的位址範圍。 某些組織已將已指派給可路由網路的分散地址空間。 識別未使用的大型位址區塊並宣告它們不可路由,可能很困難。 在此情況下,請考慮未包含在 RFC 1918 位址空間中的未使用位址。 上圖提供可路由輪輻虛擬網路中的電信業級 NAT 位址範例,例如 RFC 6598。

單一虛擬網路登陸區域移轉

虛擬網路對等互連提供兩個對等互連虛擬網路之間的完整第 3 層連線。 部署在傳統單一虛擬網路登陸區域中的應用程式元件可以透過IP彼此通訊,在登陸區域中可路由傳送和不可路由輪輻虛擬網路之間自由移動。 本節說明兩個典型的移轉模式。

下列應用程式會透過第 7 層應用程式傳遞控制器公開:

此圖顯示透過第 7 層應用程式傳遞控制器公開之應用程式的移轉模式。下載此架構的PowerPoint檔案

透過第 7 層應用程式傳遞控制器公開的應用程式可以移至不可路由輪輻。 應用程式傳遞控制器是唯一必須位於可路由登陸區域支點中的前端元件。

下列應用程式會透過 Azure 負載平衡器公開:

此圖顯示透過 Azure Load Balancer 公開之應用程式的移轉模式。下載此架構的PowerPoint檔案

如果應用程式透過 Azure 負載平衡器公開其端點,則屬於負載平衡器後端集區一部分的計算實例必須保留在相同的虛擬網路中。 Azure 負載平衡器只支援自己的虛擬網路中的後端實例。

輸出相依性

應用程式的後端元件不需要從公司網路連線或接收輸入連線,但通常具有輸出相依性。 後端元件可能需要連線到其登陸區域以外的端點,例如 DNS 解析、Active Directory 網域服務 域控制器、存取其他登陸區域公開的應用程式端點,或存取記錄或備份設備。

注意

透過 NAT 的用戶端對 Active Directory 網域服務 (ADDS) 域控制器 (DC) 通訊已經過測試且受到支援、DC 對 DC 通訊尚未測試,且不支援如說明透過 NAT 的 Active Directory 支援界限說明中所述

當服務在不可路由輪輻虛擬網路中起始連線時,您必須針對可路由 IP 位址後面的連線實作來源 NAT (SNAT)。 若要實作 SNAT,請在可路由輪輻虛擬網路中部署具有 NAT 功能的裝置。 每個登陸區域都會執行自己的專用NAT NVA。 在登陸區域中實作 SNAT 有兩個選項:Azure 防火牆 或第三方 NVA。 在這兩種情況下,不可路由輪輻中的所有子網都必須與自定義路由表相關聯。 如下圖所示,路由表會將流量轉送至登陸區域以外的目的地至 SNAT 裝置。 Azure NAT 閘道不支援以私人IP位址空間作為流量的 SNAT,例如 RFC 1918 空間。

顯示自定義路由表如何將流量轉送至 SNAT 裝置的圖表。下載此架構的PowerPoint檔案

透過 Azure 防火牆 實作 SNAT

Azure 防火牆:

  • 提供高可用性。
  • 提供原生延展性和三個不同的 SKU。 SNAT 不是需要大量資源的工作,因此請先考慮基本 SKU。 對於需要大量來自不可路由位址空間之輸出流量的登陸區域,請使用標準 SKU。
  • 針對任何實例的私人IP位址後方的流量執行 SNAT。 每個實例都可以使用所有非特殊許可權埠。

下圖顯示使用 Azure 防火牆 在中樞和輪輻網路拓撲中實作 SNAT 的登陸區域配置。

顯示 SNAT 實作使用 Azure 防火牆 的圖表。下載此架構的PowerPoint檔案

您必須將不可路由輪輻中的所有子網與自定義路由表產生關聯,才能將流量傳送至登陸區域以外的目的地,以 Azure 防火牆。

下圖顯示使用 Azure 防火牆 在虛擬 WAN 型中樞和輪輻網路中實作 SNAT 的登陸區域配置。

顯示虛擬 WAN 型網路中 SNAT 實作的圖表,方法是使用 Azure 防火牆。下載此架構的PowerPoint檔案

您必須將不可路由輪輻中的所有子網,或未聯機到虛擬 WAN 的輪輻,與自定義路由表建立關聯,以將流量傳送至登陸區域外的目的地,以 Azure 防火牆。

對於這兩個配置,若要提供不可路由輪輻存取其登陸區域外部可路由IP位址的資源,您必須部署 Azure 防火牆,並將 [執行 SNAT] 選項設定為 [在每個登陸區域的可路由輪輻中] 設定為 [一律]。 您可以找到有關如何設定 Azure 防火牆 在公用檔中所有接收連線上實作 SNAT 的指示。 下列螢幕快照顯示針對非可路由輪輻虛擬網路中資源所起始之聯機使用 Azure 防火牆 作為 NAT 裝置的必要設定。

顯示 [Azure 防火牆 預設 SNAT 行為的對話框的螢幕快照。[執行 SNAT] 選項一律已選取 。

透過第三方 NVA 實作 SNAT

Azure Marketplace 提供具有 NAT 功能的第三方 NVA。 它們提供:

  • 細微控制相應縮小和相應放大。
  • 細微控制 NAT 集區。
  • 自定義 NAT 原則,例如根據連入連線的屬性使用不同的 NAT 位址,例如來源或目的地 IP 位址。

請考量下列建議事項:

  • 若要獲得高可用性,請部署至少有兩個 NVA 的叢集。 使用 Azure 負載平衡器,將連入連線從不可路由輪輻虛擬網路散發至 NVA。 需要高可用性埠負載平衡規則,因為叢集會在離開登陸區域的所有連線上實作 SNAT。 Azure Standard Load Balancer 支援高可用性埠負載平衡規則。
  • Azure SDN 堆疊支援單臂和雙臂 NVA。 偏好使用單臂 NVA,因為它們可減少可路由輪輻虛擬網路中的位址空間耗用量。

下圖顯示使用第三方 NVA 在中樞和輪輻網路拓撲中實作 SNAT 的登陸區域配置。

此圖顯示使用第三方 NVA 在中樞和輪輻網路拓撲中實作 SNAT。下載此架構的PowerPoint檔案

下圖顯示使用第三方 NVA 在虛擬 WAN 型中樞和輪輻網路拓撲中實作 SNAT 的登陸區域配置。

此圖顯示使用第三方 NVA 在虛擬 WAN 型中樞和輪輻網路拓撲中實作 SNAT。下載此架構的PowerPoint檔案

針對這兩個第三方 NVA 配置,您必須在 Azure 負載平衡器後方部署多個實例,以提供高可用性。 需要 Azure Load Balancer Standard SKU。

Private Link 可讓您存取部署在未連線至虛擬網路之虛擬網路中的應用程式。 在伺服器端或應用程式、虛擬網路中,會部署 Private Link 服務,並與在內部 Azure 標準 SKU 負載平衡器前端 IP 位址上公開的應用程式端點相關聯。 在用戶端虛擬網路中,會部署私人端點資源,並與 Private Link 服務相關聯。 私人端點會公開虛擬網路中的應用程式端點。 Private Link 提供通道和 NAT 邏輯,以路由傳送客戶端與伺服器端之間的流量。 如需詳細資訊,請參閱何謂 Azure Private Link?

私人連結不需要用戶端虛擬網路與伺服器端虛擬網路之間的第 3 層連線。 這兩個虛擬網路可以有重疊的IP位址空間。 Private Link 允許在專用、隔離的虛擬網路中部署應用程式,這些應用程式全都使用相同的不可路由地址空間。 應用程式會公開為公司網路中的私人連結服務,其使用可路由位址空間。 在 Azure 登陸區域架構的內容中,產生的登陸區域拓撲具有:

  • 一個隔離的虛擬網路,裝載整個應用程式和與應用程式端點相關聯的 Private Link 服務。 應用程式小組會定義虛擬網路位址空間。
  • 具有可路由位址空間的輪輻虛擬網路,裝載與 Private Link 服務相關聯的私人端點。 輪輻虛擬網路會直接與區域中樞對等互連。

下圖顯示已啟用 Private Link 的登陸區域拓撲。

此圖顯示當 Private Link 服務公開在隔離虛擬網路中部署的應用程式時,登陸區域拓撲。下載此架構的PowerPoint檔案

當您在隔離的輪輻虛擬網路中部署應用程式時,請使用 Private Link 服務進行輸出相依性。 在隔離的輪輻虛擬網路中定義私人端點,並將其與可路由虛擬網路中的 Private Link 服務產生關聯。 下圖顯示概念性方法。

此圖顯示用於在隔離虛擬網路中部署之應用程式的輸出相依性的私人連結服務。下載此架構的PowerPoint檔案

在真實世界的大規模實作中,Private Link 方法可能不適用:

  • 如果部署在隔離虛擬網路中的應用程式有多個輸出相依性。 當您為每個輸出相依性部署 Private Link 服務和私人端點時,會增加複雜度和管理需求。
  • 如果輸出相依性包含在無法成為 Azure Load Balancer 後端集區一部分的可路由網路中的端點,則 Private Link 不適用。

若要克服這兩個限制,請在可路由輪輻中部署 Proxy/NAT 解決方案,並使用 Private Link 從隔離的虛擬網路進行存取。

此圖顯示針對輸出相依性使用 Private Link 服務的架構。下載此架構的PowerPoint檔案

使用單一私人端點或 Private Link 服務來公開部署在可路由網路中的 Proxy/NAT 解決方案。 埠轉譯和地址轉譯規則是在 NVA 上定義。 這些規則允許使用隔離虛擬網路中的單一私人端點來存取可路由網路中多個相依性。

參與者

本文由 Microsoft 維護。 原始投稿人如下。

主要作者:

其他參與者:

若要查看非公用LinkedIn配置檔,請登入LinkedIn。

下一步