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.
- Iniciar una captura de paquetes
- Detener una captura de paquetes
- Eliminar una captura de paquetes
- Descargar 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