Partager via


Gérer les captures de paquets dans un groupe de machines virtuelles identiques avec Azure Network Watcher à l’aide de PowerShell

La capture de paquets Network Watcher vous permet de créer des sessions de capture pour suivre le trafic vers et depuis une ou plusieurs instances d'un ensemble d'instances de machines virtuelles. Les filtres sont fournis pour la session de capture pour vous assurer que vous capturez uniquement le trafic souhaité. La capture de paquets permet de diagnostiquer les anomalies réseau, de manière réactive et proactive. D’autres utilisations incluent la collecte de statistiques réseau, l’obtention d’informations sur les intrusions réseau, pour déboguer la communication client-serveur, et bien plus encore. La possibilité de déclencher des captures de paquets à distance réduit la charge de devoir exécuter manuellement une capture de paquets sur une ou plusieurs instances de groupe de machines virtuelles identiques souhaitées, ce qui permet de gagner un temps précieux.

Cet article vous guide dans les différentes tâches de gestion actuellement disponibles pour la capture de paquets.

Avant de commencer

Cet article suppose que vous disposez des ressources suivantes :

  • Instance de Network Watcher dans la région que vous souhaitez créer une capture de paquets

Important

La capture de paquets nécessite une extension de groupe de machines virtuelles identiques AzureNetworkWatcherExtension. Pour installer l’extension sur une machine virtuelle Windows, visitez extension de machine virtuelle Azure Network Watcher Agent pour Windows et pour la machine virtuelle Linux, visitez extension de machine virtuelle Azure Network Watcher Agent pour Linux.

Installer l’extension du scale set de machines virtuelles

Étape 1

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

Étape 2

Installer networkWatcherAgent sur un ensemble de machines virtuelles, une instance d'un ensemble de machines virtuelles.

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.

Étape 3

Pour vous assurer que l’agent est installé, suivez l’étape 1

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

Démarrer une capture de paquets

Une fois les étapes précédentes terminées, l’agent de capture de paquets est installé sur l'ensemble de machines virtuelles échelonnable.

Étape 1

L’étape suivante consiste à récupérer l’instance Network Watcher. Cette variable est transmise à l’applet de commande New-AzNetworkWatcherPacketCapture à l’étape 4.

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

Étape 2

Récupérez un compte de stockage. Ce compte de stockage est utilisé pour stocker le fichier de capture de paquets.

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

Étape 3

Les filtres peuvent être utilisés pour limiter les données stockées par la capture de paquets. L’exemple suivant configure deux filtres. Un filtre collecte le trafic TCP sortant uniquement à partir de l’adresse IP locale 10.0.0.3 vers les ports de destination 20, 80 et 443. Le deuxième filtre collecte uniquement le trafic 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

Remarque

Plusieurs filtres peuvent être définis pour une capture de paquets.

Étape 4

Créer une étendue pour la capture de paquets

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

Étape 5

Exécutez l’applet de commande New-AzNetworkWatcherPacketCaptureV2 pour démarrer le processus de capture de paquets, en passant les valeurs requises récupérées dans les étapes précédentes.


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

Obtenir une capture de paquets

L’exécution de l’applet de commande Get-AzNetworkWatcherPacketCapture récupère l’état d’une capture de paquets en cours d’exécution ou terminée.

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

L’exemple suivant est la sortie de l’applet de commande Get-AzNetworkWatcherPacketCapture. L’exemple suivant est une fois la capture terminée. La valeur PacketCaptureStatus est Arrêtée, avec une Raison d'arrêt de Délai dépassé. Cette valeur indique que la capture de paquets a réussi et s'est déroulée dans le temps imparti.

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

Arrêter une capture de paquets

En exécutant l’applet de commande Stop-AzNetworkWatcherPacketCapture, si une session de capture est en cours, elle est arrêtée.

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

Remarque

L’applet de commande ne retourne aucune réponse lors de l’exécution d’une session de capture en cours d’exécution ou d’une session existante qui a déjà été arrêtée.

Supprimer une capture de paquets

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

Note

La suppression d’une capture de paquets ne supprime pas le fichier dans le compte de stockage.

Télécharger une capture de paquets

Une fois votre session de capture de paquets terminée, le fichier de capture peut être chargé dans le stockage d’objets blob ou dans un fichier local sur l’instance/s. L’emplacement de stockage de la capture de paquets est défini lors de la création de la session. Un outil pratique pour accéder à ces fichiers de capture enregistrés dans un compte de stockage est l’Explorateur Stockage Microsoft Azure, qui peut être téléchargé ici : https://storageexplorer.com/

Si un compte de stockage est spécifié, les fichiers de capture de paquets sont enregistrés dans un compte de stockage à l’emplacement suivant :

Si plusieurs instances sont sélectionnées

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

Si une seule instance est sélectionnée

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

Étapes suivantes

Déterminez si certains trafics sont autorisés dans ou hors de votre machine virtuelle en visitant Vérifier la vérification du flux IP