この記事では、Azure PowerShell を使用して、Azure Virtual WAN のサイト間 VPN ゲートウェイでパケット キャプチャを作成する方法について説明します。 パケット キャプチャは、問題の範囲をネットワークの特定の部分に絞り込むのに役立ちます。 問題がオンプレミス側にあるのか、それとも Azure 側にあるのか決定できます。 問題を絞り込むと、デバッグと修復アクションをより効率的に行うことができます。
一般に入手可能なパケット キャプチャ ツールはいくつか存在しますが、これらのツールで関連するパケット キャプチャを取得するのは、特に大量のトラフィックが発生するシナリオでは面倒になる可能性があります。 Virtual WAN パケット キャプチャで提供されるフィルタリング機能が、主な差別化要因となります。 Virtual WAN パケット キャプチャは、一般に入手可能なパケット キャプチャ ツールと共に使用できます。
前提条件
環境に次の構成が既に設定されていることを確認します。
- Virtual WAN と仮想ハブ。
- 仮想ハブにデプロイされたサイト間 VPN ゲートウェイ。
- VPN サイトをサイト間 VPN ゲートウェイに接続する接続を作成することもできます。
Azure PowerShell を使用する
この記事では、PowerShell コマンドレットを使用します。 コマンドレットを実行するには、Azure Cloud Shell を使用できます。 Cloud Shell は無料のインタラクティブ シェルです。この記事の手順は、Azure Cloud Shell を使って実行することができます。 一般的な Azure ツールが事前にインストールされており、アカウントで使用できるように構成されています。
Cloud Shell を開くには、コード ブロックの右上の隅にある [Cloudshell を開く] を選択するだけです。 https://shell.azure.com/powershell に移動して、別のブラウザー タブで Cloud Shell を開くこともできます。 [コピー] を選択してコードのブロックをコピーし、Cloud Shell に貼り付けてから、Enter キーを押して実行します。
環境を設定する
次のコマンドを使用して、正しいサブスクリプションを使用していること、およびサイト間 VPN ゲートウェイでパケット キャプチャを実行するためのアクセス許可を持つユーザーとしてログインしていることを確認します
$subid = “<insert Virtual WAN subscription ID here>”
Set-AzContext -SubscriptionId $subid
ストレージ アカウントとコンテナーの作成
ストレージ アカウントは、パケット キャプチャの結果の保存に使用されます。
- ストレージ アカウントを作成します。 手順については、「ストレージ アカウントを作成する」を参照してください。
- ストレージ アカウント内にコンテナー オブジェクトを作成します。 手順については、「コンテナーを作成する」を参照してください。
SAS URL の生成
パケット キャプチャを停止するときは、作成したストレージ コンテナーの SAS URL を指定する必要があります。 パケット キャプチャの結果は、この URL を使用して格納されます。
次のコマンドを実行して、Shared Access Signature (SAS) URL を生成します。
$rg = “<resource group name containing storage account>”
$storeName = “<name of storage account> “
$containerName = “<name of container you want to store packet capture in>
$key = Get-AzStorageAccountKey -ResourceGroupName $rg -Name $storeName
$context = New-AzStorageContext -StorageAccountName $storeName -StorageAccountKey $key[0].value
New-AzStorageContainer -Name $containerName -Context $context
$container = Get-AzStorageContainer -Name $containerName -Context $context
$now = get-date
$sasurl = New-AzStorageContainerSASToken -Name $containerName -Context $context -Permission "rwd" -StartTime $now.AddHours(-1) -ExpiryTime $now.AddDays(1) -FullUri
パケット キャプチャを開始する
このセクションは、サイト間 VPN ゲートウェイ (すべての接続) のパケット キャプチャを開始するために役立ちます。
パケット キャプチャを実行するには、サイト間 VPN ゲートウェイの -Name 値が必要です。 -Name 値を見つけるには、Azure portal で仮想ハブに移動し、 [接続] で [VPN (サイト間)] を選択します。
パケット キャプチャを開始するには、次のコマンドを実行します。
Start-AzVpnGatewayPacketCapture -ResourceGroupName $rg -Name "<name of the Gateway>"
省略可能: フィルターを指定する
パケット キャプチャを単純化するために、パケット キャプチャにフィルターを指定して特定の動作のみを対象にすることができます。
Note
TracingFlags と TCPFlags については、キャプチャしたいプロトコルの数値を (論理和と同様に) 加算することで複数のプロトコルを指定できます。 たとえば、ESP および OVPN パケットだけをキャプチャしたい場合は、TracingFlag 値として 8 + 1 = 9 を指定します。
パラメーター | Description | 既定の値 | 使用できる値 |
---|---|---|---|
TracingFlags | キャプチャするパケットの種類を指定する整数 | 11 (ESP、IKE、OVPN) | ESP = 1、IKE = 2、OVPN = 8 |
TCPFlags | 取り込む TCP パケットの種類を指定する整数 | 0 (なし) | FIN = 1、SYN = 2、RST = 4、PSH = 8、ACK = 16、URG = 32、ECE = 64、CWR = 128 |
MaxPacketBufferSize | キャプチャするパケットの最大サイズ (バイト単位)。 指定された値より大きい場合、パケットは切り捨てられます。 | 120 | Any |
MaxFileSize | キャプチャ ファイルの最大サイズ (MB)。 キャプチャは循環バッファーに格納されるので、オーバーフローは FIFO 方式で処理されます (古いパケットから先に削除されます)。 | 100 | Any |
SourceSubnets | 指定した CIDR 範囲からのパケットがキャプチャされます。 配列として指定します。 | [] (すべての IPv4 アドレス) | コンマ区切りの IPV4 サブネットの配列 |
DestinationSubnets | 指定した CIDR 範囲宛てのパケットがキャプチャされます。 配列として指定します。 | [] (すべての IPv4 アドレス) | コンマ区切りの IPV4 サブネットの配列 |
SourcePort | 送信元が、指定した範囲内であるパケットがキャプチャされます。 配列として指定します。 | [] (すべてのポート) | コンマ区切りのポートの配列 |
DestinationPort | 送信先が、指定した範囲内であるパケットがキャプチャされます。 配列として指定します。 | [] (すべてのポート) | コンマ区切りのポートの配列 |
CaptureSingleDirectionTrafficOnly | true の場合、双方向フローのうち一方のみがパケット キャプチャの対象となります。 考えられる IP とポートのすべての組み合わせがキャプチャされます。 | ○ | True、False |
Protocol | IANA プロトコルに対応する整数の配列。 | [] (すべてのプロトコル) | こちらに記載されているすべてのプロトコル |
次の例は、フィルター文字列を使用したパケット キャプチャを示しています。 ニーズに合うようにパラメーターを変更できます。
$filter="{`"TracingFlags`":11,`"MaxPacketBufferSize`":120,`"MaxFileSize`":500,`"Filters`":[{`"SourceSubnets`":[`"10.19.0.4/32`",`"10.20.0.4/32`"],`"DestinationSubnets`":[`"10.20.0.4/32`",`"10.19.0.4/32`"],`"TcpFlags`":9,`"CaptureSingleDirectionTrafficOnly`":true}]}"
Start-AzVpnConnectionPacketCapture -ResourceGroupName $rg -Name "<name of the VPN connection>" -ParentResourceName “<name of the Gateway>” -LinkConnection “<comma separated list of links>” -SasUrl $sasurl -FilterData $filter
Start-AzVpnGatewayPacketCapture -ResourceGroupName $rg -Name "<name of the Gateway>" -FilterData $filter
パケット キャプチャを停止する
パケット キャプチャを停止する前に少なくとも 600 秒間実行することをお勧めします。 パケット キャプチャを停止するときのパラメーターは、「パケット キャプチャを開始する」セクションのパラメーターに似ています。 コマンドでは、SAS URL 値は「ストレージ アカウントを作成する」セクションで生成されました。
SasUrl
パラメーターが正しく構成されていない場合、キャプチャはストレージ エラーで失敗する可能性があります。
パケット キャプチャを停止する準備が整ったら、次のコマンドを実行してください。
Stop-AzVpnGatewayPacketCapture -ResourceGroupName $rg -Name <GatewayName> -SasUrl $sasurl
パケット キャプチャを表示する
このセクションは、パケット キャプチャの PCAP ファイルをダウンロードして表示するために役立ちます。
Azure portal で、作成したストレージ アカウントに移動します。
[コンテナー] を選択すると、ストレージ アカウントのコンテナーが表示されます。
作成したコンテナーを選択します。
フォルダー構造内を移動して、PCAP ファイルを見つけます。 フォルダーの名前と構造は、日付と UTC 時間に基づいています。 PCAP ファイルを見つけたら、 [ダウンロード] を選択します。
パケット キャプチャ データ ファイルは PCAP 形式で生成されます。 PCAP ファイルは、Wireshark または他の一般に利用できるアプリケーションを使用して開くことができます。
次のステップ
次に、Virtual WAN についてさらに学習するには、「Virtual WAN の FAQ」を参照してください。