診断ログを使用した Azure VPN Gateway のトラブルシューティング
この記事では、VPN Gateway 診断で使用できるさまざまなログと、それらを使用して VPN ゲートウェイに関する問題のトラブルシューティングを効果的に行う方法について説明します。
この記事で Azure の問題に対処できない場合は、Microsoft Q&A と Stack Overflow の Azure 関連フォーラムを参照してください。 問題をこれらのフォーラムに投稿するか、または Twitter の @AzureSupport に投稿できます。 Azure サポート要求を送信することもできます。 サポート要求を送信するには、[Azure サポート] ページで [サポートを受ける] を選択します。
Azure では、次のログを使用できます。
- GatewayDiagnosticLog
- TunnelDiagnosticLog
- RouteDiagnosticLog
- IKEDiagnosticLog
- P2SDiagnosticLog
* ポリシー ベースのゲートウェイの場合、使用できるのは、GatewayDiagnosticLog と RouteDiagnosticLog だけです。
すべての VPN Gateway ログについては、「Azure VPN Gateway 監視データ リファレンス」を参照してください
Azure Log Analytics を使用して Azure VPN Gateway から診断ログ イベントを設定するには、「Azure Monitor の診断設定を作成する」を参照してください。
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 のいずれかになります。 |
メッセージ | 実行されている操作の詳細と、成功または失敗した結果の一覧を表示します。 |
次の例は、新しい構成が適用されたときに記録されたアクティビティを示しています。
VPN Gateway またはローカル ネットワーク ゲートウェイの両方で構成が変更されるたびに、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 | 発生したイベント。 TunnelConnected または TunnelDisconnected のいずれかになります。 |
remoteIP_s | オンプレミス VPN デバイスの IP アドレス。 実際のシナリオでは、複数存在する場合に、関連するオンプレミス デバイスの IP アドレスでフィルター処理できると便利です。 |
Instance_s | イベントをトリガーしたゲートウェイ ロール インスタンス。 GatewayTenantWorker_IN_0 または GatewayTenantWorker_IN_1 のいずれかになります (ゲートウェイの 2 つのインスタンスの名前)。 |
リソース | VPN ゲートウェイの名前を示します。 |
ResourceGroup | ゲートウェイが存在するリソース グループを示します。 |
出力例:
TunnelDiagnosticLog は、予期しない VPN 切断に関する過去のイベントのトラブルシューティングに役立ちます。 情報量が多くないため、あまり労力をかけずに、数日間にわたる長期間の分析を行うこともできます。 切断のタイムスタンプを特定した後に、IKEdiagnosticLog テーブルの詳細な分析に切り替えて詳細を調べ、切断の理由が IPsec 関連のものかどうかを判別することができます。
トラブルシューティングに関するヒント:
- 1 つのゲートウェイ インスタンスで切断イベントが発生した後、数秒後に異なるゲートウェイ インスタンスで接続イベントが発生する場合、ゲートウェイのフェイルオーバーが発生したことを示しています。 このようなイベントは、通常、ゲートウェイ インスタンスのメンテナンスが原因で発生します。 この動作の詳細については、「AZURE VPN gateway の冗長性について」を参照してください。
- Azure 側でゲートウェイのリセットを意図的に実行すると (アクティブなゲートウェイ インスタンスが再起動されます)、これと同じ動作が見られます。 この動作の詳細については、VPN Gateway のリセットに関するページを参照してください。
- 1 つのゲートウェイ インスタンスで切断イベントが発生した後、数秒後に同じゲートウェイ インスタンスで接続イベントが発生する場合、DPD タイムアウトを引き起こしているネットワーク障害、またはオンプレミス デバイスによる誤送信によって引きこされた切断がないか調べます。
RouteDiagnosticLog
RouteDiagnosticLog テーブルは、静的に変更されたルートまたは BGP 経由で受信したルートのアクティビティをトレースします。
以下に、参照用のサンプル クエリを示します。
AzureDiagnostics
| where Category == "RouteDiagnosticLog"
| project TimeGenerated, OperationName, Message, Resource, ResourceGroup
RouteDiagnosticLog に対するこのクエリでは、以下の複数の列が表示されます。
名前 | 説明 |
---|---|
TimeGenerated | 各イベントのタイムスタンプ (UTC タイムゾーン)。 |
OperationName | 発生したイベント。 StaticRouteUpdate、BgpRouteUpdate、BgpConnectedEvent、BgpDisconnectedEvent のいずれかになります。 |
メッセージ | 実行されている操作の詳細。 |
出力には、接続/切断された 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 Gateway の IP アドレス。 実際のシナリオでは、サブスクリプションに複数存在する場合に、関連する VPN Gateway の IP アドレスでフィルター処理できると便利です。 |
イベント | トラブルシューティングに役立つ診断メッセージが含まれています。 通常、キーワードで始まり、Azure ゲートウェイによって実行されるアクションを参照します。[SEND] は、Azure ゲートウェイによって送信された IPSec パケットによって発生したイベントを示します。 [RECEIVED] は、オンプレミスのデバイスから受信したパケットによって発生したイベントを示します。 [LOCAL] は、Azure ゲートウェイによってローカルで実行されるアクションを示します。 |
RemoteIP、LocalIP、Event 列が AzureDiagnostics データベースの元の列リストに存在していませんが、分析を簡略化するために、"Message" 列の出力を解析することによって、クエリに追加されている点に注意してください。
トラブルシューティングのヒント:
IPSec ネゴシエーションの開始を識別するには、最初の SA_INIT メッセージを見つける必要があります。 このようなメッセージは、トンネルのどちらの側からも送信される可能性があります。 IPsec 用語では、最初のパケットを送信する側が "イニシエーター" と呼ばれ、もう一方は "レスポンダー" と呼ばれます。 最初の SA_INIT メッセージは、常に rCookie = 0 になります。
IPsec トンネルの確立に失敗した場合、Azure は数秒ごとに再試行を続けます。 このため、問題を再現するために一定時間待つ必要がないため、IKEdiagnosticLog で "VPN ダウン" の問題のトラブルシューティングを行うのが便利です。 また、この失敗は理論上、試行するたびに常に同じ結果になるため、失敗する 1 つの "サンプル" ネゴシエーションに絞って調べることができます。
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 ポリシーがすべて表示されます。
さらに、クライアントが 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
Note
ポイント対サイト ログでは、ユーザー名が部分的に隠されています。 クライアント ユーザー IP の最初のオクテットは、 0
に置き換えられています。
次のステップ
トンネル リソース ログにアラートを構成するには、VPN Gateway リソース ログのアラートの設定に関するページを参照してください。