Share via


Gerenciar capturas de pacotes em máquinas virtuais com o Observador de Rede do Azure usando a CLI do Azure

A ferramenta de captura de pacotes do Observador de Rede permite que você crie sessões de captura para registrar o tráfego de rede de e para uma VM (máquina virtual) do Azure. Os filtros são fornecidos para a sessão de captura garantir que somente o tráfego que você deseja capturar. A captura de pacotes ajuda a diagnosticar problemas de rede de maneiras reativas e proativas. As aplicações dela vão além da detecção de anomalias para incluir a coleta de estatísticas de rede, a aquisição de insights sobre invasões de rede, a depuração da comunicação cliente-servidor e a resolução de vários outros desafios de rede. A captura de pacotes do Observador de Rede permite que você inicie capturas de pacote 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 pacotes 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 em máquinas virtuais usando o PowerShell.

Pré-requisitos

  • Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.

  • Azure Cloud Shell ou CLI do Azure.

    As etapas desse artigo executam os comandos da CLI do Azure interativamente no Azure Cloud Shell. Para executar os comandos no Cloud Shell, selecione Abrir o Cloud Shell no canto superior direito de um bloco de código. Selecione Copiar para copiar o código e colá-lo no Cloud Shell para executá-lo. Você também pode executar o Cloud Shell no 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 na porta 80
    • para 168.63.129.16 na porta 8037

Observação

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

Se um grupo de segurança de rede estiver associado ao adaptador de rede ou à sub-rede na qual o adaptador de rede está, verifique se de existem regras que permitem a conectividade de saída nas portas anteriores. Da mesma forma, verifique a conectividade de saída nas portas anteriores ao adicionar rotas definidas pelo usuário à rede.

Habilitar o agente do Observador de Rede

Etapa 1

Execute o az vm extension set comando para instalar o agente de captura de pacote 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

Etapa 2

Para garantir que o agente está instalado, execute o vm extension show comando e passe o nome de máquina virtual e o grupo de recursos. Verifique a lista resultante para garantir que o agente está 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 de resposta de execuçãoaz 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"
}

Iniciar uma captura de pacotes

Depois que as etapas anteriores forem concluídas, o agente de captura de pacote está instalado na máquina virtual.

Etapa 1

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

az storage account list

Etapa 2

Neste ponto, você está pronto para criar uma captura de pacote. Primeiro, vamos examinar os parâmetros que talvez você queira 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 de saída TCP apenas de IP local 10.0.0.3 para portas de destino de 20, 80 e 443. O último filtro coleta apenas o 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 ao executar o 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/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
}

Obter uma captura de pacote

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

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

O exemplo a seguir mostra a saída JSON do az network watcher packet-capture show-status comando. O exemplo a seguir ilustra o momento em que a captura é Stopped, com um StopReason de 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"
}

Parar uma captura de pacotes

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

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

Observação

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 pacotes

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

Observação

Excluir uma captura de pacotes não exclui o arquivo na conta de armazenamento.

Baixar um pacote de capturas

Quando a sessão de captura de pacote for concluído, o arquivo de captura pode ser carregado no Armazenamento de Blobs ou em 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 pacote 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