Compartir vía


Gestionar capturas de paquetes en un conjunto de máquinas virtuales escalables con Azure Network Watcher mediante PowerShell.

La captura de paquetes de Network Watcher permite crear sesiones de captura para realizar un seguimiento del tráfico hacia y desde una o más instancias de un conjunto de escalado de máquinas virtuales. Los filtros se proporcionan para la sesión de captura para asegurarse de capturar solo el tráfico que desee. La captura de paquetes ayuda a diagnosticar anomalías de red, tanto de forma reactiva como proactiva. Otros usos incluyen la recopilación de estadísticas de red, la obtención de información sobre intrusiones de red, la depuración de la comunicación de cliente-servidor y mucho más. La posibilidad de desencadenar capturas de paquetes de forma remota facilita la carga de ejecutar manualmente una captura de paquetes en una instancia de conjunto de escalado de máquinas virtuales deseada, lo que ahorra un tiempo valioso.

Este artículo le lleva a través de las diferentes tareas de administración que están disponibles actualmente para la captura de paquetes.

Antes de empezar

En este artículo se supone que tiene los siguientes recursos:

  • Una instancia de Network Watcher en la región en la que desea crear una captura de paquetes

Importante

La captura de paquetes requiere una extensión de conjunto de escalado de máquinas virtuales AzureNetworkWatcherExtension. Para instalar la extensión en una máquina virtual Windows, visite extensión de máquina virtual del agente de Azure Network Watcher para Windows y para máquinas virtuales Linux, visite extensión de máquina virtual del agente de Azure Network Watcher para Linux.

Instalar la extensión del conjunto de escalado de máquinas virtuales

Paso 1

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

Paso 2

Instalación de networkWatcherAgent en un conjunto de escalado de máquinas virtuales o instancias de conjuntos de escalado de máquinas virtuales

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.

Paso 3

Para asegurarse de que el agente está instalado, siga el paso 1.

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

Iniciar una captura de paquetes

Una vez completados los pasos anteriores, el agente de captura de paquetes se instala en el conjunto de escalado de máquinas virtuales.

Paso 1

El siguiente paso es recuperar la instancia de Network Watcher. Esta variable se pasa al cmdlet New-AzNetworkWatcherPacketCapture en el paso 4.

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

Paso 2

Recuperar una cuenta de almacenamiento. Esta cuenta de almacenamiento se usa para almacenar el archivo de captura de paquetes.

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

Paso 3

Los filtros se pueden usar para limitar los datos almacenados por la captura de paquetes. En el ejemplo siguiente se configuran dos filtros. Un filtro recopila el tráfico TCP saliente solo desde la dirección IP local 10.0.0.3 a los puertos de destino 20, 80 y 443. El segundo filtro recopila solo el tráfico 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

Se pueden definir varios filtros para una captura de paquetes.

Paso 4

Crear ámbito para la captura de paquetes

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

Paso 5

Ejecute el cmdlet New-AzNetworkWatcherPacketCaptureV2 para iniciar el proceso de captura de paquetes, pasando los valores necesarios recuperados en los pasos anteriores.


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

Obtener una captura de paquetes

Al ejecutar el cmdlet Get-AzNetworkWatcherPacketCapture, se recupera el estado de una captura de paquetes completada o en ejecución actualmente.

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

En el ejemplo siguiente se muestra la salida del cmdlet Get-AzNetworkWatcherPacketCapture. El ejemplo siguiente es una vez completada la captura. El valor PacketCaptureStatus es Parado, con un StopReason de TimeExceeded. Este valor muestra que la captura de paquetes se realizó correctamente y se completó en el tiempo previsto.

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

Detener una captura de paquetes

Al ejecutar el cmdlet Stop-AzNetworkWatcherPacketCapture, si una sesión de captura está en curso, se detiene.

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

Nota

El cmdlet no devuelve ninguna respuesta cuando se ejecuta en una sesión de captura que se está ejecutando actualmente o en una sesión existente que ya se ha detenido.

Eliminación de una captura de paquetes

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

Nota

Al eliminar una captura de paquetes no se elimina el archivo de la cuenta de almacenamiento.

Descarga de una captura de paquetes

Una vez completada la sesión de captura de paquetes, el archivo de captura se puede cargar en el almacenamiento de blobs o en un archivo local en la(s) instancia(s). La ubicación de almacenamiento de la captura de paquetes se define al crear la sesión. Una herramienta cómoda para acceder a estos archivos de captura guardados en una cuenta de almacenamiento es el Explorador de Microsoft Azure Storage, que se puede descargar aquí: https://storageexplorer.com/

Si se especifica una cuenta de almacenamiento, los archivos de captura de paquetes se guardan en una cuenta de almacenamiento en la siguiente ubicación:

Si se seleccionan varias instancias

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

Si se selecciona una sola instancia

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

Pasos siguientes

Busque si se permite cierto tráfico dentro o fuera de la máquina virtual; para ello, visite Comprobación del flujo de IP