共用方式為


使用診斷記錄針對 Azure VPN 閘道進行疑難排解

本文可協助您了解可用於 VPN 閘道診斷的各種記錄,以及如何使用這些記錄對 VPN 閘道問題進行有效的疑難排解。

若本文中未提及您的 Azure 問題,請前往 Microsoft Q&A 及 Stack Overflow 上的 Azure 論壇。 您可以在這些論壇中張貼您的問題,或將問題貼到 Twitter 上的 @AzureSupport。 您也可以提交 Azure 支援要求。 若要提交支援要求,請在 Azure 支援頁面上,選取 [取得支援]。

以下是可在 Azure 中使用的記錄:

  • GatewayDiagnosticLog
  • TunnelDiagnosticLog
  • RouteDiagnosticLog
  • IKEDiagnosticLog
  • P2SDiagnosticLog

*針對原則型網路閘道,只有 GatewayDiagnosticLogRouteDiagnosticLog 可供使用。

如需所有 VPN 閘道記錄,請參閱 Azure VPN 閘道監視資料參考

若要使用 Azure Log Analytics 從 Azure VPN 閘道設定診斷記錄事件,請參閱在 Azure 監視器中建立診斷設定

GatewayDiagnosticLog

設定變更會在 GatewayDiagnosticLog 資料表中進行審核。 可能需要幾分鐘的時間,您執行的變更才會反映在記錄中。

在這裡,我們提供您範例查詢作為參考。

AzureDiagnostics  
| where Category == "GatewayDiagnosticLog"  
| project TimeGenerated, OperationName, Message, Resource, ResourceGroup  
| sort by TimeGenerated asc

這項關於 GatewayDiagnosticLog 的查詢會顯示多個資料行。

名稱 說明
TimeGenerated 每個事件的時間戳記 (UTC 時區)。
OperationName 發生的事件。 它可以是 SetGatewayConfiguration、SetConnectionConfiguration、HostMaintenanceEvent、GatewayTenantPrimaryChanged、MigrateCustomerSubscription、GatewayResourceMove、ValidateGatewayConfiguration
訊息 所發生作業的詳細資料,並列出成功/失敗結果。

下列範例會顯示套用新設定時所記錄的活動:

GatewayDiagnosticLog 中所顯示的設定閘道作業的範例。

請注意,每次在 VPN 閘道或區域網路閘道上修改設定時,就會記錄 SetGatewayConfiguration

GatewayDiagnosticLog 資料表的結果與 TunnelDiagnosticLog 資料表的結果進行比較,有助於確定在設定變更或維護活動期間是否發生通道連線失敗。 如果是的話,其可為潛在根本原因提供重要指示。

TunnelDiagnosticLog

TunnelDiagnosticLog 資料表適合用於檢查通道的歷史連線狀態。

在這裡,我們提供您範例查詢作為參考。

AzureDiagnostics
| where Category == "TunnelDiagnosticLog"
//| where remoteIP_s == "<REMOTE IP OF TUNNEL>"
| project TimeGenerated, OperationName, remoteIP_s, instance_s, Resource, ResourceGroup
| sort by TimeGenerated asc

這項關於 TunnelDiagnosticLog 的查詢會顯示多個資料行。

名稱 說明
TimeGenerated 每個事件的時間戳記 (UTC 時區)。
OperationName 發生的事件。 可以是 TunnelConnectedTunnelDisconnected
remoteIP_s 內部部署 VPN 裝置的 IP 位址。 在真實世界的案例中,如果有多個相關的內部部署裝置,則依其 IP 位址進行篩選會很有用。
Instance_s 觸發事件的閘道角色執行個體。 可以是 GatewayTenantWorker_IN_0 或 GatewayTenantWorker_IN_1,也就是兩個閘道執行個體的名稱。
資源 指出 VPN 閘道的名稱。
ResourceGroup 指出閘道所在的資源群組。

範例輸出︰

TunnelDiagnosticLog 中所顯示的通道連線事件的範例。

對於過去非預期發生的 VPN 中斷連線事件,適合使用 TunnelDiagnosticLog 進行疑難排解。 這個記錄的輕量型特性可讓您輕輕鬆鬆分析幾天內的大量時間範圍。 只有在找出中斷連線的時間戳記之後,才能切換至 IKEdiagnosticLog 資料表更詳細的分析,深入探索中斷連線的原因應該與 IPsec 有關。

一些疑難排解提示:

  • 如果您在一個閘道執行個體上觀察到中斷連線事件,然後在幾秒鐘內看到不同閘道執行個體上發生連線事件,則表示發生了閘道容錯移轉。 這類事件通常是由於閘道執行個體上的維護而造成的。 若要深入了解此行為,請參閱關於 Azure VPN 閘道備援
  • 如果您在 Azure 端故意執行閘道重設 - 這會導致使用中閘道執行個體重新啟動。 若要深入了解此行為,請參閱重設 VPN 閘道
  • 如果您在一個閘道執行個體上看到中斷連線事件,然後在幾秒鐘內看到相同的閘道執行個體發生連線事件,則可能發生造成 DPD 逾時的網路問題,或是內部部署裝置錯誤傳送中斷連線。

RouteDiagnosticLog

RouteDiagnosticLog 資料表靜態修改的路由或透過 BGP 接收的路由相關活動。

在這裡,我們提供您範例查詢作為參考。

AzureDiagnostics
| where Category == "RouteDiagnosticLog"
| project TimeGenerated, OperationName, Message, Resource, ResourceGroup

這項關於 RouteDiagnosticLog 的查詢顯示多個資料行。

名稱 說明
TimeGenerated 每個事件的時間戳記 (UTC 時區)。
OperationName 發生的事件。 可以是 StaticRouteUpdate、BgpRouteUpdate、BgpConnectedEvent、BgpDisconnectedEvent
訊息 發生作業的詳細資料。

輸出會顯示有關 BGP 對等互連/中斷連線和交換路由的實用資訊。

範例:

RouteDiagnosticLog 中所顯示的 BGP 路由交換活動的範例。

IKEDiagnosticLog

IKEDiagnosticLog 資料表提供有關 IKE/IPsec 的詳細偵錯記錄。 針對中斷連線或連線 VPN 失敗的情況進行疑難排解時,這個記錄會很實用。

在這裡,我們提供您範例查詢作為參考。

AzureDiagnostics  
| where Category == "IKEDiagnosticLog" 
| extend Message1=Message
| parse Message with * "Remote " RemoteIP ":" * "500: Local " LocalIP ":" * "500: " Message2
| extend Event = iif(Message has "SESSION_ID",Message2,Message1)
| project TimeGenerated, RemoteIP, LocalIP, Event, Level 
| sort by TimeGenerated asc

這項關於 IKEDiagnosticLog 的查詢顯示多個資料行。

名稱 說明
TimeGenerated 每個事件的時間戳記 (UTC 時區)。
RemoteIP 內部部署 VPN 裝置的 IP 位址。 在真實世界的案例中,如果有多個相關的內部部署裝置,則依其 IP 位址進行篩選會很有用。
LocalIP 正在進行疑難排解的 VPN 閘道 IP 位址。 在真實世界的案例中,如果在訂用帳戶中有多個相關的 VPN 閘道,則依其 IP 位址進行篩選會很有用。
事件 包含適用於疑難排解的診斷訊息。 它們通常會以 關鍵詞開頭,並參考 Azure 閘道所執行的動作: [SEND] 表示由 Azure 閘道傳送的 IPsec 封包所造成事件。 [接收] 表示從內部部署裝置接收封封包所產生的事件。 [本機] 表示 Azure 閘道在本機採取的動作。

請注意,RemoteIP、LocalIP 和 Event 資料行不會出現在 AzureDiagnostics 資料庫的原始資料行清單中,而會在剖析 "Message" 資料行的輸出後新增至查詢,以簡化其分析。

疑難排解秘訣:

  • 若要識別 IPsec 交涉的開始,您需要尋找初始SA_INIT訊息。 通道的任一端都有可能會傳送這類訊息。 傳送第一個封包的一方在 IPsec 術語中稱為「啟動者」,而另一方則成為「回應者」。 第一個 SA_INIT 訊息一律是 rCookie = 0 的訊息。

  • 如果無法建立 IPsec 通道,Azure 會每隔幾秒鐘繼續重試。 因此,使用 IKEdiagnosticLog 對「VPN 關機」問題進行移難排解很方便,因為您不需要等待特定時間即可重現此問題。 此外,就理論而言,每次嘗試時都會發生相同的失敗,因此您隨時都可以放大一個失敗協商「範例」。

  • SA_INIT包含對等想要用於此 IPsec 交涉的 IPsec 參數。 官方文件
    預設 IPsec/IKE 參數列出 Azure 閘道支援的 IPsec 參數與預設設定。

P2SDiagnosticLog

最後一個適用於 VPN 診斷的資料表是 P2SDiagnosticLog。 此資料表會追蹤點對站活動 (僅限 IKEv2 和 OpenVPN 通訊協定)。

在這裡,我們提供您範例查詢作為參考。

AzureDiagnostics  
| where Category == "P2SDiagnosticLog"  
| project TimeGenerated, OperationName, Message, Resource, ResourceGroup

P2SDiagnosticLog 發出的這個查詢將顯示多個資料行。

名稱 說明
TimeGenerated 每個事件的時間戳記 (UTC 時區)。
OperationName 發生的事件。 將會是 P2SLogEvent
訊息 發生作業的詳細資料。

輸出會顯示閘道已套用的所有點對站設定,以及已建立的 IPsec 原則。

P2SDiagnosticLog 中所顯示的點對站連線的範例。

此外,當用戶端使用 OpenVPN 和 Microsoft Entra ID 驗證建立點對站的連線時,資料表會記錄封包活動,如下所示:

[MSG] [default] [OVPN_XXXXXXXXXXXXXXXXXXXXXXXXXXX] Connect request received. IP=0.X.X.X:XXX
[MSG] [default] [OVPN_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] AAD authentication succeeded. Username=***tosouser@contoso.com
[MSG] [default] [OVPN_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] Connection successful. Username=***tosouser@contoso.com IP=10.0.0.1

注意

在點對站記錄中,使用者名稱會部分遮蔽。 用戶端使用者 IP 的第一個八位元會以 0 取代。

後續步驟

若要設定通道資源記錄的警示,請參閱設定 VPN 閘道資源記錄的警示