Azure App Service 中的輸入和輸出 IP 位址

Azure App Service 是多租用戶服務,但 App Service 環境除外。 不在 App Service 環境中的應用程式 (不在隔離層) 會與其他應用程式共用網路基礎結構。 因此,應用程式的輸入和輸出 IP 位址可能不同,甚至會在某些情況下變更。

App Service 環境使用專用的網路基礎結構,因此在 App Service 環境中執行的應用程式會針對輸入和輸出連線取得靜態的專用 IP 位址。

IP 位址在 App Service 中的運作方式

App Service 應用程式會在 App Service 方案中執行,而 App Service 方案會部署至 Azure 基礎結構中的其中一個部署單位 (內部稱為網路空間)。 每個部署單位會指派一組虛擬 IP 位址,包括一個公用輸入 IP 位址和一組輸出 IP 位址。 相同部署單位中的所有 App Service 方案,和方案中執行的應用程式執行個體,會共用一組相同的虛擬 IP 位址。 如果是 App Service 環境 (隔離層中的 App Service 方案),App Service 方案即為部署單位本身,所以虛擬 IP 位址是方案專用。

因為您無法在部署單位間移動 App Service 方案,因此指派給應用程式的虛擬 IP 位址通常會維持不變,但有例外狀況。

當輸入 IP 變更時

不論相應放大的執行個體數目為何,每個應用程式都只有一個輸入 IP 位址。 輸入 IP 位址可能會在您執行下列動作之一時變更:

  • 刪除應用程式,並在不同資源群組中重建 (部署單位可能會變更)。
  • 在資源群組「和」區域組合中,刪除並重新建立最後一個應用程式 (部署單位可能變更)。
  • 刪除現有 IP 型 TLS/SSL 繫結,例如在憑證更新期間 (請參閱更新憑證)。

尋找輸入 IP

在本機終端中直接執行下列命令:

nslookup <app-name>.azurewebsites.net

取得靜態輸入 IP

有時候您可能會想讓應用程式使用專用的靜態 IP 位址。 若要取得靜態輸入 IP 位址,您必須使用 IP 型憑證繫結來保護自訂 DNS 名稱。 如果您其實不需要保護應用程式的 TLS 功能,您甚至可以針對此繫結上傳自我簽署憑證。 在 IP 型 TLS 繫結中,憑證會與 IP 位址本身繫結,所以 App Service 會佈建靜態 IP 位址實現繫結。

當輸出 IP 變更時

不論相應放大的執行個體數目為何,每個應用程式在任何給定時間都會有一定數目的輸出 IP 位址。 任何來自 App Service 應用程式的輸出連線 (例如連往後端資料庫) 都會使用其中一個輸出 IP 位址來作為來源 IP 位址。 系統會在執行階段隨機選取要使用的 IP 位址,因此後端服務必須對應用程式的所有輸出 IP 位址開啟其防火牆。

執行下列其中一個動作後,應用程式的輸出 IP 位址集合會變更:

  • 刪除應用程式,並在不同資源群組中重建 (部署單位可能會變更)。
  • 在資源群組「和」區域組合中,刪除並重新建立最後一個應用程式 (部署單位可能變更)。
  • 在較低層 (基本標準進階)、PremiumV2 層、PremiumV3 層以及 PremiumV3 層中的 Pmv3 選項之間調整您的應用程式 (可在集合中新增或減去 IP 位址數)。

您可以藉由尋找 possibleOutboundIpAddresses 屬性或在 Azure 入口網站之 [屬性] 刀鋒視窗的 [其他輸出 IP 位址] 欄位中,針對任何定價層來尋找應用程式可用的所有可能輸出 IP 位址集合。 請參閱尋找輸出 IP

請注意,如果 App Service 將新的定價層或選項新增至現有的 App Service 部署,則所有可能的輸出 IP 位址數集合可能會隨著時間而增加。 例如,如果 App Service 將 PremiumV3 層新增至現有的 App Service 部署,則所有可能的輸出 IP 位址數集合將會增加。 同樣地,如果 App Service 將新的 Pmv3 選項新增至已支援 PremiumV3 層的部署,則所有可能的輸出 IP 位址數集合也會增加。 這不會立即生效,因為將新的定價層或選項新增至 App Service 部署時,正在執行的應用程式的輸出 IP 位址不會變更。 不過,如果應用程式切換至先前無法使用的新定價層或選項,則會使用新的輸出位址,而且客戶將需要更新下游防火牆規則和 IP 位址限制。

尋找輸出 IP

若要尋找您應用程式目前在 Azure 入口網站中使用的輸出 IP 位址,請按一下您應用程式左側瀏覽中的 [屬性]。 這些會列在 [輸出 IP 位址] 欄位。

您可以在 Cloud Shell 中執行下列命令來找到同樣的資訊。

az webapp show --resource-group <group_name> --name <app_name> --query outboundIpAddresses --output tsv
(Get-AzWebApp -ResourceGroup <group_name> -name <app_name>).OutboundIpAddresses

若要針對應用程式尋找「所有」可能的輸出 IP 位址,而不論定價層為何,請在應用程式左側的導覽中按一下 [屬性]。 這些位址會列在 [其他輸出 IP 位址] 欄位中。

您可以在 Cloud Shell 中執行下列命令來找到同樣的資訊。

az webapp show --resource-group <group_name> --name <app_name> --query possibleOutboundIpAddresses --output tsv
(Get-AzWebApp -ResourceGroup <group_name> -name <app_name>).PossibleOutboundIpAddresses

取得靜態輸出 IP

您可以搭配虛擬網路 NAT 閘道使用區域 VNet 整合,引導靜態公用 IP 位址的流量,並控制應用程式輸出流量的 IP 位址。 基本標準進階PremiumV2PremiumV3 App Service 方案均提供區域 VNet 整合。 若要深入了解此設定,請參閱 NAT 閘道整合

下一步

了解如何依來源 IP 位址限制輸入流量。