Administración de capturas de paquetes en conjunto de escalado de máquinas virtuales con Azure Network Watcher mediante PowerShell
La captura de paquetes de Network Watcher permite crear sesiones de captura para realizar el seguimiento del tráfico hacia y desde un conjunto de escalado de máquinas virtuales. La sesión de captura cuenta con filtros para asegurarse de capturar solo el tráfico que se desea. La captura de paquetes ayuda a diagnosticar anomalías de la red, tanto de forma activa como reactiva. Otros usos son la recopilación de estadísticas de red, la obtención de información sobre las intrusiones de red y la depuración de las comunicaciones cliente-servidor, entre otros. Esta funcionalidad permite desencadenar capturas de paquetes de forma remota, lo que reduce la carga de tener que ejecutar una captura de paquetes manualmente y en el conjunto de escalado de máquinas virtuales deseado, y permite ahorrar tiempo.
Este artículo le guiará por las diferentes tareas de administración que están actualmente disponibles para la captura de paquetes.
- Inicio de una captura de paquetes
- Detención de una captura de paquetes
- Eliminación de una captura de paquetes
- Descarga de una captura de paquetes
Antes de empezar
En este artículo se da por hecho que tiene los siguientes recursos:
- Una instancia de Network Watcher en la región donde 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, consulte Extensión de máquina virtual del agente de Azure Network Watcher para Windows, y en una máquina virtual con Linux, consulte Extensión de máquina virtual del agente de Azure Network Watcher para Linux.
Instalación de la extensión de 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
Inicio de 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
Recupere una cuenta de almacenamiento. Esta cuenta de almacenamiento se utiliza para almacenar el archivo de captura de paquetes.
$storageAccount = Get-AzStorageAccount -ResourceGroupName testrg -Name testrgsa123
Paso 3
Se pueden usar filtros para limitar los datos que se almacenan en la captura de paquetes. En el ejemplo siguiente se configuran dos filtros. Un filtro recopila el tráfico TCP saliente solo de 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
Cree el á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
Obtención de una captura de paquetes
Al ejecutar el cmdlet Get-AzNetworkWatcherPacketCapture
se recupera el estado de una captura de paquetes que se está ejecutando o se ha completado.
Get-AzNetworkWatcherPacketCapture -NetworkWatcher $networkWatcher -PacketCaptureName "PacketCaptureTest"
El ejemplo siguiente es la salida del cmdlet Get-AzNetworkWatcherPacketCapture
. El ejemplo siguiente es una vez completada la captura. El valor de PacketCaptureStatus es Stopped, con un valor de StopReason de TimeExceeded. Este valor muestra que la captura de paquetes fue correcta y agotó su tiempo.
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 : []
Detención de una captura de paquetes
Al ejecutar el cmdlet Stop-AzNetworkWatcherPacketCapture
, se detiene una sesión de captura si está en curso.
Stop-AzNetworkWatcherPacketCapture -NetworkWatcher $networkWatcher -PacketCaptureName "PacketCaptureTest"
Nota
El cmdlet no devuelve ninguna respuesta cuando se ejecuta en una sesión de captura actualmente en ejecución o en una sesión que ya se ha detenido.
Eliminación de una captura de paquetes
Remove-AzNetworkWatcherPacketCapture -NetworkWatcher $networkWatcher -PacketCaptureName "PacketCaptureTest"
Nota
La eliminación de una captura de paquetes no elimina el archivo en la cuenta de almacenamiento.
Descarga de una captura de paquetes
Una vez finalizada la sesión de captura de paquetes, el archivo de captura se puede cargar en Blob Storage o en un archivo local en la instancia. La ubicación de almacenamiento de la captura de paquetes se define al crear la sesión. Una herramienta práctica para acceder a estos archivos de captura guardados en una cuenta de almacenamiento es el Explorador de Microsoft Azure Storage, que puede descargarse 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 única 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
Para comprobar si se permite cierto tráfico hacia o desde la máquina virtual, vea cómo consultar la Comprobación del flujo de IP