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

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

В этой статье вы узнаете, как удаленно настроить, запустить, остановить, скачать и удалить запись пакетов виртуальной машины с помощью Azure PowerShell. Сведения об управлении записью пакетов с помощью портал Azure или Azure CLI см. в статье "Управление записью пакетов для виртуальных машин" с помощью портал Azure или управления записью пакетов для виртуальных машин с помощью Azure CLI.

Необходимые компоненты

  • Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .

  • Azure Cloud Shell или Azure PowerShell.

    Действия, описанные в этой статье, выполняют командлеты Azure PowerShell в интерактивном режиме в Azure Cloud Shell. Чтобы выполнить команды в Cloud Shell, выберите Open Cloud Shell в правом верхнем углу блока кода. Выберите "Копировать", чтобы скопировать код, а затем вставьте его в Cloud Shell, чтобы запустить его. Вы также можете запустить Cloud Shell из портал Azure.

    Вы также можете установить Azure PowerShell локально для выполнения командлетов. Для этой статьи требуется модуль Az PowerShell. Дополнительные сведения см. в статье "Установка Azure PowerShell". Выполните командлет Get-InstalledModule -Name Az, чтобы узнать установленную версию. При локальном запуске PowerShell войдите в Azure с помощью командлета Подключение-AzAccount.

  • Виртуальная машина со следующим исходящим TCP-подключением:

    • в учетную запись хранения через порт 443
    • к адресу 169.254.169.254 через порт 80;
    • к адресу 168.63.129.16 через порт 8037.

Примечание.

  • Azure создает экземпляр Наблюдатель за сетями в регионе виртуальной машины, если Наблюдатель за сетями не был включен для этого региона. Дополнительные сведения см. в статье "Включение или отключение Azure Наблюдатель за сетями".
  • Наблюдатель за сетями сбор пакетов требует установки расширения виртуальной машины агента Наблюдатель за сетями на целевой виртуальной машине. Дополнительные сведения см. в разделе "Установка агента Наблюдатель за сетями".
  • Последние два IP-адреса и порты, перечисленные в предварительных требованиях, являются общими для всех средств Наблюдатель за сетями, использующих агент Наблюдатель за сетями и иногда изменяющихся.

Если группа безопасности сети связана с сетевым интерфейсом или подсетью, в которую находится сетевой интерфейс, убедитесь, что правила существуют, чтобы разрешить исходящее подключение через предыдущие порты. Аналогичным образом убедитесь, что исходящее подключение через предыдущие порты при добавлении определяемых пользователем маршрутов в сеть.

Установка агента Наблюдатель за сетями

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

Используйте командлет Get-AzVMExtension, чтобы проверка, если расширение установлено на виртуальной машине:

# List the installed extensions on the virtual machine.
Get-AzVMExtension -VMName 'myVM' -ResourceGroupName 'myResourceGroup' | format-table Name, Publisher, ExtensionType, EnableAutomaticUpgrade 

Если расширение установлено на виртуальной машине, вы увидите его в выходных данных предыдущей команды:

Name                         Publisher                      ExtensionType            EnableAutomaticUpgrade
----                         ---------                      -------------            ----------------------
AzureNetworkWatcherExtension Microsoft.Azure.NetworkWatcher NetworkWatcherAgentLinux                   True

Если расширение не установлено, используйте командлет Set-AzVMExtension , чтобы установить его:

# Install Network Watcher agent on a Linux virtual machine.
Set-AzVMExtension -Publisher 'Microsoft.Azure.NetworkWatcher' -ExtensionType 'NetworkWatcherAgentLinux' -Name 'AzureNetworkWatcherExtension' -VMName 'myVM' -ResourceGroupName 'myResourceGroup' -TypeHandlerVersion '1.4' -EnableAutomaticUpgrade 1 
# Install Network Watcher agent on a Windows virtual machine.
Set-AzVMExtension -Publisher 'Microsoft.Azure.NetworkWatcher' -ExtensionType 'NetworkWatcherAgentWindows' -Name 'AzureNetworkWatcherExtension' -VMName 'myVM' -ResourceGroupName 'myResourceGroup' -TypeHandlerVersion '1.4' -EnableAutomaticUpgrade 1 

После успешной установки расширения вы увидите следующие выходные данные:

RequestId IsSuccessStatusCode StatusCode ReasonPhrase
--------- ------------------- ---------- ------------
                         True         OK 

Запуск записи пакета

Чтобы запустить сеанс записи, используйте командлет New-AzNetworkWatcherPacketCapture :

# Place the virtual machine configuration into a variable.
$vm = Get-AzVM -ResourceGroupName 'myResourceGroup' -Name 'myVM'

# Place the storage account configuration into a variable.
$storageAccount = Get-AzStorageAccount -ResourceGroupName 'myResourceGroup' -Name 'mystorageaccount'

# Start the Network Watcher capture session.
New-AzNetworkWatcherPacketCapture -Location 'eastus' -PacketCaptureName 'myVM_1' -TargetVirtualMachineId $vm.Id  -StorageAccountId $storageAccount.Id 

После запуска сеанса записи вы увидите следующие выходные данные:

ProvisioningState Name   BytesToCapturePerPacket TotalBytesPerSession TimeLimitInSeconds
----------------- ----   ----------------------- -------------------- ------------------
Succeeded         myVM_1 0                       1073741824           18000

В следующей таблице описаны необязательные параметры, которые можно использовать с командлетом New-AzNetworkWatcherPacketCapture :

Параметр описание
-Filter Добавьте фильтры, чтобы записать только нужный трафик. Например, можно записать только TCP-трафик из определенного IP-адреса в определенный порт.
-TimeLimitInSeconds Задайте максимальную длительность сеанса записи. Значение по умолчанию — 18000 секунд (5 часов).
-BytesToCapturePerPacket Задайте максимальное количество байтов для записи каждого пакета. Все байты записываются, если не используется или не введено 0.
-TotalBytesPerSession Задайте общее количество байтов, которые записываются. После достижения этого значения запись пакетов останавливается. Не более 1 ГБ (1 073 741 824 байта), если он не используется.
-LocalFilePath Введите допустимый путь к локальному файлу, если требуется сохранить запись на целевой виртуальной машине (например, C:\Capture\myVM_1.cap). Если вы используете компьютер Linux, путь должен начинаться с /var/captures.

Прекращение записи пакета

Используйте командлет Stop-AzNetworkWatcherPacketCapture , чтобы вручную остановить сеанс записи пакетов.

# Manually stop a packet capture session.
Stop-AzNetworkWatcherPacketCapture -Location 'eastus' -PacketCaptureName 'myVM_1'

Примечание.

Командлет не возвращает ответ, запущен ли в данный момент сеанс записи или сеанс, который уже остановлен.

Получение записи пакета

Используйте командлет Get-AzNetworkWatcherPacketCapture , чтобы получить состояние записи пакетов (выполняется или завершено).

# Get information, properties, and status of a packet capture.
Get-AzNetworkWatcherPacketCapture -Location 'eastus' -PacketCaptureName 'myVM_1'

Ниже приведен пример выходных данных командлета Get-AzNetworkWatcherPacketCapture . полученных после завершения записи пакетов. В качестве значения параметра PacketCaptureStatus указано Stopped, а для параметра StopReason задано значение TimeExceeded. По этому значению можно понять, что запись пакетов выполнена успешно за требуемое время.

ProvisioningState Name   Target                                                                                                                              BytesToCapturePerPacket TotalBytesPerSession TimeLimitInSeconds
----------------- ----   ------                                                                                                                              ----------------------- -------------------- ------------------
Succeeded         myVM_1 /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM 0                       1073741824           18000

Примечание.

Чтобы получить дополнительные сведения в выходных данных, добавьте | Format-List в конец команды.

Скачивание записи пакета

После завершения сеанса записи пакетов результирующий файл записи сохраняется в хранилище Azure, локальный файл на целевой виртуальной машине или обоих. Место хранения для записи пакетов указывается во время его создания. Дополнительные сведения см. в разделе "Запуск записи пакетов".

Если указана учетная запись хранения, файлы записи сохраняются в учетной записи хранения по следующему пути:

https://{storageAccountName}.blob.core.windows.net/network-watcher-logs/subscriptions/{subscriptionId}/resourcegroups/{storageAccountResourceGroup}/providers/microsoft.compute/virtualmachines/{virtualMachineName}/{year}/{month}/{day}/packetcapture_{UTCcreationTime}.cap

Чтобы скачать файл записи пакетов, сохраненный в хранилище Azure, используйте командлет Get-Az служба хранилища BlobContent:

# Download the packet capture file from Azure storage container.
Get-AzStorageBlobContent -Container 'network-watcher-logs' -Blob 'subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/myresourcegroup/providers/microsoft.compute/virtualmachines/myvm/2024/01/25/packetcapture_22_44_54_342.cap' -Destination 'C:\Capture\myVM_1.cap'

Примечание.

Вы также можете скачать файл записи из контейнера учетной записи хранения с помощью служба хранилища Azure Обозреватель. Обозреватель службы хранилища — это автономное приложение, которое удобно использовать для доступа и работы с данными служба хранилища Azure. Дополнительные сведения см. в статье "Начало работы с Обозреватель службы хранилища".

Удаление записи пакета

# Remove a packet capture resource.
Remove-AzNetworkWatcherPacketCapture -Location 'eastus' -PacketCaptureName 'myVM_1'

Внимание

Удаление записи пакетов в Наблюдатель за сетями не удаляет файл записи из учетной записи хранения или виртуальной машины. Если файл записи больше не нужен, необходимо вручную удалить его из учетной записи хранения, чтобы избежать затрат на хранение.