共用方式為


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

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

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

Azure 中有下列記錄可供使用*:

名稱 說明
GatewayDiagnosticLog 包含閘道設定事件、主要變更和維護事件的診斷記錄。
TunnelDiagnosticLog 包含通道狀態變更事件。 通道連線/中斷連線事件具有狀態變更的摘要原因 (如果適用)。
RouteDiagnosticLog 記錄靜態路由的變更和閘道上發生的 BGP 事件。
IKEDiagnosticLog 記錄閘道上的 IKE 控制訊息和事件。
P2SDiagnosticLog 記錄閘道上的點對站控制訊息和事件。

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

請注意,這些資料表中有幾個可用的資料行。 在本文中,我們只會呈現最相關的記錄,以方便使用記錄。

設定記錄

請遵循此程序,了解如何使用 Azure Log Analytics 設定來自 Azure VPN 閘道的診斷記錄事件:

  1. 使用本文建立 Log Analytics 工作區。

  2. 在監視>診斷設定分頁上尋找您的 VPN 閘道。

Screenshot of the Diagnostic settings blade.

  1. 選取網路閘道,然後按一下 [新增診斷設定]。

Screenshot of the Add diagnostic setting interface.

  1. 填入診斷設定名稱,選取所有記錄類別,然後選擇 Log Analytics 工作區。

Detailed screenshot of the Add diagnostic setting properties.

注意

一開始可能需要幾小時的時間才會顯示資料。

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
訊息 所發生作業的詳細資料,並列出成功/失敗結果。

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

Example of a Set Gateway Operation seen in 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 位址時非常實用,結果應該會有一個以上的 IP 位址。
Instance_s 觸發事件的閘道角色執行個體。 可以是 GatewayTenantWorker_IN_0 或 GatewayTenantWorker_IN_1,也就是兩個閘道執行個體的名稱。
資源 指出 VPN 閘道的名稱。
ResourceGroup 指出閘道所在的資源群組。

範例輸出︰

Example of a Tunnel Connected Event seen in 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 對等互連/中斷連線和交換路由的實用資訊。

範例:

Example of BGP route exchange activity seen in RouteDiagnosticLog.

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 位址時非常實用,結果應該會有一個以上的 IP 位址。
LocalIP 正在進行疑難排解的 VPN 閘道 IP 位址。 在真實世界環境中,篩選相關 VPN 閘道的 IP 位址時非常實用,您的訂用帳戶應該會有一個以上的 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 原則。

Example of Point to Site connection seen in P2SDiagnosticLog.

此外,只要用戶端透過 IKEv2 或 OpenVPN 建立點對站連線,此資料表就會記錄封包活動、EAP/RADIUS 交談,以及使用者的成功/失敗結果。

Example of EAP authentication seen in P2SDiagnosticLog.

後續步驟

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