多租用戶的 Azure NAT 閘道考量
Azure NAT 閘道可讓您控制來自 Azure 虛擬網路內所裝載資源的輸出網路連線能力。 在本文中,我們會檢閱 NAT 閘道如何降低來源網路位址轉換 (SNAT) 埠耗盡,這可能會影響多租用戶應用程式。 我們也檢閱 NAT 閘道如何將靜態 IP 位址指派給多租使用者解決方案的輸出流量。
注意
防火牆,例如 Azure 防火牆,可讓您控制及記錄輸出流量。 Azure 防火牆 也提供與 NAT 閘道類似的 SNAT 埠調整和輸出 IP 位址控制。 NAT 閘道的成本較低,但它也有較少的功能,而且不是安全性產品。
支援多租使用者的 NAT 閘道功能
大規模 SNAT 埠
當您的應用程式在同一個埠上對相同公用IP位址進行多個並行輸出連線時,會配置SNAT埠。 SNAT 埠是負載平衡器內的有限資源。 如果您的應用程式開啟與同一部主機的大量個別連線,它可以取用所有可用的 SNAT 埠。 這種情況稱為 SNAT 埠耗盡。
在大部分應用程式中,SNAT 埠耗盡表示您的應用程式無法正確處理 HTTP 連線或 TCP 連接埠。 不過,某些多租使用者應用程式有超過 SNAT 埠限制的特定風險,即使它們適當重複使用連線也一樣。 例如,當您的應用程式連線到相同資料庫閘道後面的許多租使用者特定資料庫時,就可能發生這種情況。
提示
如果您在多租使用者應用程式中觀察到 SNAT 連接埠耗盡,您應該確認您的應用程式是否 遵循良好作法。 請確定您重複使用 HTTP 連線,而且每次連線到外部服務時不要重新建立新的連線。 您可能能夠部署 NAT 閘道來解決此問題,但如果您的程式代碼未遵循最佳做法,您未來可能會再次遇到問題。
當您使用在多個客戶之間共用 SNAT 埠配置的 Azure 服務時,問題會加劇,例如 Azure App 服務 和 Azure Functions。
如果您判斷您遇到 SNAT 耗盡,並確定應用程式程式代碼正確地處理輸出連線,請考慮部署 NAT 閘道。 這個方法通常供部署建置在 Azure App 服務 和 Azure Functions 上的多租使用者解決方案的客戶使用。
個別 NAT 閘道可以連結多個公用IP位址,而且每個公用IP位址都會提供一組 SNAT 埠,以連線到因特網。 若要瞭解單一 NAT 閘道可支援的 SNAT 埠和 IP 位址數目上限,請參閱 Azure 訂用帳戶和服務限制、配額和條件約束。 如果您需要調整超過此限制,您可以考慮 跨多個子網或 VNet 部署多個 NAT 閘道實例。 如果子網中的每個虛擬機需要的話,都可以使用任何可用的 SNAT 埠。
輸出IP位址控制
當您有下列所有需求時,輸出 IP 位址控制在多租使用者應用程式中很有用:
- 您使用的 Azure 服務不會自動為輸出流量提供專用靜態 IP 位址。 這些服務包括 Azure App 服務、Azure Functions、API 管理(在取用層中執行時),以及 Azure 容器執行個體。
- 您必須透過因特網連線到租用戶的網路。
- 您的租用戶必須根據每個要求的IP位址來篩選連入流量。
當 NAT 閘道實例套用至子網時,來自該子網的任何輸出流量都會使用與 NAT 閘道相關聯的公用 IP 位址。
注意
當您將多個公用IP位址與單一 NAT 閘道產生關聯時,輸出流量可能來自這些IP位址中的任何一個。 您可能需要在目的地設定防火牆規則。 您應該允許每個IP位址,或使用 公用IP位址前綴 資源,以在同一範圍內使用一組公用IP位址。
隔離模型
如果您需要為每個租使用者提供不同的輸出公用IP位址,您必須部署個別的NAT閘道資源。 每個子網都可以與單一 NAT 閘道實例相關聯。 若要部署更多 NAT 閘道,您必須部署多個子網或虛擬網路。 接著,您可能需要部署多個計算資源集。
如需如何設計多租用戶網路拓撲的詳細資訊,請參閱 多租用戶解決方案 中的網路架構方法。
參與者
本文由 Microsoft 維護。 原始投稿人如下。
主體作者:
- John Downs |適用於 Azure 的主要客戶工程師 FastTrack
其他投稿人:
- 艾美·利特爾頓 |Program Manager 2,Azure NAT 閘道
- 阿森·弗拉基米爾斯基 | 適用於 Azure 的主要客戶工程師 FastTrack
- 約書亞·瓦德爾 |適用於 Azure 的 FastTrack 資深客戶工程師
若要查看非公開的 LinkedIn 設定檔,請登入 LinkedIn。
下一步
- 深入瞭解 NAT 閘道。
- 瞭解如何搭配 Azure App 服務 和 Azure Functions 使用 NAT 閘道。
- 檢閱 多租用戶解決方案中的網路架構方法。