Поделиться через


Управление захватом пакетов в масштабируемом наборе виртуальных машин с использованием Azure Network Watcher и PowerShell.

Запись пакетов Network Watcher позволяет создавать сеансы захвата для отслеживания трафика в(из) экземпляр(ы) масштабируемого набора виртуальных машин. Фильтры предоставляются для сеанса записи, чтобы обеспечить запись только нужного трафика. Запись пакетов помогает диагностировать аномалии сети как в ответ на проблемы, так и упреждающе. Другие виды использования включают сбор статистики сети, получение информации о сетевых вторжениях, отладку связи между клиентом и сервером и многое другое. Возможность удаленного запуска захвата пакетов упрощает выполнение этой задачи вручную на одном или нескольких экземплярах масштабируемого набора виртуальных машин, что экономит ценное время.

В этой статье описаны различные задачи управления, доступные в настоящее время для записи пакетов.

Перед началом работы

В этой статье предполагается, что у вас есть следующие ресурсы:

  • Экземпляр Network Watcher в регионе, в котором вы хотите создать запись пакетов

Важный

Для захвата пакетов требуется расширение масштабируемого набора виртуальных машин AzureNetworkWatcherExtension. Чтобы установить расширение на виртуальной машине Windows, посетите раздел расширение виртуальной машины агента наблюдателя за сетями Azure для Windows, а для виртуальной машины Linux посетите раздел расширение виртуальной машины агента наблюдателя за сетями Azure для Linux.

Установка расширения масштабируемого набора виртуальных машин

Шаг 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. Эта переменная передается командлету New-AzNetworkWatcherPacketCapture на шаге 4.

$networkWatcher = Get-AzNetworkWatcher  | Where {$_.Location -eq "westcentralus" }

Шаг 2

Восстановление учетной записи хранения. Эта учетная запись хранения используется для хранения файла записи пакетов.

$storageAccount = Get-AzStorageAccount -ResourceGroupName testrg -Name testrgsa123

Шаг 3

Фильтры можно использовать для ограничения данных, хранящихся в записи пакетов. В следующем примере настраивается два фильтра. Один фильтр собирает исходящий TCP-трафик только из локального IP-адреса 10.0.0.3 на конечные порты 20, 80 и 443. Второй фильтр собирает только трафик 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

Заметка

Для записи пакетов можно определить несколько фильтров.

Шаг 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 — остановлено со StopReason «время превышено». Это значение показывает, что запись пакетов прошла успешно и завершилась.

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, который можно скачать здесь: 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