Azure Functions 網路選項
本文說明 Azure Functions 的各項裝載選項可用的網路功能。 下列所有網路選項都可讓您在不使用網際網路路由式位址的情況下存取資源,或限制函式應用程式的網際網路存取。
裝載模型有不同層級的網路隔離可用。 選擇正確的層級可協助您符合網路隔離需求。
功能 | 取用方案 | 彈性使用量方案 | 進階方案 | 專用方案/ASE | 容器應用程式* |
---|---|---|---|---|---|
輸入 IP 限制 | ✅是 | ✅是 | ✅是 | ✅是 | ✅是 |
輸入私人端點 | ❌否 | ✅是 | ✅是 | ✅是 | ❌否 |
虛擬網路整合 | ❌否 | ✅是 (區域性) | ✅是 (區域性) | ✅是 (區域性和閘道) | ✅是 |
虛擬網路觸發程序 (非 HTTP) | ❌否 | ✅是 | ✅是 | ✅是 | ✅是 |
混合式連線 (僅限 Windows) | ❌否 | ❌ 否 | ✅是 | ✅是 | ❌否 |
輸出 IP 限制 | ❌否 | ✅是 | ✅是 | ✅是 | ✅是 |
*如需詳細資訊,請參閱 Azure 容器應用程式環境中的網路功能。
快速入門資源
使用下列資源快速以開始使用 Azure Functions 網路案例。 本文中會參考這些資源。
- ARM 範本、Bicep 檔案和 Terraform 範本:
- 僅限 ARM 範本:
- 教學課程:
輸入網路功能
下列功能可讓您篩選對函式應用程式的輸入要求。
輸入存取限制
您可使用存取限制,針對允許或拒絕存取應用程式的 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 服務。 支援虛擬網路整合的所有方案都支援此設定。 若要存取受到服務端點保護的服務,您必須執行下列動作:
- 設定區域虛擬網路與函式應用程式的整合,以連線到特定子網路。
- 前往目的地服務,並針對整合子網路設定服務端點。
若要深入了解,請參閱虛擬網路服務端點。
使用服務端點
若要限制特定子網路的存取權,請建立具有虛擬網路類型的限制規則。 接著可以選取您想允許或拒絕存取的訂用帳戶、虛擬網路和子網路。
如果尚未針對您所選取的子網路以 Microsoft.Web
來啟用服務終端點,則它們會自動啟用 (除非您選取了 [忽略缺少的 Microsoft.Web 服務端點] 核取方塊)。 若想在應用程式上啟用服務端點,但不在子網路上啟用,主要取決於您是否有在子網路上啟用端點的權限。
如需讓其他人在子網路上啟用服務端點,請勾選 [忽略缺少的 Microsoft.Web 服務端點] 核取方塊。 您的應用程式會針對服務端點進行設定,以期稍後在子網路上啟用它們。
您無法使用服務端點來限制存取在 App Service 環境中執行的應用程式。 若應用程式位於 App Service 環境,您可套用 IP 存取規則來控制存取權。
若要了解如何設定服務端點,請參閱建立 Azure Functions 私人站台存取。
虛擬網路整合
虛擬網路整合可讓您的函式應用程式存取虛擬網路內的資源。 Azure Functions 支援兩種虛擬網路整合:
- 專用的計算定價層,包括基本、標準、進階、進階 v2 和進階 v3。
- App Service 環境,其會直接部署至具有專用支援基礎結構的虛擬網路,並使用隔離式和隔離式 v2 定價層。
虛擬網路整合功能會用於 Azure App Service 專用計算定價層。 如果您的應用程式位於 App Service 環境,則其已經在虛擬網路中,並且不需要使用 VNet 整合功能來連線至相同虛擬網路中的資源。 如需所有網路功能的詳細資訊,請參閱 App Service 網路功能。
虛擬網路整合能讓您的應用程式存取您虛擬網路中的資源,但不會授與從虛擬網路存取您應用程式的輸入私人存取權。 私人站台存取是指讓您的應用程式只能透過在 Azure 虛擬網路中等私人網路存取。 虛擬網路整合只會用來從您的應用程式對虛擬網路進行輸出呼叫。 搭配使用相同區域與其他區域中的虛擬網路時,虛擬網路整合功能的行為會有所不同。 虛擬網路整合功能有兩種變化:
- 區域虛擬網路整合:當您連線至相同區域中的虛擬網路時,您在要整合的虛擬網路中必須有專用子網路。
- 閘道所需的虛擬網路整合:直接連線至其他區域中的虛擬網路或相同區域中的傳統虛擬網路時,您需在目標虛擬網路中建立 Azure 虛擬網路閘道。
虛擬網路整合功能:
- 需要支援的基本或標準、進階、進階 v2、進階 v3 或彈性進階 App Service 價格層。
- 支援 TCP 和 UDP。
- 可搭配 App Service 應用程式與函數應用程式使用。
虛擬網路整合不支援部分項目,例如:
- 掛接磁碟機。
- Windows Server Active Directory 網域加入。
- NetBIOS。
需要閘道的虛擬網路整合提供存取權的資源,只包括位在目標虛擬網路內,或透過對等互連或 VPN 連線至目標虛擬網路之網路內的資源。 使用需要閘道的虛擬網路整合功能時,無法存取 Azure ExpressRoute 連線之間的資源或是搭配服務端點運作的資源。
無論使用哪個版本,虛擬網路整合都能讓您的應用程式存取虛擬網路中的資源,但不會從虛擬網路授與應用程式的輸入私人存取權。 私人網站存取是指讓您的應用程式只能透過私人網路 (例如在 Azure 虛擬網路中) 存取。 虛擬網路整合只能用於從應用程式傳送輸出呼叫到虛擬網路。
Azure Functions 中的虛擬網路整合會使用共用基礎結構搭配 App Service Web 應用程式。 若要深入了解這兩種類型的虛擬網路整合,請參閱:
若要了解如何設定虛擬網路整合,請參閱啟用虛擬網路整合。
啟用虛擬網路整合
在 Azure 入口網站上您的函式應用程式中,選取 [網路],然後在 [ VNet 整合] 底下選取 [按一下這裡以設定]。
選取 [新增 VNet]。
下拉式清單包含您訂用帳戶中相同區域內的所有 Azure Resource Manager 虛擬網路。 選取您想要與其整合的虛擬網路。
Functions Flex 使用量和彈性進階方案僅支援區域虛擬網路整合。 如果虛擬網路位於相同區域中,請建立新的子網路或選取預先存在的空白子網路。
若要選取另一個區域中的虛擬網路,您必須佈建虛擬網路閘道,並啟用點對站功能。 僅專用方案才支援跨區域的虛擬網路整合,但全域對等互連可搭配區域虛擬網路整合使用。
整合期間,會重新啟動您的應用程式。 當整合完成時,您將會看到與其整合的虛擬網路詳細資訊。 根據預設,會啟用 [全部路由],並將所有流量路由傳送至您的虛擬網路。
如果您只想路由私人流量 (RFC1918 流量),請依照 App Service 說明文件中的步驟操作。
區域性虛擬網路整合
使用區域虛擬網路整合可讓您的應用程式存取:
- 位於與您的應用程式相同的虛擬網路中的資源。
- 與您應用程式所整合虛擬網路對等互連的虛擬網路中的資源。
- 服務端點保護的服務。
- Azure ExpressRoute 連線中的資源。
- 對等互連連線中的資源,包括 Azure ExpressRoute 連線。
- 私人端點
當您使用區域虛擬網路整合時,可以使用下列 Azure 網路功能:
- 網路安全性群組 (NSG):您可以使用位於整合子網路的 NSG 來封鎖輸出流量。 因為您無法使用虛擬網路整合來提供應用程式的輸入存取權,所以不適用輸入規則。
- 路由表 (UDR):您可以在整合子網路上放置路由表,以從您想要的位置傳送輸出流量。
注意
將所有輸出流量路由至您的虛擬網路時,必須遵守套用至整合子網路的 NSG 和 UDR。 整合虛擬網路後,除非您提供將流量導向至其他位置的路由,否則傳至公用 IP 位址的函式應用程式輸出流量,仍會從應用程式屬性中所列的位址傳送。
區域虛擬網路整合無法使用連接埠 25。
針對 Flex 使用量方案:
- 請遵循下列指示,確定訂用帳戶已啟用
Microsoft.App
Azure 資源提供者。 彈性取用應用程式所需的子網路委派為Microsoft.App/environments
。 - 彈性取用應用程式所需的子網路委派為
Microsoft.App/environments
。 這是彈性進階和 App Service 有不同委派需求的變更。 - 您可以規劃將 40 個 IP 位址最多用於一個函數應用程式,即使應用程式調整超過 40 個也一樣。 例如,如果您有將 VNet 整合到相同子網路中的 15 個 Flex Consumption 函數應用程式,您可以規劃最多使用 15x40 = 600 個 IP 位址。 此限制可能有所變更,且不會強制執行。
- 子網路無法用於其他用途 (例如私人或服務端點,或委派給任何其他主控方案或服務)。 雖然您可以與多個 Flex 使用量應用程式共用相同的子網路,但網路資源會跨這些函數應用程式共用,這可能會導致一個函數應用程式影響相同子網路上其他函數應用程式的效能。
使用虛擬網路有一些限制:
- 此功能可從 Flex 使用量、彈性進階和 App Service Premium V2 和 Premium V3 取得。 同時適用於標準方案,但只能從較新的 App Service 部署取得。 如果您使用較舊的部署,則只能使用進階 V2 App Service 方案的功能。 如果您想要確保自己可使用標準 App Service 方案的功能,請使用進階 V3 App Service 方案來建立應用程式。 這些方案僅支援我們最新的部署。 之後您可以視需要縮小規模。
- 整合子網路只能由一個 App Service 方案使用。
- App Service 環境中的隔離式方案應用程式無法使用此功能。
- 此功能需要 Azure Resource Manager 虛擬網路中 /28 或更大的未使用子網路。
- 應用程式和虛擬網路必須位於同一個區域。
- 您無法使用整合式應用程式刪除虛擬網路。 請先移除整合,再刪除虛擬網路。
- 一個 App Service 方案最多可以有兩個區域虛擬網路整合。 相同 App Service 方案中的多個應用程式可以使用相同的整合子網路。
- 如果有應用程式正在使用區域虛擬網路整合,則您無法變更應用程式或方案的訂用帳戶。
子網路
虛擬網路整合取決於專用子網路。 佈建子網路時,一開始 Azure 子網路會失去五個 IP。 針對彈性進階和 App Service 方案,每個方案執行個體的整合子網路會使用一個位址。 若將應用程式調整為四個執行個體,則會使用四個位址。 若為 Flex 使用量,則不適用,且執行個體會共用 IP 位址。
擴大或縮小規模時,所需的位址空間會在短時間內加倍。 這會影響一個指定子網路大小實際可用的支援執行個體。 下表顯示每個 CIDR 區塊的可用位址上限,以及這對水平調整的影響:
CIDR 區塊大小 | 可用位址上限 | 水平調整上限 (執行個體)* |
---|---|---|
/28 | 11 | 5 |
/27 | 27 | 13 |
/26 | 59 | 29 |
*假設您需在某個時間點擴大或縮小規模或 SKU。
由於指派之後就無法變更子網路大小,因此請使用足以容納應用程式可能連線的任何子網路規模。 為了避免 Functions 彈性進階方案的子網路容量發生任何問題,您應針對 Windows 使用提供 256 個位址的 /24,以及針對 Linux 使用提供 64 個位址的 /26。 與虛擬網路整合過程中,在 Azure 入口網站中建立子網路時,Windows 和 Linux 需要的大小下限分別為 /24 和 /26。
如果想讓您方案中的應用程式連線至另一個方案中應用程式已連線的虛擬網路,則請選取不同於預先存在的虛擬網路整合所使用的子網路。
Windows 和 Linux 應用程式都完全支援此功能,包括自訂容器在內。 Windows 應用程式與 Linux 應用程式的所有行為都完全一致。
網路安全性群組
您可以使用網路安全性群組封鎖虛擬網路中資源的輸入和輸出流量。 應用程式若使用區域虛擬網路整合,即可使用網路安全性群組來封鎖虛擬網路或網際網路中資源的輸出流量。 若要封鎖傳至公用位址的流量,必須使用虛擬網路整合並啟用 [完整路由]。 NSG 中的輸入規則不適用於您的應用程式,因為虛擬網路整合只會影響來自應用程式的輸出流量。
若要控制應用程式的輸入流量,請使用「存取限制」功能。 無論套用至整合子網路的路由為何,套用至整合子網路的 NSG 都會生效。 如果函式應用程式已與虛擬網路整合且啟用了 [完整路由],而且您沒有任何會影響整合子網路上之公用位址流量的路由,則所有輸出流量都仍須遵守指派給整合子網路的 NSG。 若未啟用 [全部路由],則 NSG 只會套用至 RFC1918 流量。
路由
您可以使用路由表,將來自您應用程式的輸出流量路由傳送到您想要的任何位置。 根據預設,路由表只會影響您的 RFC1918 目的地流量。 [全部路由] 啟用時,您的所有輸出呼叫都會受到影響。 [全部路由] 停用時,只有私人流量 (RFC1918) 會受到路由表的影響。 在整合子網路上設定的路由不會影響對輸入應用程式要求的回覆。 常見的目的地包括防火牆裝置或閘道。
如果您想要將所有輸出流量路由傳送至內部部署,可以使用路由表將所有輸出流量傳送至您的 ExpressRoute 閘道。 如果您將流量路由至閘道,請務必在外部網路中設定路由以傳回任何回覆。
邊界閘道協定 (BGP) 路由也會影響您的應用程式流量。 如果您具有 來自類似 ExpressRoute 閘道的 BGP 路由,您的應用程式輸出流量會受到影響。 根據預設,BGP 路由只會影響您的 RFC1918 目的地流量。 當函式應用程式已與虛擬網路整合並啟用 [完整路由] 時,所有輸出流量都會受到 BGP 路由的影響。
Azure DNS 私人區域
您的應用程式與虛擬網路整合之後,它會使用與虛擬網路設定使用的相同 DNS 伺服器,並將可與連結至虛擬網路的 Azure DNS 私人區域搭配使用。
將儲存體帳戶限定於虛擬網路
注意
若要在儲存體帳戶上快速部署已啟用私人端點的函式應用程式,請參閱下列範本:函式應用程式搭配 Azure 儲存體私人端點。
建立函式應用程式時,您必須建立或連結至支援 Blob、佇列及資料表儲存體的一般用途 Azure 儲存體帳戶。 您可以將此儲存體帳戶取代為受到服務端點或私人端點保護的儲存體帳戶。
專用 (App Service) 方案和彈性進階方案以及 Flex 使用量方案中,所有 Windows 和 Linux 虛擬網路支援的 SKU 都支援此功能。 不支援取用方案。 若要了解如何使用限定於私人網路的儲存體帳戶來設定函式,請參閱將儲存體帳戶限定於虛擬網路。
使用 Key Vault 參考
您可使用 Azure Key Vault 參考在 Azure Functions 應用程式中使用來自 Azure Key Vault 的祕密,而不需進行任何程式碼變更。 Azure Key Vault 服務可供集中管理祕密,完整控制存取原則和稽核歷程記錄。
如果已為應用程式設定虛擬網路整合,金鑰保存庫參考可用來從具網路限制的保存庫擷取秘密。
虛擬網路觸發程序 (非 HTTP)
目前,您可使用下列其中一種方式,在虛擬網路內使用非 HTTP 觸發程序函式:
- 在彈性進階方案中執行函式應用程式,並啟用虛擬網路觸發程序支援。
- 在 Flex 使用量、App Service 方案或 App Service 環境中執行函式應用程式。
具有虛擬網路觸發程序的彈性進階方案
彈性進階方案可讓您建立由虛擬網路內的服務觸發的函式。 這些非 HTTP 觸發程序稱為虛擬網路觸發程序。
根據預設,虛擬網路觸發程序不會導致您的函式應用程式擴充超出其預熱的執行個體計數。 不過,某些延伸模組支援會導致您的函式應用程式動態調整的虛擬網路觸發程序。 您可以透過下列其中一種方式在您的函式應用程式中為支援的延伸模組啟用此動態調整監視:
在 Azure 入口網站中,瀏覽至您的函式應用程式。
在 [設定] 下,選取 [組態],然後在 [函式執行階段設定] 索引標籤中將 [執行階段調整監視] 設為 [開啟]。
選取 [儲存] 以更新函式應用程式組態,然後重新啟動應用程式。
提示
啟用虛擬網路觸發程序的監視可能會對應用程式的效能造成影響,儘管這種影響可能非常小。
在 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 環境中執行時,您可使用非 HTTP 觸發程序函式。 為了讓函式能正確地觸發,您必須連線到可存取觸發程序連線中所定義資源的虛擬網路。
例如,假設您想要將 Azure Cosmos DB 設定為只接受來自虛擬網路的流量。 在此情況下,您必須在提供與該虛擬網路整合的 App Service 方案中部署函式應用程式。 整合可讓該 Azure Cosmos DB 資源觸發函式。
混合式連線
混合式連線是 Azure 轉送的功能,您可用來存取其他網路中的應用程式資源。 它可讓您從應用程式存取應用程式端點。 您可將其用於存取應用程式。 混合式連線適用於所有在 Windows 上執行的函式 (但取用方案除外)。
如同在 Azure Functions 中使用,每個混合式連線都會與單一 TCP 主機和連接埠組合相互關聯。 這意謂著混合式連線的端點可位於任何作業系統和任何應用程式上,只要您正在存取 TCP 接聽連接埠即可。 混合式連線不知道 (或不在意) 應用程式通訊協定為何,或您要存取什麼資源。 其只會提供網路存取。
若要深入了解,請參閱混合式連線的 App Service 文件。 這些相同的設定步驟支援 Azure Functions。
重要
只有在 Windows 方案上支援混合式連線。 不支援 Linux。
輸出 IP 限制
輸出 IP 限制適用於 Flex 使用量方案、彈性進階方案、App Service 方案或 App Service 環境。 您可以為部署 App Service 環境的虛擬網路設定輸出限制。
當您將彈性進階方案或 App Service 方案中的函數應用程式與虛擬網路整合時,應用程式預設仍可對網際網路進行輸出呼叫。 藉由將函式應用程式與已啟用 [完整路由] 的虛擬網路整合,您可以將所有輸出流量強制傳送至虛擬網路,如此一來就可以使用網路安全性群組規則來限制流量。 針對 Flex 使用量,所有流量都已透過虛擬網路進行路由傳送,且不需要路由全部。
若要了解如何使用虛擬網路控制輸出 IP,請參閱教學課程:使用 Azure 虛擬網路 NAT 閘道控制 Azure Functions 輸出 IP。
自動化
下列 API 可讓您以程式設計方式管理區域虛擬網路整合項目:
- Azure CLI:使用
az functionapp vnet-integration
命令來新增、列出或移除區域虛擬網路整合項目。 - ARM 範本:可以使用 Azure Resource Manager 範本來啟用區域虛擬網路整合。 如需完整範例,請參閱這個 Functions 快速入門範本。
測試考量
使用私人端點在函式應用程式中測試函式時,您必須在相同的虛擬網路內執行測試,例如在該網路中的虛擬機器 (VM) 上。 若要在入口網站上從該 VM 中使用的 [程式碼 + 測試] 選項,您必須將下列 CORS 來源新增至您的函式應用程式:
https://functions-next.azure.com
https://functions-staging.azure.com
https://functions.azure.com
https://portal.azure.com
如果您已使用私人端點或任何其他存取限制來限制對函數應用程式的存取,則也必須將服務標籤 AzureCloud
新增至允許清單。 若要更新允許清單:
瀏覽至您的函數應用程式,然後選取 [設定]>[網路],然後選取 [輸入存取組態]>[公用網络存取]。
請確定 [公用網络存取] 已設定為 [已從選取的虛擬網路和 IP 位址啟用]。
在 [網站存取和規則] 底下 [新增規則]:
選取
Service Tag
做為來源設定 [類型],以及選取AzureCloud
做為 [服務標籤]。請確定動作為 [允許],並設定您所需的名稱和優先順序。
疑難排解
這項功能很容易設定,但不表示您在使用過程中不會遇到問題。 如果您在存取所需端點時遇到問題,可利用一些公用程式從應用程式主控台測試連線能力。 有兩個您可以使用的主控台。 一個是 Kudu 主控台,另一個則是 Azure 入口網站中的主控台。 若要從您的應用程式前往 Kudu 主控台,請按 [工具] > [Kudu]。 您也可以輸入 [站台名稱].scm.azurewebsites.net 前往 Kudo 主控台。 網站載入之後,移至 [偵錯主控台] 索引標籤。若要從您的應用程式存取 Azure 入口網站裝載的主控台,請移至 [工具]>[主控台]。
工具
在原生 Windows 應用程式中,由於安全性限制,無法透過主控台使用 ping、nslookup 和 tracert 工具 (它們在自訂 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 整合,然後將其中斷連線:
- 重新建立 App Service 方案和 Web 應用程式 (必須使用與之前完全相同的 Web 應用程式名稱)。
- 導覽至 Web 應用程式上的 [網路] 刀鋒視窗,並設定 VNet 整合。
- 設定完 VNet 整合後,選取 [中斷連線] 按鈕。
- 刪除 App Service 方案或 Web 應用程式。
- 更新/刪除子網路或虛擬網路。
如果您依照上述步驟操作後仍發生 VNet 整合相關問題,請聯絡 Microsoft 支援服務。
網路疑難排解員
您也可以使用網路疑難排解員來解決連線問題。 若要開啟網路疑難排解員,請移至 Azure 入口網站中的應用程式。 選取 [診斷並解決問題],然後搜尋網路疑難排解員。
連線問題 - 它會檢查虛擬網路整合的狀態,包括檢查是否已將私人 IP 指派給方案的所有執行個體和 DNS 設定。 如果未設定自訂 DNS,則會套用預設的 Azure DNS。 疑難排解員也會檢查常見的函式應用程式相依性,包括 Azure 儲存體的連線能力和其他繫結相依性。
組態問題 - 此疑難排解員會檢查您的子網路對於虛擬網路整合是否有效。
子網路/VNet 刪除問題 - 此疑難排解員會檢查您的子網路是否有任何鎖定,以及是否有任何可能阻止刪除 VNet/子網路的未使用的服務關聯連結。
下一步
若要深入了解網路和 Azure Functions: