Gérer les captures de paquets dans un groupe de machines virtuelles identiques avec Azure Network Watcher à l’aide de PowerShell
- portail Azure
- 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.
- Démarrer une capture de paquets
- Arrêter la capture de paquets
- Supprimer une capture de paquets
- Télécharger une 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