Compartilhar via


Gerenciar capturas de pacotes no conjunto de escalonamento de máquinas virtuais com o Azure Network Watcher usando o PowerShell

A captura de pacotes do Network Watcher permite que você crie sessões de captura para acompanhar o tráfego de e para instância(s) de um conjunto de dimensionamento de máquinas virtuais. 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 a diagnosticar anomalias de rede, tanto reativamente quanto proativamente. Outros usos incluem a coleta de estatísticas de rede, a obtenção de informações sobre invasões de rede, a depuração da comunicação cliente-servidor e muito mais. A capacidade de iniciar remotamente a captura de pacotes facilita a tarefa de capturar pacotes manualmente em uma instância desejada de conjunto de dimensionamento de máquinas virtuais, o que economiza tempo valioso.

Este artigo leva você pelas diferentes tarefas de gerenciamento que estão disponíveis no momento para captura de pacotes.

Antes de começar

Este artigo pressupõe que você tenha os seguintes recursos:

  • Uma instância do Observador de Rede na região que você deseja criar uma captura de pacote

Importante

A captura de pacotes exige uma extensão do conjunto de escalonamento de máquinas virtuais AzureNetworkWatcherExtension. Para instalar a extensão em uma VM do Windows, visite extensão de máquina virtual do Agente do Observador de Rede do Azure para Windows e, para a VM linux, visite extensão de máquina virtual do Agente do Observador de Rede do Azure para Linux.

Instalar a extensão do conjunto de dimensionamento de máquinas virtuais

Etapa 1

$vmss = Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"

Etapa 2

Instalar networkWatcherAgent no conjunto de dimensionamento de máquinas virtuais/instância/(s) do conjunto de dimensionamento de máquinas virtuais

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.

Etapa 3

Para garantir que o agente esteja instalado, siga a Etapa 1

Get-AzVMss -ResourceGroupName $vmss.ResourceGroupName  -VMNScaleSetName $vmss.Name

Iniciar uma captura de pacote

Depois que as etapas anteriores forem concluídas, o agente de captura de pacotes é instalado no conjunto de escalas de máquinas virtuais.

Etapa 1

A próxima etapa é recuperar a instância do Observador de Rede. Essa variável é passada para o cmdlet New-AzNetworkWatcherPacketCapture na etapa 4.

$networkWatcher = Get-AzNetworkWatcher  | Where {$_.Location -eq "westcentralus" }

Etapa 2

Recuperar uma conta de armazenamento. Essa conta de armazenamento é usada para armazenar o arquivo de captura de pacotes.

$storageAccount = Get-AzStorageAccount -ResourceGroupName testrg -Name testrgsa123

Etapa 3

Os filtros podem ser usados para limitar os dados armazenados pela captura de pacotes. O exemplo a seguir configura dois filtros. Um filtro coleta o tráfego TCP de saída somente do IP local 10.0.0.3 para as portas de destino 20, 80 e 443. O segundo filtro coleta apenas o tráfego 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

Nota

Vários filtros podem ser definidos para uma captura de pacote.

Etapa 4

Criar escopo para captura de pacotes

$s1 = New-AzPacketCaptureScopeConfig -Include "0", "1"

Etapa 5

Execute o cmdlet New-AzNetworkWatcherPacketCaptureV2 para iniciar o processo de captura de pacotes, passando os valores necessários recuperados nas etapas anteriores.


New-AzNetworkWatcherPacketCaptureV2 -NetworkWatcher $networkwatcher -PacketCaptureName $pcName -TargetId $vmss.Id -TargetType "azurevmss" -StorageAccountId $storageAccount.id -Filter $filter1, $filter2

Obter uma captura de pacote

Executando o cmdlet Get-AzNetworkWatcherPacketCapture, recupera o status de uma captura de pacote atualmente em execução ou concluída.

Get-AzNetworkWatcherPacketCapture -NetworkWatcher $networkWatcher -PacketCaptureName "PacketCaptureTest"

O exemplo a seguir é o resultado do cmdlet Get-AzNetworkWatcherPacketCapture. O exemplo a seguir é após a conclusão da captura. O valor PacketCaptureStatus é Parado, com um StopReason de TempoExcedido. Esse valor mostra que a captura de pacotes foi bem-sucedida e concluiu dentro do tempo.

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      : []

Parar uma captura de pacote

Executando o cmdlet Stop-AzNetworkWatcherPacketCapture, se uma sessão de captura estiver em andamento, ela será interrompida.

Stop-AzNetworkWatcherPacketCapture -NetworkWatcher $networkWatcher -PacketCaptureName "PacketCaptureTest"

Nota

O cmdlet 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

Remove-AzNetworkWatcherPacketCapture -NetworkWatcher $networkWatcher -PacketCaptureName "PacketCaptureTest"

Nota

Excluir 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 no armazenamento de blobs ou em um arquivo local na instância/(s). 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:

Se várias instâncias forem selecionadas

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

Se uma única instância estiver selecionada

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

Próximas etapas

Localize se determinado tráfego é permitido dentro ou fora de sua VM visitando Verificar fluxo de IP verificar