Gerenciar capturas de pacotes para máquinas virtuais com o Azure Network Watcher usando a CLI do Azure

A ferramenta de captura de pacotes do Inspetor de Rede permite criar sessões de captura para registrar o tráfego de rede de e para uma máquina virtual (VM) do Azure. Os filtros são fornecidos para a sessão de captura para garantir que você capture apenas o tráfego desejado. A captura de pacotes ajuda no diagnóstico de anomalias de rede de forma reativa e proativa. Suas aplicações vão além da deteção de anomalias para incluir a coleta de estatísticas de rede, a aquisição de informações sobre invasões de rede, depuração da comunicação cliente-servidor e abordagem de vários outros desafios de rede. A captura de pacotes do Inspetor de Rede permite iniciar capturas de pacotes remotamente, aliviando a necessidade de execução manual em uma máquina virtual específica.

Neste artigo, você aprenderá a configurar, iniciar, parar, baixar e excluir remotamente uma captura de pacote de máquina virtual usando o Azure PowerShell. Para saber como gerenciar capturas de pacotes usando o portal do Azure ou a CLI do Azure, consulte Gerenciar capturas de pacotes para máquinas virtuais usando o portal do Azure ou Gerenciar capturas de pacotes para máquinas virtuais usando o PowerShell.

Pré-requisitos

  • Uma conta do Azure com uma subscrição ativa. Crie uma conta gratuitamente.

  • Azure Cloud Shell ou CLI do Azure.

    As etapas neste artigo executam os comandos da CLI do Azure interativamente no Azure Cloud Shell. Para executar os comandos no Cloud Shell, selecione Open Cloud Shell no canto superior direito de um bloco de código. Selecione Copiar para copiar o código e cole-o no Cloud Shell para executá-lo. Você também pode executar o Cloud Shell de dentro do portal do Azure.

    Você também pode instalar a CLI do Azure localmente para executar os comandos. Se você executar a CLI do Azure localmente, entre no Azure usando o comando az login .

  • Uma máquina virtual com a seguinte conectividade TCP de saída:

    • para a conta de armazenamento pela porta 443
    • para 169.254.169.254 sobre a porta 80
    • para 168.63.129.16 sobre a porta 8037

Nota

  • O Azure cria uma instância do Inspetor de Rede na região da máquina virtual se o Inspetor de Rede não estiver habilitado para essa região. Para obter mais informações, consulte Habilitar ou desabilitar o Azure Network Watcher.
  • A captura de pacotes do Inspetor de Rede requer que a extensão da VM do agente do Inspetor de Rede seja instalada na máquina virtual de destino. Para obter mais informações, consulte Instalar o agente do Inspetor de Rede.
  • Os dois últimos endereços IP e portas listados nos Pré-requisitos são comuns em todas as ferramentas do Inspetor de Rede que usam o agente do Inspetor de Rede e podem ser alterados ocasionalmente.

Se um grupo de segurança de rede estiver associado à interface de rede ou sub-rede em que a interface de rede se encontra, verifique se existem regras para permitir a conectividade de saída nas portas anteriores. Da mesma forma, garanta a conectividade de saída sobre as portas anteriores ao adicionar rotas definidas pelo usuário à sua rede.

Instalar o agente do Network Watcher

Passo 1

Execute o az vm extension set comando para instalar o agente de captura de pacotes na máquina virtual convidada.

Para máquinas virtuais do Windows:

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

Para máquinas virtuais Linux:

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

Passo 2

Para garantir que o agente esteja instalado, execute o vm extension show comando e passe-lhe o grupo de recursos e o nome da máquina virtual. Verifique a lista resultante para garantir que o agente esteja instalado.

Para máquinas virtuais do Windows:

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

Para máquinas virtuais Linux:

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

O exemplo a seguir é um exemplo da resposta da execução az vm extension show

{
  "autoUpgradeMinorVersion": true,
  "forceUpdateTag": null,
  "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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"
}

Iniciar uma captura de pacotes

Quando as etapas anteriores forem concluídas, o agente de captura de pacotes será instalado na máquina virtual.

Passo 1

Recupere uma conta de armazenamento. Essa conta de armazenamento é usada para armazenar o arquivo de captura de pacote.

az storage account list

Passo 2

Neste ponto, você está pronto para criar uma captura de pacote. Primeiro, vamos examinar os parâmetros que você pode querer configurar. Os filtros são um desses parâmetros que podem ser usados para limitar os dados armazenados pela captura de pacotes. O exemplo a seguir configura uma captura de pacote com vários filtros. Os três primeiros filtros coletam tráfego TCP de saída somente do IP local 10.0.0.3 para as portas de destino 20, 80 e 443. O último filtro recolhe apenas tráfego 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\"}]"

O exemplo a seguir é a saída esperada da execução do az network watcher packet-capture create comando.

{
  "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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/NetworkWatcherRG/providers/Microsoft.Network/networkWatchers/NetworkWatcher_westcentralus/packetCaptures/packetCaptureName",
  "name": "packetCaptureName",
  "provisioningState": "Succeeded",
  "resourceGroup": "NetworkWatcherRG",
  "storageLocation": {
    "filePath": null,
    "storageId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/gwteststorage123abc",
    "storagePath": "https://gwteststorage123abc.blob.core.windows.net/network-watcher-logs/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/{resourceGroupName}/providers/microsoft.compute/virtualmachines/{vmName}/2017/05/25/packetcapture_16_22_34_630.cap"
  },
  "target": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}",
  "timeLimitInSeconds": 18000,
  "totalBytesPerSession": 1073741824
}

Obter uma captura de pacotes

Executando o az network watcher packet-capture show-status comando, recupera o status de uma captura de pacote atualmente em execução ou concluída.

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

O exemplo a seguir é a saída do az network watcher packet-capture show-status comando. O exemplo a seguir é quando a captura é Stopped, com um StopReason de TimeExceeded.

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

Parar uma captura de pacotes

Ao executar o az network watcher packet-capture stop comando, se uma sessão de captura estiver em andamento, ela será interrompida.

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

Nota

O comando não retorna nenhuma resposta quando executado em uma sessão de captura em execução no momento ou em uma sessão existente que já foi interrompida.

Excluir uma captura de pacote

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

Nota

A exclusão de uma captura de pacote não exclui o arquivo na conta de armazenamento.

Baixar uma captura de pacote

Depois que a sessão de captura de pacotes for concluída, o arquivo de captura poderá ser carregado para o armazenamento de blob ou para um arquivo local na VM. O local de armazenamento da captura de pacotes é definido na criação da sessão. Uma ferramenta conveniente para acessar esses arquivos de captura salvos em uma conta de armazenamento é o Gerenciador de Armazenamento do Microsoft Azure, que pode ser baixado aqui: https://storageexplorer.com/

Se uma conta de armazenamento for especificada, os arquivos de captura de pacotes serão salvos em uma conta de armazenamento no seguinte local:

https://{storageAccountName}.blob.core.windows.net/network-watcher-logs/subscriptions/{subscriptionId}/resourcegroups/{storageAccountResourceGroup}/providers/microsoft.compute/virtualmachines/{VMName}/{year}/{month}/{day}/packetCapture_{creationTime}.cap
  • Para saber como automatizar capturas de pacotes com alertas de máquina virtual, consulte Criar uma captura de pacote acionada por alerta.
  • Para determinar se o tráfego específico é permitido dentro ou fora de uma máquina virtual, consulte Diagnosticar um problema de filtro de tráfego de rede de máquina virtual.