PowerShell を使用して Azure Network Watcher を使用して仮想マシン スケール セットのパケット キャプチャを管理する
- Azure portal で操作する
- PowerShell
Network Watcher パケット キャプチャを使用すると、仮想マシン スケール セット インスタンスとの間のトラフィックを追跡するキャプチャ セッションを作成できます。 キャプチャ セッションにはフィルターが用意されており、必要なトラフィックのみを確実にキャプチャできます。 パケット キャプチャは、ネットワークの異常を、事後対応的にもプロアクティブにも診断するのに役立ちます。 その他の用途としては、ネットワーク統計情報の収集、ネットワーク侵入に関する情報の取得、クライアントとサーバー間の通信のデバッグなどがあります。 パケット キャプチャをリモートでトリガーできるため、目的の仮想マシン スケール セット インスタンスでパケット キャプチャを手動で実行する負担が軽減され、貴重な時間を節約できます。
この記事では、パケット キャプチャに現在使用できるさまざまな管理タスクについて説明します。
- パケット キャプチャ を開始する
- パケット キャプチャ を停止する
- パケット キャプチャ を削除する
- パケット キャプチャ をダウンロードする
開始する前に
この記事では、次のリソースがあることを前提としています。
- パケット キャプチャを作成するリージョン内の Network Watcher のインスタンス
大事な
パケット キャプチャには、仮想マシン スケール セット拡張機能 AzureNetworkWatcherExtension
が必要です。 Windows VM に拡張機能をインストールする場合は、Windows 用の Azure Network Watcher Agent 仮想マシン拡張機能、Linux 用の Azure Network Watcher Agent 仮想マシン拡張機能参照してください。
仮想マシン スケール セット拡張機能をインストールする
手順 1
$vmss = Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"
手順 2
仮想マシン スケール セット/仮想マシン スケール セット インスタンスに NetworkWatcherAgent をインストールする
Add-AzVmssExtension -VirtualMachineScaleSet $vmss -Name "AzureNetworkWatcherExtension" -Publisher "Microsoft.Azure.NetworkWatcher" -Type "NetworkWatcherAgentWindows" -TypeHandlerVersion "1.4" -AutoUpgradeMinorVersion $True
Update-AzVmss -ResourceGroupName "$resourceGroupName" -Name $virtualMachineScaleSetName -VirtualMachineScaleSet $vmss
Update-AzVmssInstance -ResourceGroupName "$resourceGroupName" -VMScaleSetName $vmss.Name -InstanceId 0
> The `Set-AzVMExtension` cmdlet may take several minutes to complete.
手順 3
エージェントがインストールされていることを確認するには、手順 1. に従います。
Get-AzVMss -ResourceGroupName $vmss.ResourceGroupName -VMNScaleSetName $vmss.Name
パケット キャプチャを開始する
上記の手順が完了すると、パケット キャプチャ エージェントが仮想マシン スケール セットにインストールされます。
手順 1
次の手順では、Network Watcher インスタンスを取得します。 この変数は、手順 4 で New-AzNetworkWatcherPacketCapture
コマンドレットに渡されます。
$networkWatcher = Get-AzNetworkWatcher | Where {$_.Location -eq "westcentralus" }
手順 2
ストレージ アカウントを取得します。 このストレージ アカウントは、パケット キャプチャ ファイルを格納するために使用されます。
$storageAccount = Get-AzStorageAccount -ResourceGroupName testrg -Name testrgsa123
手順 3
フィルターを使用して、パケット キャプチャによって格納されるデータを制限できます。 次の例では、2 つのフィルターを設定します。 1 つのフィルターは、ローカル IP 10.0.0.3 から宛先ポート 20、80、443 への送信 TCP トラフィックのみを収集します。 2 番目のフィルターでは、UDP トラフィックのみが収集されます。
$filter1 = New-AzPacketCaptureFilterConfig -Protocol TCP -RemoteIPAddress "1.1.1.1-255.255.255.255" -LocalIPAddress "10.0.0.3" -LocalPort "1-65535" -RemotePort "20;80;443"
$filter2 = New-AzPacketCaptureFilterConfig -Protocol UDP
手記
1 つのパケット キャプチャに対して複数のフィルターを定義できます。
手順 4
パケット キャプチャのスコープを作成する
$s1 = New-AzPacketCaptureScopeConfig -Include "0", "1"
手順 5
New-AzNetworkWatcherPacketCaptureV2
コマンドレットを実行してパケット キャプチャ プロセスを開始し、前の手順で取得した必要な値を渡します。
New-AzNetworkWatcherPacketCaptureV2 -NetworkWatcher $networkwatcher -PacketCaptureName $pcName -TargetId $vmss.Id -TargetType "azurevmss" -StorageAccountId $storageAccount.id -Filter $filter1, $filter2
パケット キャプチャを取得する
Get-AzNetworkWatcherPacketCapture
コマンドレットを実行すると、現在実行中の状態または完了したパケット キャプチャの状態が取得されます。
Get-AzNetworkWatcherPacketCapture -NetworkWatcher $networkWatcher -PacketCaptureName "PacketCaptureTest"
次の例は、Get-AzNetworkWatcherPacketCapture
コマンドレットからの出力です。 次の例は、キャプチャが完了した後です。 PacketCaptureStatus 値は Stoped で、StopReason は TimeExceeded です。 この値は、パケットキャプチャが成功し、所定の時間が完了したことを示します。
Name : PacketCaptureTest
Id : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/NetworkWatcherRG/providers/Microsoft.Network/networkWatcher
s/NetworkWatcher_westcentralus/packetCaptures/PacketCaptureTest
Etag : W/"4b9a81ed-dc63-472e-869e-96d7166ccb9b"
ProvisioningState : Succeeded
Target : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/testrg/providers/Microsoft.Compute/virtualMachines/testvm1
BytesToCapturePerPacket : 0
TotalBytesPerSession : 1073741824
TimeLimitInSeconds : 60
StorageLocation : {
"StorageId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/testrg/providers/Microsoft.Storage/storageA
ccounts/examplestorage",
"StoragePath": "https://examplestorage.blob.core.windows.net/network-watcher-logs/subscriptions/00000000-0000-0000-0000-00000
0000000/resourcegroups/testrg/providers/microsoft.compute/virtualmachines/testvm1/2017/02/01/packetcapture_22_42_48_238.cap"
}
Filters : [
{
"Protocol": "TCP",
"RemoteIPAddress": "1.1.1.1-255.255.255",
"LocalIPAddress": "10.0.0.3",
"LocalPort": "1-65535",
"RemotePort": "20;80;443"
},
{
"Protocol": "UDP",
"RemoteIPAddress": "",
"LocalIPAddress": "",
"LocalPort": "",
"RemotePort": ""
}
]
CaptureStartTime : 2/1/2017 10:43:01 PM
PacketCaptureStatus : Stopped
StopReason : TimeExceeded
PacketCaptureError : []
パケット キャプチャを停止する
Stop-AzNetworkWatcherPacketCapture
コマンドレットを実行すると、キャプチャ セッションが進行中の場合は停止します。
Stop-AzNetworkWatcherPacketCapture -NetworkWatcher $networkWatcher -PacketCaptureName "PacketCaptureTest"
手記
このコマンドレットは、現在実行中のキャプチャ セッションまたは既に停止している既存のセッションで実行された場合、応答を返しません。
パケット キャプチャを削除する
Remove-AzNetworkWatcherPacketCapture -NetworkWatcher $networkWatcher -PacketCaptureName "PacketCaptureTest"
手記
パケット キャプチャを削除しても、ストレージ アカウント内のファイルは削除されません。
パケット キャプチャをダウンロードする
パケット キャプチャ セッションが完了すると、キャプチャ ファイルを BLOB ストレージまたはインスタンス上のローカル ファイルにアップロードできます。 パケット キャプチャの保存場所は、セッションの作成時に定義されます。 ストレージ アカウントに保存されているこれらのキャプチャ ファイルにアクセスするための便利なツールは、Microsoft Azure Storage Explorer です。このツールは、次の場所からダウンロードできます:https://storageexplorer.com/
ストレージ アカウントが指定されている場合、パケット キャプチャ ファイルは次の場所にあるストレージ アカウントに保存されます。
複数のインスタンスが選択されている場合
https://{storageAccountName}.blob.core.windows.net/network-watcher-logs/subscriptions/{subscriptionId}/resourcegroups/{storageAccountResourceGroup}/providers/microsoft.compute/virtualmachinescalesets/{VMSSName}/{year}/{month}/{day}/packetCapture_{creationTime}
単一インスタンスが選択されている場合
https://{storageAccountName}.blob.core.windows.net/network-watcher-logs/subscriptions/{subscriptionId}/resourcegroups/{storageAccountResourceGroup}/providers/microsoft.compute/virtualmachinescalesets/{VMSSName}/virtualMachines/{instance}/{year}/{month}/{day}/packetCapture_{creationTime}.cap
次の手順
IP フローの確認 に移動して、VM の入出トラフィックが許可されているかを確認する