Share via


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

La fonctionnalité de capture des paquets Network Watcher vous permet de créer des sessions de capture afin d’effectuer le suivi du trafic en direction et en provenance d’une ou de plusieurs instances de groupes de machines virtuelles identiques. Les filtres sont fournis pour la session de capture afin de vous garantir que vous capturez uniquement le trafic souhaité. La capture des paquets permet de diagnostiquer des anomalies du réseau de manières proactive et réactive. Elle permet aussi de collecter des statistiques réseau, d’obtenir des informations sur les intrusions, de déboguer des communications client-serveur, et bien plus. La possibilité de déclencher des captures de paquets à distance allège le fardeau de l’exécution manuelle de captures de paquets sur des groupes de machines virtuelles identiques spécifiques, permettant ainsi d’économiser un temps précieux.

Cet article passe en revue les différentes tâches de gestion actuellement disponibles pour la capture de paquets.

Avant de commencer

Cet article part du principe que vous disposez des ressources suivantes :

  • Une instance de Network Watcher dans la région où vous souhaitez créer une capture de paquets.

Important

La capture de paquets requiert une extension de groupe de machines virtuelles identiques AzureNetworkWatcherExtension. Pour installer l’extension sur une machine virtuelle Windows, consultez la page Azure Network Watcher Agent virtual machine extension for Windows (Extension de machine virtuelle d’agent Azure Network Watcher pour Windows). Pour une machine virtuelle Linux, consultez la page Azure Network Watcher Agent virtual machine extension for Linux (Extension de machine virtuelle d’agent Azure Network Watcher pour Linux).

Installer une extension de groupe de machines virtuelles identiques

Étape 1

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

Étape 2

Installer networkWatcherAgent sur un groupe de machines virtuelles identiques/des instances de groupes de machines virtuelles identiques

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 le groupe de machines virtuelles identiques.

Étape 1

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

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

Étape 2

Récupérez un compte de stockage. Ce compte de stockage permet de stocker le fichier de capture de paquets.

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

Étape 3

Des filtres peuvent être utilisés pour limiter les données stockées par la capture des paquets. L’exemple suivant définit 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 second 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

Notes

Plusieurs filtres peuvent être définis pour une même 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 transmettant 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 extrait le statut d’une capture de paquets en cours d’exécution ou terminée.

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

L’exemple suivant présente la sortie de l’applet de commande Get-AzNetworkWatcherPacketCapture. L’exemple suivant est postérieur à la capture. La valeur PacketCaptureStatus est Stopped, et la valeur StopReason est TimeExceeded. Cela indique que la capture de paquets a réussi et s’est correctement exécutée.

Name                    : PacketCaptureTest
Id                      : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/NetworkWatcherRG/providers/Microsoft.Network/networkWatcher
                          s/NetworkWatcher_westcentralus/packetCaptures/PacketCaptureTest
Etag                    : W/"4b9a81ed-dc63-472e-869e-96d7166ccb9b"
ProvisioningState       : Succeeded
Target                  : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testrg/providers/Microsoft.Compute/virtualMachines/testvm1
BytesToCapturePerPacket : 0
TotalBytesPerSession    : 1073741824
TimeLimitInSeconds      : 60
StorageLocation         : {
                            "StorageId": "/subscriptions/00000000-0000-0000-0000-000000000000/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

Lors de l’exécution de l’applet de commande Stop-AzNetworkWatcherPacketCapture, toute session de capture en cours est arrêtée.

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

Notes

L’applet de commande ne retourne aucune réponse lorsqu’elle est exécutée dans une session de capture en cours d’exécution ou dans une session existante déjà arrêtée.

Supprimer une capture de paquets

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

Notes

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 téléchargé vers le stockage d’objets blob ou dans un fichier local sur les groupes de machines virtuelles identiques. L’emplacement de stockage de la capture de paquets est défini lors de la création de la session. L’Explorateur Stockage Microsoft Azure est un outil très pratique pour accéder à ces fichiers de capture enregistrés dans un compte de stockage. Vous pouvez le télécharger 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 instance unique 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

Recherchez si certains types de trafic sont autorisés au sein ou en dehors de votre machine virtuelle en consultant Check IP flow verify (Vérifier les flux IP)