解決 Azure App Service 跨區域連線與 VNet 整合挑戰

在雲端架構中,我們常會遇到服務分散在不同區域的情況。例如,你的 App Service 部署在 Taiwan North ,但主要的測試環境與虛擬網路( VNet )卻位在 Japan East 。當你發現 App Service 無法連線至合作廠商 宏達科技( GrandTech ) 的內部網路時,通常不只是程式碼的問題,而是底層網路架構需要調整。

問題現象:連線超時與網路阻斷

當 App Service 發出請求卻一直收到 TLS timeouthttp_status=0 時,這代表請求根本沒有成功建立連線。這通常有兩個主要原因:

  1. IP 白名單限制:宏達科技的伺服器可能設有防火牆,只允許特定的 IP 區段進入,而 Azure App Service 的預設公用輸出 IP 並不在允許清單內。
  2. 網路區域限制:位在 Japan East 的測試用虛擬機器( VM )可以成功連通,是因為該區域的網路已經與宏達科技建立了信任通道( 或者是固定的白名單 IP ),但 Taiwan North 的流量則是走公用網路出去,因此被對方防火牆攔截。

關鍵解決策略:虛擬網路整合

要讓 App Service 像虛擬機器一樣擁有受控的網路路徑,必須執行 VNet Integration ( 虛擬網路整合 )。但當 App Service 與目標 VNet 跨區域時,我們會遇到一些硬性限制。

實戰步驟一:檢查現有網路狀態

首先,我們需要確認 Taiwan North 當地的網路環境。你可以使用 Azure CLI 檢查該區域的 VNet 清單:

az network vnet list –query “[?location==’northtaiwan’].{name:name,rg:resourceGroup}” -o table

在我們的案例中,發現 Taiwan North 只有一個名為 vnet-proxy-agent 的虛擬網路。

實戰步驟二:處理子網域委派問題

若要讓 App Service 加入 VNet ,該子網域( Subnet )必須委派給 Microsoft.Web/serverFarms

注意:如果該子網域已經有其他虛擬機器在使用,你無法直接更新委派設定。

這時正確的做法是在 vnet-proxy-agent 中,為 App Service 建立一個專屬且乾淨的子網域。

實戰步驟三:跨區域網路串接( Peering )

由於宏達科技只認可 Japan East 網路出口的 IP ,我們必須確認 Taiwan North 的 VNet 是否已經與 Japan East 的 Hub VNet 建立 Peering ( 虛擬網路對等互連 )。

當 Peering 建立後, Taiwan North 的流量就能透過 Azure 骨幹網路導向 Japan East ,再經由那邊的白名單管道存取宏達科技的伺服器。


最終檢查清單

  1. 新增專屬子網域:在 Taiwan North 的 VNet 中切分出一塊新的 IP 區段。
  2. 設定委派:將該子網域委派給 Web App 使用。
  3. 啟用路由設定:在 App Service 的環境變數中,務必設定 WEBSITE_VNET_ROUTE_ALL=1 ,以確保所有對外流量都強制經過 VNet ,而不是走預設的 Azure 公用出口。
  4. 重新部署:更改環境變數與網路整合設定後,務必重新啟動或部署應用程式,確保新的網路路徑生效。

結語

解決雲端連線問題時, 視覺化你的網路路徑 非常重要。當公用網路不通時,善用 Azure 的區域性 VNet 與跨區域對等互連技術,能有效解決 IP 阻擋與連線超時的困擾。如果你也遇到類似的跨區域連線問題,不妨檢查一下你的 VNet 委派與路由路徑!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *