共用方式為


Azure Functions 網路選項

本文說明 Azure Functions 的各項裝載選項可用的網路功能。 下列網路選項可分類為輸入和輸出網路功能。 輸入功能可讓您限制對應用程式的存取,而輸出功能可讓您將應用程式連線到虛擬網路所保護的資源,並控制輸出流量的路由方式。

裝載模型有不同層級的網路隔離可用。 選擇正確的層級可協助您符合網路隔離需求。

功能 Flex 使用量方案 取用方案 進階方案 專用方案/ASE 容器應用程式1
輸入 IP 限制
輸入私人端點
虛擬網路整合 阿拉伯數位 3
輸出 IP 限制
  1. 如需詳細資訊,請參閱 Azure 容器應用程式環境中的網路功能
  2. 使用 虛擬網路觸發程式時有特殊考慮。
  3. 只有專用/ASE 方案支援閘道所需的虛擬網路整合。

快速入門資源

使用下列資源快速以開始使用 Azure Functions 網路案例。 本文中會參考這些資源。

輸入網路功能

下列功能可讓您篩選對函式應用程式的輸入要求。

輸入存取限制

您可使用存取限制,針對允許或拒絕存取應用程式的 IP 位址,定義依優先順序排列的清單。 此清單可以包含 IPv4 和 IPv6 位址,或使用服務端點的特定虛擬網路子網路。 有一個或多個項目時,清單結尾會有隱含的「全部拒絕」語句。 IP 限制適用所有函式裝載選項。

存取限制可在 Flex 使用量方案彈性進階使用量App Service 中使用。

注意

有了網路限制,您只能從虛擬網路進行部署,或是在「安全收件者」清單中放入用來存取 Azure 入口網站的電腦 IP 位址時,才可進行部署。 不過您仍可使用入口網站來管理函式。

若要深入了解,請參閱 Azure App Service 靜態存取限制

私人端點

Azure 私人端點是一種網路介面,可讓您私密安全地連線到 Azure Private Link 所提供的服務。 私人端點會使用您虛擬網路中的私人 IP 位址,有效地將服務帶入您的虛擬網路。

您可以將私人端點用於彈性取用彈性進階專用 (App Service) 方案中裝載的函式。

如果您想要對私人端點進行呼叫,必須確定您的 DNS 查閱會解析為私人端點。 您可以透過下列其中一種方法強制執行此行為:

  • 與 Azure DNS 私人區域整合。 當您的虛擬網路沒有自訂 DNS 伺服器時,這會自動完成。
  • 管理應用程式所使用 DNS 伺服器中的私人端點。 若要管理私人端點,您必須知道端點位址,並使用 A 記錄來參考您嘗試連線的端點。
  • 將您自己的 DNS 伺服器設定為轉送至 Azure DNS 私人區域

若要深入了解,請參閱將私人端點用於 Web 應用程式

若要呼叫具有私人端點連線的其他服務,例如儲存體或服務匯流排,請務必將您的應用程式設定為對私人端點發出輸出呼叫。 如需使用私人端點搭配您的函式應用程式的儲存體帳戶的詳細資料,請瀏覽將您的儲存體帳戶限制在虛擬網路

服務端點

使用服務端點,您可以將許多 Azure 服務限制於選取的虛擬網路子網路,以提供較高層級的安全性。 區域虛擬網路整合可讓您的函式應用程式連線至透過服務端點保護的 Azure 服務。 支援虛擬網路整合的所有方案都支援此設定。 請遵循下列步驟來存取受保護的服務端點:

  1. 設定區域虛擬網路與函式應用程式的整合,以連線到特定子網路。
  2. 前往目的地服務,並針對整合子網路設定服務端點。

若要深入了解,請參閱虛擬網路服務端點

使用服務端點

若要限制特定子網路的存取權,請建立具有虛擬網路類型的限制規則。 接著可以選取您想允許或拒絕存取的訂用帳戶、虛擬網路和子網路。

如果尚未針對您所選取的子網路以 Microsoft.Web 來啟用服務終端點,則它們會自動啟用 (除非您選取了 [忽略缺少的 Microsoft.Web 服務端點] 核取方塊)。 若想在應用程式上啟用服務端點,但不在子網路上啟用,主要取決於您是否有在子網路上啟用端點的權限。

如需讓其他人在子網路上啟用服務端點,請勾選 [忽略缺少的 Microsoft.Web 服務端點] 核取方塊。 您的應用程式已針對服務端點進行設定,您稍後會在子網上啟用此端點。

螢幕擷取畫面:已選取虛擬網路類型的 [新增 IP 限制] 窗格。

您無法使用服務端點來限制存取在 App Service 環境中執行的應用程式。 若應用程式位於 App Service 環境,您可套用 IP 存取規則來控制存取權。

若要了解如何設定服務端點,請參閱建立 Azure Functions 私人站台存取

輸出網路功能

您可以使用本節中的功能來管理應用程式所建立的輸出連線。

虛擬網路整合

本節詳述 Functions 支援的功能,以控制應用程式輸出的數據。

虛擬網路整合可讓您的函式應用程式存取虛擬網路中的資源。 整合之後,您的應用程式會透過虛擬網路路由傳送輸出流量。 這可讓您的應用程式存取私人端點或資源,其規則只允許來自選取子網的流量。 當目的地是虛擬網路外部的IP位址時,除非您已設定NAT閘道,否則來源IP仍會從應用程式屬性中列出的其中一個位址傳送。

Azure Functions 支援兩種虛擬網路整合:

若要了解如何設定虛擬網路整合,請參閱啟用虛擬網路整合

區域性虛擬網路整合

使用區域虛擬網路整合可讓您的應用程式存取:

  • 位於與您的應用程式相同的虛擬網路中的資源。
  • 與您應用程式所整合虛擬網路對等互連的虛擬網路中的資源。
  • 服務端點保護的服務。
  • Azure ExpressRoute 連線中的資源。
  • 對等互連連線中的資源,包括 Azure ExpressRoute 連線。
  • 私人端點

當您使用區域虛擬網路整合時,可以使用下列 Azure 網路功能:

  • 網路安全性群組 (NSG):您可以使用位於整合子網路的 NSG 來封鎖輸出流量。 因為您無法使用虛擬網路整合來提供應用程式的輸入存取權,所以不適用輸入規則。
  • 路由表 (UDR):您可以在整合子網路上放置路由表,以從您想要的位置傳送輸出流量。

注意

將所有輸出流量路由至您的虛擬網路時,必須遵守套用至整合子網路的 NSG 和 UDR。 整合虛擬網路後,除非您提供將流量導向至其他位置的路由,否則傳至公用 IP 位址的函式應用程式輸出流量,仍會從應用程式屬性中所列的位址傳送。

區域虛擬網路整合無法使用連接埠 25。

Flex 取用方案的考慮:

  • 請遵循下列指示,確定訂用帳戶已啟用 Microsoft.App Azure 資源提供者。 子網委派需要此專案。
  • 在 Flex 取用方案中執行時所需的子網委派為 Microsoft.App/environments。 這與彈性進階和專用 (App Service) 方案不同,其委派需求不同。
  • 您可以規劃將 40 個 IP 位址最多用於一個函數應用程式,即使應用程式調整超過 40 個也一樣。 例如,如果您的 15 個 Flex Consumption 函式應用程式已整合到相同的子網中,則必須規劃最多使用 15x40 = 600 個 IP 位址。 此限制可能有所變更,且不會強制執行。
  • 子網路無法用於其他用途 (例如私人或服務端點,或委派給任何其他主控方案或服務)。 雖然您可以與多個 Flex Consumption 應用程式共用相同的子網,但網路資源會跨這些函式應用程式共用,這可能會導致一個應用程式影響其他應用程式在相同子網上的效能。

彈性進階專用(App Service)容器應用程式方案的考慮:

  • 此功能適用於彈性進階和 App Service Premium V2 和進階 V3。 同時適用於標準方案,但只能從較新的 App Service 部署取得。 如果您使用較舊的部署,則只能使用進階 V2 App Service 方案的功能。 如果您想要確保自己可使用標準 App Service 方案的功能,請使用進階 V3 App Service 方案來建立應用程式。 這些方案僅支援我們最新的部署。 之後您可以視需要縮小規模。
  • App Service 環境中的隔離式方案應用程式無法使用此功能。
  • 應用程式和虛擬網路必須位於同一個區域。
  • 此功能需要 Azure Resource Manager 虛擬網路中 /28 或更大的未使用子網路。
  • 整合子網路只能由一個 App Service 方案使用。
  • 一個 App Service 方案最多可以有兩個區域虛擬網路整合。 相同 App Service 方案中的多個應用程式可以使用相同的整合子網路。
  • 您無法使用整合式應用程式刪除虛擬網路。 請先移除整合,再刪除虛擬網路。
  • 如果有應用程式正在使用區域虛擬網路整合,則您無法變更應用程式或方案的訂用帳戶。

啟用虛擬網路整合

  1. Azure 入口網站上您的函式應用程式中,選取 [網路],然後在 [ VNet 整合] 底下選取 [按一下這裡以設定]

  2. 選取 [新增 VNet]

    您可以在應用程式中啟用虛擬網路整合的 VNet 整合頁面螢幕快照。

  3. 下拉式清單包含您訂用帳戶中相同區域內的所有 Azure Resource Manager 虛擬網路。 選取您想要與其整合的虛擬網路。

    選取 VNet

    • Flex Consumption 和 Elastic Premium 主控方案僅支援區域虛擬網路整合。 如果虛擬網路位於相同的區域,請建立新的子網,或選取空白且預先存在的子網。

    • 若要選取另一個區域中的虛擬網路,您必須佈建虛擬網路閘道,並啟用點對站功能。 僅專用方案才支援跨區域的虛擬網路整合,但全域對等互連可搭配區域虛擬網路整合使用。

整合期間,會重新啟動您的應用程式。 當整合完成時,您將會看到與其整合的虛擬網路詳細資訊。 根據預設,會啟用 [全部路由],並將所有流量路由傳送至您的虛擬網路。

如果您只想要路由傳送私人流量(RFC1918 流量),請遵循此 App Service 文章中的步驟。

子網路

虛擬網路整合取決於專用子網路。 佈建子網路時,一開始 Azure 子網路會失去五個 IP。 針對彈性進階和 App Service 方案,每個方案執行個體的整合子網路會使用一個位址。 若將應用程式調整為四個執行個體,則會使用四個位址。 若為 Flex 取用,則不適用,且實例會共用 IP 位址。

在彈性進階和專用 (App Service) 方案中,當您相應增加或減少實例大小時,所需的位址空間會在短時間內加倍。 這會影響一個指定子網路大小實際可用的支援執行個體。 下表顯示每個 CIDR 區塊的可用位址上限,以及這對水平調整的影響:

CIDR 區塊大小 可用位址上限 水平調整上限 (執行個體)*
/28 11 5
/27 27 13
/26 59 29

*假設您需在某個時間點擴大或縮小規模或 SKU。

由於指派之後就無法變更子網路大小,因此請使用足以容納應用程式可能連線的任何子網路規模。 為了避免 Functions 彈性進階方案的子網路容量發生任何問題,您應針對 Windows 使用提供 256 個位址的 /24,以及針對 Linux 使用提供 64 個位址的 /26。 與虛擬網路整合過程中,在 Azure 入口網站中建立子網路時,Windows 和 Linux 需要的大小下限分別為 /24 和 /26。

Flex Consumption 方案允許在 Flex Consumption 方案中執行的多個應用程式與相同的子網整合。 這不是彈性進階和專用 (App Service) 主控方案的情況。 這些方案只允許兩個虛擬網路與每個App Service 方案連線。 來自單一 App Service 方案的多個應用程式可以加入相同的子網,但來自不同方案的應用程式無法使用相同的子網。

Windows 和 Linux 應用程式都完全支援此功能,包括自訂容器在內。 Windows 應用程式與 Linux 應用程式的所有行為都完全一致。

網路安全性群組

您可以使用 網路安全組 來控制虛擬網路中資源之間的流量。 例如,您可以建立安全性規則來封鎖應用程式的輸出流量,使其無法連線到虛擬網路中的資源或離開網路。 這些安全性規則適用於已設定虛擬網路整合的應用程式。 若要封鎖公用位址的流量,您必須啟用虛擬網路整合和路由全部啟用。 NSG 中的輸入規則不適用於您的應用程式,因為虛擬網路整合只會影響來自應用程式的輸出流量。

若要控制應用程式的輸入流量,請使用「存取限制」功能。 無論套用至整合子網路的路由為何,套用至整合子網路的 NSG 都會生效。 如果您的函式應用程式是與 [路由全部 ] 整合的虛擬網路,而且您沒有任何會影響整合子網上公用位址流量的路由,則所有輸出流量仍受限於指派給整合子網的 NSG。 若未啟用 [全部路由],則 NSG 只會套用至 RFC1918 流量。

路由

您可以使用路由表,將來自您應用程式的輸出流量路由傳送到您想要的任何位置。 根據預設,路由表只會影響您的 RFC1918 目的地流量。 啟用 [全部路由] 時,所有輸出呼叫都會受到影響。 [全部路由] 停用時,只有私人流量 (RFC1918) 會受到路由表的影響。 在整合子網路上設定的路由不會影響對輸入應用程式要求的回覆。 常見的目的地包括防火牆裝置或閘道。

如果您想要將所有輸出流量路由傳送至內部部署,可以使用路由表將所有輸出流量傳送至您的 ExpressRoute 閘道。 如果您將流量路由至閘道,請務必在外部網路中設定路由以傳回任何回覆。

邊界閘道協定 (BGP) 路由也會影響您的應用程式流量。 如果您具有 來自類似 ExpressRoute 閘道的 BGP 路由,您的應用程式輸出流量會受到影響。 根據預設,BGP 路由只會影響您的 RFC1918 目的地流量。 當函式應用程式已與虛擬網路整合並啟用 [完整路由] 時,所有輸出流量都會受到 BGP 路由的影響。

輸出 IP 限制

輸出 IP 限制適用於 Flex 使用量方案、彈性進階方案、App Service 方案或 App Service 環境。 您可以為部署 App Service 環境的虛擬網路設定輸出限制。

當您將彈性進階方案或 App Service 方案中的函數應用程式與虛擬網路整合時,應用程式預設仍可對網際網路進行輸出呼叫。 藉由將函式應用程式與已啟用 [完整路由] 的虛擬網路整合,您可以將所有輸出流量強制傳送至虛擬網路,如此一來就可以使用網路安全性群組規則來限制流量。 針對 Flex 取用,所有流量都已透過虛擬網路路由傳送,且不需要路由全部。

若要了解如何使用虛擬網路控制輸出 IP,請參閱教學課程:使用 Azure 虛擬網路 NAT 閘道控制 Azure Functions 輸出 IP

Azure DNS 私人區域

您的應用程式與虛擬網路整合之後,它會使用與虛擬網路設定使用的相同 DNS 伺服器,並將可與連結至虛擬網路的 Azure DNS 私人區域搭配使用。

自動化

下列 API 可讓您以程式設計方式管理區域虛擬網路整合項目:

混合式連線

混合式連線是 Azure 轉送的功能,您可用來存取其他網路中的應用程式資源。 它可讓您從應用程式存取應用程式端點。 您可將其用於存取應用程式。 混合式連線適用於所有在 Windows 上執行的函式 (但取用方案除外)。

如同在 Azure Functions 中使用,每個混合式連線都會與單一 TCP 主機和連接埠組合相互關聯。 這意謂著混合式連線的端點可位於任何作業系統和任何應用程式上,只要您正在存取 TCP 接聽連接埠即可。 混合式連線不知道 (或不在意) 應用程式通訊協定為何,或您要存取什麼資源。 其只會提供網路存取。

若要深入了解,請參閱混合式連線的 App Service 文件。 這些相同的設定步驟支援 Azure Functions。

重要

只有在函式應用程式在 Windows 上執行時,才支援混合式連線。 不支援Linux應用程式。

透過虛擬網路連線到 Azure 服務

虛擬網路整合可讓您的函式應用程式存取虛擬網路中的資源。 本節概觀嘗試將應用程式連線到特定服務時應考慮的事項。

將儲存體帳戶限定於虛擬網路

注意

若要在儲存體帳戶上快速部署已啟用私人端點的函式應用程式,請參閱下列範本:函式應用程式搭配 Azure 儲存體私人端點

建立函式應用程式時,您必須建立或連結至支援 Blob、佇列及資料表儲存體的一般用途 Azure 儲存體帳戶。 您可以將此儲存體帳戶取代為受到服務端點或私人端點保護的儲存體帳戶。

您可以在彈性取用、彈性進階和專用 (App Service) 方案中搭配函式應用程式使用網路限制的記憶體帳戶;不支援取用方案。 針對彈性進階和專用方案,您必須確定已設定私人 內容共用路由 。 若要瞭解如何使用使用虛擬網路保護的記憶體帳戶來設定函式應用程式,請參閱 將記憶體帳戶限制為虛擬網路

使用 Key Vault 參考

您可使用 Azure Key Vault 參考在 Azure Functions 應用程式中使用來自 Azure Key Vault 的祕密,而不需進行任何程式碼變更。 Azure Key Vault 服務可供集中管理祕密,完整控制存取原則和稽核歷程記錄。

如果已為應用程式設定虛擬網路整合,金鑰保存庫參考可用來從具網路限制的保存庫擷取秘密。

虛擬網路觸發程序 (非 HTTP)

您的工作負載可能需要從虛擬網路所保護的事件來源觸發您的應用程式。 如果您想要讓應用程式根據從非 HTTP 觸發程式來源接收的事件數目動態調整,有兩個選項:

在專用 (App Service) 方案中執行的函式應用程式不會根據事件動態調整。 相反地,相應放大是由 您定義的自動調整 規則所決定。

具有虛擬網路觸發程序的彈性進階方案

彈性進階方案可讓您建立由虛擬網路保護的服務所觸發的函式。 這些非 HTTP 觸發程序稱為虛擬網路觸發程序

根據預設,虛擬網路觸發程式不會讓您的函式應用程式超出其預先部署的實例計數。 不過,某些延伸模組支援會導致您的函式應用程式動態調整的虛擬網路觸發程序。 您可以透過下列其中一種方式在您的函式應用程式中為支援的延伸模組啟用此動態調整監視

  1. Azure 入口網站中,瀏覽至您的函式應用程式。

  2. 在 [設定] 下,選取 [組態],然後在 [函式執行階段設定] 索引標籤中將 [執行階段調整監視] 設為 [開啟]

  3. 選取 [儲存] 以更新函式應用程式組態,然後重新啟動應用程式。

VNETToggle

提示

啟用虛擬網路觸發程序的監視可能會對應用程式的效能造成影響,儘管這種影響可能非常小。

在 Functions 執行階段 1.x 版中,不支援對虛擬網路觸發程序的動態調整監視。

下表中的延伸模組支援虛擬網路觸發程序的動態調整監視。 為了獲得最佳的調整效能,您應該升級為也支援目標型調整的版本。

延伸模組 (最低版本) 僅限執行階段調整監視 透過目標型調整
Microsoft.Azure.WebJobs.Extensions.CosmosDB > 3.0.5 > 4.1.0
Microsoft.Azure.WebJobs.Extensions.DurableTask > 2.0.0 n/a
Microsoft.Azure.WebJobs.Extensions.EventHubs > 4.1.0 > 5.2.0
Microsoft.Azure.WebJobs.Extensions.ServiceBus > 3.2.0 > 5.9.0
Microsoft.Azure.WebJobs.Extensions.Storage > 3.0.10 > 5.1.0*

* 僅限佇列儲存體。

重要

當您啟用虛擬網路觸發程序監視時,只有這些延伸模組的觸發程序可能會導致您的應用程式動態調整。 您仍然可以使用不在此表中的延伸模組中的觸發程序,但它們不會導致擴充超出其預熱的執行個體計數。 如需所有觸發程序和繫結延伸模組的完整清單,請參閱觸發程序和繫結

具有虛擬網路觸發程序的 App Service 方案和 App Service 環境

當您的函式應用程式在 App Service 方案或 App Service 環境 中執行時,您可以撰寫由虛擬網路保護的資源所觸發的函式。 若要讓函式正確觸發,您的應用程式必須連線到具有觸發程式連線中所定義資源的虛擬網路。

例如,假設您想要將 Azure Cosmos DB 設定為只接受來自虛擬網路的流量。 在此情況下,您必須在提供與該虛擬網路整合的 App Service 方案中部署函式應用程式。 整合可讓該 Azure Cosmos DB 資源觸發函式。

測試考量

使用私人端點在函式應用程式中測試函式時,您必須在相同的虛擬網路內執行測試,例如在該網路中的虛擬機器 (VM) 上。 若要在入口網站上從該 VM 中使用的 [程式碼 + 測試] 選項,您必須將下列 CORS 來源新增至您的函式應用程式:

  • https://functions-next.azure.com
  • https://functions-staging.azure.com
  • https://functions.azure.com
  • https://portal.azure.com

如果您已使用私人端點或任何其他存取限制來限制對函數應用程式的存取,則也必須將服務標籤 AzureCloud 新增至允許清單。 若要更新允許清單:

  1. 瀏覽至您的函數應用程式,然後選取 [設定]>[網路],然後選取 [輸入存取組態]>[公用網络存取]

  2. 請確定 [公用網络存取] 已設定為 [已從選取的虛擬網路和 IP 位址啟用]

  3. 在 [網站存取和規則] 底下 [新增規則]

    1. 選取 Service Tag 做為來源設定 [類型],以及選取 AzureCloud 做為 [服務標籤]

    2. 請確定動作為 [允許],並設定您所需的名稱和優先順序。

疑難排解

這項功能很容易設定,但不表示您在使用過程中不會遇到問題。 如果您在存取所需端點時遇到問題,可利用一些公用程式從應用程式主控台測試連線能力。 有兩個您可以使用的主控台。 一個是 Kudu 主控台,另一個則是 Azure 入口網站中的主控台。 若要從您的應用程式前往 Kudu 主控台,請按 [工具] > [Kudu]。 您也可以輸入 [站台名稱].scm.azurewebsites.net 前往 Kudo 主控台。 網站載入之後,移至 [偵錯主控台] 索引標籤。若要從您的應用程式存取 Azure 入口網站裝載的主控台,請移至 [工具]>[主控台]

工具

在原生 Windows 應用程式中,由於安全性限制,無法透過主控台使用 pingnslookuptracert 工具 (它們在自訂 Windows 容器中運作)。 為了彌補這個空隙,已加入兩個不同的工具。 為了測試 DNS 功能,我們新增了名為 nameresolver.exe 的工具。 語法為:

nameresolver.exe hostname [optional: DNS Server]

您可以使用 nameresolver 來檢查應用程式依賴的主機名稱。 如此一來您可以測試是否有任何項目未正確設定而無法與 DNS 搭配,或可能沒有 DNS 伺服器的存取權。 您可以檢查環境變數 WEBSITE_DNS_SERVER 和 WEBSITE_DNS_ALT_SERVER,以查看應用程式在主控台中使用的 DNS 伺服器。

注意

nameresolver.exe 工具目前無法在自訂 Windows 容器中運作。

您可以使用下一個工具來測試主機與連接埠組合的 TCP 連線。 此工具稱為 tcpping,語法如下:

tcpping.exe hostname [optional: port]

tcpping 公用程式會讓您知道是否可以連接特定主機和連接埠。 只有在下列情況才會顯示成功:有一個應用程式正在接聽主機與連接埠組合,且您的應用程式可透過網路存取指定的主機和連接埠。

對虛擬網路裝載資源的存取進行偵錯

有幾種情況可能會導致應用程式無法連線至特定的主機和連接埠。 大部分的情況下,會是下列三個情況的其中一種:

  • 路線中有防火牆。 如果路線中有防火牆,則會達到 TCP 逾時。 此案例中 TCP 逾時值就是 21 秒。 使用 tcpping 工具來測試連線能力。 TCP 逾時可能是許多項目越過防火牆並啟動所造成。
  • DNS 無法存取。 DNS 逾時值為 3 秒 (每部 DNS 伺服器)。 如果您有兩部 DNS 伺服器,逾時為 6 秒。 使用 nameresolver 來檢查 DNS 是否運作。 您不能使用 nslookup,因為它不會使用您的虛擬網路所設定的 DNS。 如果無法存取,則防火牆或 NSG 可能會封鎖 DNS 的存取,或可能會中斷連線。

如果這些項目無法解決您的問題,請先確認幾件事,例如:

區域性虛擬網路整合

  • 您的目的地是否為非 RFC1918 位址,且您並未啟用 [完整路由]
  • 是否有 NSG 封鎖來自整合子網路的輸出?
  • 如果您要通過 Azure ExpressRoute 或 VPN,您的內部部署閘道是否已設為將流量路由回 Azure? 如果您可以連線至虛擬網路中的端點,但無法連線至內部部署,則請檢查您的路由。
  • 您是否有足夠的權限可設定整合子網路上的委派? 在區域虛擬網路整合設定期間,您的整合子網路會委派給 Microsoft.Web/serverFarms。 VNet 整合 UI 會自動將子網路委派給 Microsoft.Web/serverFarms。 如果您的帳戶沒有足夠的網路權限可設定委派,則您需要可以在整合子網路上設定屬性的人員來委派子網路。 若要手動委派整合子網路,請前往 Azure 虛擬網路子網路 UI,並設定 Microsoft.Web/serverFarms 的委派。

需要閘道的虛擬網路整合

  • 是 RFC 1918 範圍 (10.0.0.0-10.255.255.255 / 172.16.0.0-172.31.255.255 / 192.168.0.0-192.168.255.255) 中的點對站位址範圍嗎?
  • 閘道是否顯示為正在入口網站中啟動? 如果您的閘道已關閉,請重新啟動。
  • 憑證是否顯示為同步,或您懷疑網路設定已變更? 如果您的憑證停止同步,或您懷疑虛擬網路設定的變更未與 ASP 同步,則請選取 [同步網路]
  • 如果您要通過 VPN,內部部署閘道是否已設為將流量路由回 Azure? 如果您可以連線至虛擬網路中的端點,但無法連線至內部部署,則請檢查您的路由。
  • 您是否正嘗試使用同時支援點對站和 ExpressRoute 的共存閘道? 虛擬網路整合不支援共存閘道。

對網路問題進行偵錯是一項挑戰,因為您看不到是什麼封鎖了特定主機與連接埠組合的存取。 可能的原因包括:

  • 您已在主機上啟動防火牆,阻止從點對站 IP 範圍存取應用程式連接埠。 跨越子網路通常需要公用存取權。
  • 目標主機已關閉。
  • 應用程式已關閉。
  • IP 或主機名稱錯誤。
  • 應用程式不是接聽您預期的連接埠。 您可以在端點主機上使用 "netstat -aon",將處理序識別碼與接聽連接埠進行比對。
  • 您將網路安全性群組設定為阻止從點對站 IP 範圍存取應用程式主機和連接埠。

您不知道應用程式實際使用的位址。 這可能是整合子網路或點對站位址範圍中的任何位址,因此您必須允許從整個位址範圍存取。

其他偵錯步驟包括:

  • 連線至虛擬網路中的 VM,並嘗試從該處連接資源的主機與連接埠組合。 若要測試 TCP 存取,請使用 PowerShell 命令 Test-NetConnection。 語法為:
Test-NetConnection hostname [optional: -Port]
  • 啟動 VM 上的應用程式,並使用 tcpping,測試是否可透過應用程式從主控台存取該主機和連接埠。

內部部署資源

如果您的應用程式無法連線至內部部署資源,則請檢查您是否可以從虛擬網路連線至該資源。 使用 Test-NetConnection PowerShell 命令來檢查是否有 TCP 存取權。 如果您的 VM 無法連線到您的內部部署資源,表示 VPN 或 ExpressRoute 連線可能沒有正確設定。

如果虛擬網路裝載 VM 可以連線至您的內部部署系統,但您的應用程式無法連線至此系統,則很可能是下列其中一個原因所造成:

  • 您的路由未設定子網路或內部部署閘道中的點對站位址範圍。
  • 您的網路安全性群組正在封鎖點對站 IP 範圍的存取。
  • 您的內部部署防火牆正在封鎖來自點對站 IP 範圍的流量。
  • 您正在嘗試使用區域虛擬網路整合功能來連線至非 RFC 1918 位址。

先刪除 App Service 方案或 Web 應用程式,再中斷 VNet 整合的連線

如果您已刪除 Web 應用程式或 App Service 方案,但未先中斷 VNet 整合的連線,則無法在用於與已刪除資源整合的虛擬網路或子網路上執行任何更新/刪除作業。 子網路委派「Microsoft.Web/serverFarms」仍會指派給您的子網路,且會阻止更新/刪除作業。

若要再次更新/刪除子網路或虛擬網路,您需要重新建立 VNet 整合,然後將其中斷連線:

  1. 重新建立 App Service 方案和 Web 應用程式 (必須使用與之前完全相同的 Web 應用程式名稱)。
  2. 導覽至 Web 應用程式上的 [網路] 刀鋒視窗,並設定 VNet 整合。
  3. 設定完 VNet 整合後,選取 [中斷連線] 按鈕。
  4. 刪除 App Service 方案或 Web 應用程式。
  5. 更新/刪除子網路或虛擬網路。

如果您依照上述步驟操作後仍發生 VNet 整合相關問題,請聯絡 Microsoft 支援服務。

網路疑難排解員

您也可以使用網路疑難排解員來解決連線問題。 若要開啟網路疑難排解員,請移至 Azure 入口網站中的應用程式。 選取 [診斷並解決問題],然後搜尋網路疑難排解員

連線問題 - 它會檢查虛擬網路整合的狀態,包括檢查是否已將私人 IP 指派給方案的所有執行個體和 DNS 設定。 如果未設定自訂 DNS,則會套用預設的 Azure DNS。 疑難排解員也會檢查常見的函式應用程式相依性,包括 Azure 儲存體的連線能力和其他繫結相依性。

螢幕擷取畫面:顯示針對連線問題執行疑難解答員。

組態問題 - 此疑難排解員會檢查您的子網路對於虛擬網路整合是否有效。

螢幕擷取畫面:顯示針對設定問題執行疑難解答員。

子網路/VNet 刪除問題 - 此疑難排解員會檢查您的子網路是否有任何鎖定,以及是否有任何可能阻止刪除 VNet/子網路的未使用的服務關聯連結。

下一步

若要深入了解網路和 Azure Functions: