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


Управление записью пакетов в масштабируемом наборе виртуальных машин с наблюдателем за сетями Azure с помощью PowerShell

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

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

Подготовка к работе

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

  • экземпляр Наблюдателя за сетями в регионе, в котором нужно создать запись пакетов;

Внимание

Для записи пакетов необходимо расширение масштабируемого набора виртуальных машин AzureNetworkWatcherExtension. Информацию об установке расширения для виртуальной машины Windows см. в статье Расширение виртуальной машины агента Наблюдателя за сетями для Windows, а для виртуальной машины Linux — в статье Расширение виртуальной машины агента Наблюдателя за сетями для 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

Далее необходимо извлечь экземпляр Наблюдателя за сетями. Эта переменная передается в командлет 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 указано Stopped, а для параметра 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, который можно скачать по адресу 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-адресов.