次の方法で共有


PowerShell を使用して Azure Network Watcher を使用して仮想マシン スケール セットのパケット キャプチャを管理する

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 の入出トラフィックが許可されているかを確認する