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

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

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

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

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

  • Azure Cloud Shell или Azure CLI

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

    Вы также можете установить Azure CLI локально для выполнения команд. При локальном запуске Azure CLI войдите в Azure с помощью команды az login .

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

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

Примечание.

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

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

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

Шаг 1

Выполните команду az vm extension set, чтобы установить агент сбора пакетов на гостевой виртуальной машине.

Для виртуальных машин Windows:

az vm extension set --resource-group resourceGroupName --vm-name virtualMachineName --publisher Microsoft.Azure.NetworkWatcher --name NetworkWatcherAgentWindows --version 1.4

Для виртуальных машин Linux:

az vm extension set --resource-group resourceGroupName --vm-name virtualMachineName --publisher Microsoft.Azure.NetworkWatcher --name NetworkWatcherAgentLinux --version 1.4

Шаг 2

Чтобы убедиться, что агент установлен, выполните команду vm extension show и передайте ей имя группы ресурсов и виртуальной машины. Проверьте итоговый список, чтобы убедиться, что агент установлен.

Для виртуальных машин Windows:

az vm extension show --resource-group resourceGroupName --vm-name virtualMachineName --name NetworkWatcherAgentWindows

Для виртуальных машин Linux:

az vm extension show --resource-group resourceGroupName --vm-name virtualMachineName --name AzureNetworkWatcherExtension

Ниже приведен пример ответа после выполнения операции az vm extension show.

{
  "autoUpgradeMinorVersion": true,
  "forceUpdateTag": null,
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/extensions/NetworkWatcherAgentWindows",
  "instanceView": null,
  "location": "westcentralus",
  "name": "NetworkWatcherAgentWindows",
  "protectedSettings": null,
  "provisioningState": "Succeeded",
  "publisher": "Microsoft.Azure.NetworkWatcher",
  "resourceGroup": "{resourceGroupName}",
  "settings": null,
  "tags": null,
  "type": "Microsoft.Compute/virtualMachines/extensions",
  "typeHandlerVersion": "1.4",
  "virtualMachineExtensionType": "NetworkWatcherAgentWindows"
}

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

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

Шаг 1

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

az storage account list

Шаг 2

На этом этапе вы готовы создать операцию сбора пакетов. Сначала рассмотрим параметры, которые можно настроить. Фильтры — это один из таких параметров, которые можно использовать для ограничения объема данных, сохраняемых при сборе пакетов. В следующем примере настраивается сбор пакетов с несколькими фильтрами. Первые три фильтра собирают исходящий TCP-трафик только с локального IP-адреса 10.0.0.3 на порты назначения 20, 80 и 443. Последний фильтр собирает только трафик, передаваемый по протоколу UDP.

az network watcher packet-capture create --resource-group {resourceGroupName} --vm {vmName} --name packetCaptureName --storage-account {storageAccountName} --filters "[{\"protocol\":\"TCP\", \"remoteIPAddress\":\"1.1.1.1-255.255.255.255\",\"localIPAddress\":\"10.0.0.3\", \"remotePort\":\"20\"},{\"protocol\":\"TCP\", \"remoteIPAddress\":\"1.1.1.1-255.255.255.255\",\"localIPAddress\":\"10.0.0.3\", \"remotePort\":\"80\"},{\"protocol\":\"TCP\", \"remoteIPAddress\":\"1.1.1.1-255.255.255.255\",\"localIPAddress\":\"10.0.0.3\", \"remotePort\":\"443\"},{\"protocol\":\"UDP\"}]"

Ниже приведен пример ожидаемого результата выполнения команды az network watcher packet-capture create.

{
  "bytesToCapturePerPacket": 0,
  "etag": "W/\"b8cf3528-2e14-45cb-a7f3-5712ffb687ac\"",
  "filters": [
    {
      "localIpAddress": "10.0.0.3",
      "localPort": "",
      "protocol": "TCP",
      "remoteIpAddress": "1.1.1.1-255.255.255.255",
      "remotePort": "20"
    },
    {
      "localIpAddress": "10.0.0.3",
      "localPort": "",
      "protocol": "TCP",
      "remoteIpAddress": "1.1.1.1-255.255.255.255",
      "remotePort": "80"
    },
    {
      "localIpAddress": "10.0.0.3",
      "localPort": "",
      "protocol": "TCP",
      "remoteIpAddress": "1.1.1.1-255.255.255.255",
      "remotePort": "443"
    },
    {
      "localIpAddress": "",
      "localPort": "",
      "protocol": "UDP",
      "remoteIpAddress": "",
      "remotePort": ""
    }
  ],
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/NetworkWatcherRG/providers/Microsoft.Network/networkWatchers/NetworkWatcher_westcentralus/pa
cketCaptures/packetCaptureName",
  "name": "packetCaptureName",
  "provisioningState": "Succeeded",
  "resourceGroup": "NetworkWatcherRG",
  "storageLocation": {
    "filePath": null,
    "storageId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/gwteststorage123abc",
    "storagePath": "https://gwteststorage123abc.blob.core.windows.net/network-watcher-logs/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/{resourceGroupName}/p
roviders/microsoft.compute/virtualmachines/{vmName}/2017/05/25/packetcapture_16_22_34_630.cap"
  },
  "target": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}",
  "timeLimitInSeconds": 18000,
  "totalBytesPerSession": 1073741824
}

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

При выполнении команды az network watcher packet-capture show-status вы получаете сведения о состоянии выполняющегося или завершенного сбора пакетов.

az network watcher packet-capture show-status --name packetCaptureName --location {networkWatcherLocation}

Ниже приведен пример выходных данных команды az network watcher packet-capture show-status. Следующий пример можно получить, когда для остановки указано значение Stopped, а для параметра StopReason задано значение TimeExceeded.

{
  "additionalProperties": {
    "status": "Succeeded"
  },
  "captureStartTime": "2016-12-06T17:20:01.5671279Z",
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/NetworkWatcherRG/providers/Microsoft.Network/networkWatchers/NetworkWatcher_westcentralus/packetCaptures/packetCaptureName",
  "name": "packetCaptureName",
  "packetCaptureError": [],
  "packetCaptureStatus": "Stopped",
  "stopReason": "TimeExceeded"
}

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

Если выполнить команду az network watcher packet-capture stop во время сбора пакетов, он будет остановлен.

az network watcher packet-capture stop --name packetCaptureName --location westcentralus

Примечание.

При выполнении во время текущего сеанса сбора или в имеющемся остановленном сеансе команда не возвратит ответ.

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

az network watcher packet-capture delete --name packetCaptureName --location westcentralus

Примечание.

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

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

После завершения сеанса записи пакета файл записи можно передать в хранилище BLOB-объектов или в локальный файл на виртуальной машине. Место хранения записи пакетов определяется при создании сеанса. Удобное средство для доступа к этим файлам записи, сохраненным в учетной записи хранения, — обозреватель службы хранилища Microsoft Azure, который можно скачать по адресу https://storageexplorer.com/

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

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