使用診斷記錄針對 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 中所見通道連線事件的範例。

TunnelDiagnosticLog 有助於針對過去有關非預期的 VPN 中斷連線的事件進行疑難解答。 這個記錄的輕量型特性可讓您輕輕鬆鬆分析幾天內的大量時間範圍。 只有在找出中斷連線的時間戳記之後,才能切換至 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 閘道所執行的動作:[傳送] 表示由 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 閘道資源記錄的警示