Delen via


Pakketopnamen voor virtuele machines beheren met Azure Network Watcher met behulp van PowerShell

Met het network Watcher-hulpprogramma voor pakketopname kunt u capturesessies maken om netwerkverkeer van en naar een virtuele Azure-machine (VM) vast te leggen. Er worden filters opgegeven voor de opnamesessie om ervoor te zorgen dat u alleen het gewenste verkeer vastlegt. Pakketopname helpt bij het diagnosticeren van netwerkafwijkingen zowel reactief als proactief. De toepassingen gaan verder dan anomaliedetectie, waaronder het verzamelen van netwerkstatistieken, het verkrijgen van inzichten in netwerkinbraak, foutopsporing van client-servercommunicatie en het aanpakken van verschillende andere netwerkuitdagingen. Met Network Watcher-pakketopname kunt u pakketopnamen op afstand initiëren, waardoor handmatige uitvoering op een specifieke virtuele machine mogelijk is.

In dit artikel leert u hoe u een pakketopname van een virtuele machine op afstand configureert, start, stopt, downloadt en verwijdert met behulp van Azure PowerShell. Zie Pakketopnamen beheren voor virtuele machines met behulp van Azure Portal of Azure CLI voor meer informatie over het beheren van pakketopnamen met behulp van Azure Portal of Pakketopnamen beheren voor virtuele machines met behulp van de Azure CLI.

Vereisten

  • Een Azure-account met een actief abonnement. Gratis een account maken

  • Azure Cloud Shell of Azure PowerShell.

    Met de stappen in dit artikel worden de Azure PowerShell-cmdlets interactief uitgevoerd in Azure Cloud Shell. Als u de opdrachten in Cloud Shell wilt uitvoeren, selecteert u Cloud Shell openen in de rechterbovenhoek van een codeblok. Selecteer Kopiëren om de code te kopiëren en plak deze in Cloud Shell om deze uit te voeren. U kunt Cloud Shell ook uitvoeren vanuit Azure Portal.

    U kunt Azure PowerShell ook lokaal installeren om de cmdlets uit te voeren. Voor dit artikel is de Az PowerShell-module vereist. Zie Azure PowerShell installeren voor meer informatie. Voer Get-InstalledModule -Name Az uit om te zien welke versie is geïnstalleerd. Als u PowerShell lokaal uitvoert, meldt u zich aan bij Azure met behulp van de cmdlet Verbinding maken-AzAccount.

  • Een virtuele machine met de volgende uitgaande TCP-connectiviteit:

    • naar het opslagaccount via poort 443
    • tot 169.254.169.254 via poort 80
    • tot 168.63.129.16 via poort 8037

Notitie

  • Azure maakt een Network Watcher-exemplaar in de regio van de virtuele machine als Network Watcher niet is ingeschakeld voor die regio. Zie Azure Network Watcher in- of uitschakelen voor meer informatie.
  • Network Watcher-pakketopname vereist dat de VM-extensie van de Network Watcher-agent is geïnstalleerd op de virtuele doelmachine. Zie Network Watcher-agent installeren voor meer informatie.
  • De laatste twee IP-adressen en poorten die worden vermeld in de vereisten , zijn gebruikelijk in alle Network Watcher-hulpprogramma's die gebruikmaken van de Network Watcher-agent en kunnen af en toe worden gewijzigd.

Als een netwerkbeveiligingsgroep is gekoppeld aan de netwerkinterface of het subnet waarin de netwerkinterface zich bevindt, moet u ervoor zorgen dat regels bestaan om uitgaande connectiviteit via de vorige poorten toe te staan. Zorg er ook voor dat uitgaande connectiviteit via de vorige poorten wordt uitgevoerd bij het toevoegen van door de gebruiker gedefinieerde routes aan uw netwerk.

Network Watcher-agent installeren

Als u pakketopname wilt gebruiken, moet de virtuele machine-extensie van de Network Watcher-agent op de virtuele machine worden geïnstalleerd.

Gebruik de cmdlet Get-AzVMExtension om te controleren of de extensie is geïnstalleerd op de virtuele machine:

# List the installed extensions on the virtual machine.
Get-AzVMExtension -VMName 'myVM' -ResourceGroupName 'myResourceGroup' | format-table Name, Publisher, ExtensionType, EnableAutomaticUpgrade 

Als de extensie op de virtuele machine is geïnstalleerd, ziet u deze in de uitvoer van de voorgaande opdracht:

Name                         Publisher                      ExtensionType            EnableAutomaticUpgrade
----                         ---------                      -------------            ----------------------
AzureNetworkWatcherExtension Microsoft.Azure.NetworkWatcher NetworkWatcherAgentLinux                   True

Als de extensie niet is geïnstalleerd, gebruikt u de set-AzVMExtension-cmdlet om deze te installeren:

# Install Network Watcher agent on a Linux virtual machine.
Set-AzVMExtension -Publisher 'Microsoft.Azure.NetworkWatcher' -ExtensionType 'NetworkWatcherAgentLinux' -Name 'AzureNetworkWatcherExtension' -VMName 'myVM' -ResourceGroupName 'myResourceGroup' -TypeHandlerVersion '1.4' -EnableAutomaticUpgrade 1 
# Install Network Watcher agent on a Windows virtual machine.
Set-AzVMExtension -Publisher 'Microsoft.Azure.NetworkWatcher' -ExtensionType 'NetworkWatcherAgentWindows' -Name 'AzureNetworkWatcherExtension' -VMName 'myVM' -ResourceGroupName 'myResourceGroup' -TypeHandlerVersion '1.4' -EnableAutomaticUpgrade 1 

Na een geslaagde installatie van de extensie ziet u de volgende uitvoer:

RequestId IsSuccessStatusCode StatusCode ReasonPhrase
--------- ------------------- ---------- ------------
                         True         OK 

Een pakketopname starten

Gebruik de cmdlet New-AzNetworkWatcherPacketCapture om een capture-sessie te starten:

# Place the virtual machine configuration into a variable.
$vm = Get-AzVM -ResourceGroupName 'myResourceGroup' -Name 'myVM'

# Place the storage account configuration into a variable.
$storageAccount = Get-AzStorageAccount -ResourceGroupName 'myResourceGroup' -Name 'mystorageaccount'

# Start the Network Watcher capture session.
New-AzNetworkWatcherPacketCapture -Location 'eastus' -PacketCaptureName 'myVM_1' -TargetVirtualMachineId $vm.Id  -StorageAccountId $storageAccount.Id 

Zodra de opnamesessie is gestart, ziet u de volgende uitvoer:

ProvisioningState Name   BytesToCapturePerPacket TotalBytesPerSession TimeLimitInSeconds
----------------- ----   ----------------------- -------------------- ------------------
Succeeded         myVM_1 0                       1073741824           18000

In de volgende tabel worden de optionele parameters beschreven die u kunt gebruiken met de New-AzNetworkWatcherPacketCapture cmdlet:

Parameter beschrijving
-Filter Voeg filter(en) toe om alleen het gewenste verkeer vast te leggen. U kunt bijvoorbeeld alleen TCP-verkeer van een specifiek IP-adres naar een specifieke poort vastleggen.
-TimeLimitInSeconds Stel de maximale duur van de opnamesessie in. De standaardwaarde is 18000 seconden (5 uur).
-BytesToCapturePerPacket Stel het maximum aantal bytes in dat per pakket moet worden vastgelegd. Alle bytes worden vastgelegd als ze niet worden gebruikt of 0 zijn ingevoerd.
-TotalBytesPerSession Stel het totale aantal bytes in dat wordt vastgelegd. Zodra de waarde is bereikt, stopt de pakketopname. Maximaal 1 GB (1.073.741.824 bytes) wordt vastgelegd als deze niet wordt gebruikt.
-LocalFilePath Voer een geldig lokaal bestandspad in als u wilt dat de opname wordt opgeslagen op de virtuele doelmachine (bijvoorbeeld C:\Capture\myVM_1.cap). Als u een Linux-computer gebruikt, moet het pad beginnen met /var/captures.

Een pakketopname stoppen

Gebruik de cmdlet Stop-AzNetworkWatcherPacketCapture om handmatig een actieve pakketopnamesessie te stoppen.

# Manually stop a packet capture session.
Stop-AzNetworkWatcherPacketCapture -Location 'eastus' -PacketCaptureName 'myVM_1'

Notitie

De cmdlet retourneert geen antwoord of deze wordt uitgevoerd op een opnamesessie die momenteel wordt uitgevoerd of een sessie die al is gestopt.

Een pakketopname ophalen

Gebruik de cmdlet Get-AzNetworkWatcherPacketCapture om de status van een pakketopname op te halen (uitgevoerd of voltooid).

# Get information, properties, and status of a packet capture.
Get-AzNetworkWatcherPacketCapture -Location 'eastus' -PacketCaptureName 'myVM_1'

De volgende uitvoer is een voorbeeld van de uitvoer van de Get-AzNetworkWatcherPacketCapture cmdlet. Het volgende voorbeeld is nadat de opname is voltooid. De waarde PacketCaptureStatus is gestopt, met een StopReason of TimeExceeded. Deze waarde laat zien dat de pakketopname is geslaagd en de tijd heeft uitgevoerd.

ProvisioningState Name   Target                                                                                                                              BytesToCapturePerPacket TotalBytesPerSession TimeLimitInSeconds
----------------- ----   ------                                                                                                                              ----------------------- -------------------- ------------------
Succeeded         myVM_1 /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM 0                       1073741824           18000

Notitie

Als u meer details in de uitvoer wilt zien, voegt u deze toe | Format-List aan het einde van de opdracht.

Een pakketopname downloaden

Nadat de pakketopnamesessie is afgesloten, wordt het resulterende opnamebestand opgeslagen in Azure Storage, een lokaal bestand op de virtuele doelmachine of beide. De opslagbestemming voor de pakketopname wordt opgegeven tijdens het maken ervan. Zie Een pakketopname starten voor meer informatie.

Als er een opslagaccount is opgegeven, worden bestanden opgeslagen in het opslagaccount op het volgende pad:

https://{storageAccountName}.blob.core.windows.net/network-watcher-logs/subscriptions/{subscriptionId}/resourcegroups/{storageAccountResourceGroup}/providers/microsoft.compute/virtualmachines/{virtualMachineName}/{year}/{month}/{day}/packetcapture_{UTCcreationTime}.cap

Als u een pakketopnamebestand wilt downloaden dat is opgeslagen in Azure Storage, gebruikt u de cmdlet Get-AzStorageBlobContent :

# Download the packet capture file from Azure storage container.
Get-AzStorageBlobContent -Container 'network-watcher-logs' -Blob 'subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/myresourcegroup/providers/microsoft.compute/virtualmachines/myvm/2024/01/25/packetcapture_22_44_54_342.cap' -Destination 'C:\Capture\myVM_1.cap'

Notitie

U kunt het opnamebestand ook downloaden uit de container van het opslagaccount met behulp van Azure Storage Explorer. Storage Explorer is een zelfstandige app die u gemakkelijk kunt gebruiken voor toegang tot En werken met Azure Storage-gegevens. Zie Aan de slag met Storage Explorer voor meer informatie.

Een pakketopname verwijderen

# Remove a packet capture resource.
Remove-AzNetworkWatcherPacketCapture -Location 'eastus' -PacketCaptureName 'myVM_1'

Belangrijk

Als u een pakketopname verwijdert in Network Watcher, wordt het opnamebestand niet verwijderd uit het opslagaccount of de virtuele machine. Als u het capture-bestand niet meer nodig hebt, moet u het handmatig verwijderen uit het opslagaccount om opslagkosten te voorkomen.