Verwalten von Paketerfassungen für virtuelle Computer mit Azure Network Watcher über PowerShell

Mit dem Tool zum Erfassen von Netzwerküberwachungspaketen können Sie Aufzeichnungssitzungen erstellen, um Netzwerkdatenverkehr zu und von einem virtuellen Azure-Computer (VM) aufzuzeichnen. Für die Erfassungssitzung werden Filter bereitgestellt, um sicherzustellen, dass nur der gewünschte Datenverkehr erfasst wird. Mithilfe der Paketerfassung können Sie Netzwerkanomalien sowohl reaktiv als auch proaktiv diagnostizieren. Seine Anwendungen erweitern sich über die Anomalieerkennung hinaus, um Netzwerkstatistiken zu sammeln, Einblicke in Netzwerkangriffe zu erhalten, Clientserverkommunikation zu debuggen und verschiedene andere Netzwerkprobleme zu bewältigen. Mit der Network Watcher-Paketerfassung können Sie Paketerfassungen remote initiieren und die Notwendigkeit der manuellen Ausführung auf einem bestimmten virtuellen Computer lösen.

In diesem Artikel erfahren Sie, wie Sie mithilfe von Azure PowerShell eine VM-Paketerfassung remote konfigurieren, starten, beenden, herunterladen und löschen können. Informationen zum Verwalten von Paketerfassungen mithilfe vom Azure-Portal oder Azure CLI finden Sie unter Verwalten von Paketerfassungen für virtuelle Computer mithilfe des Azure-Portals oder Verwalten von Paketerfassungen für virtuelle Computer mithilfe der Azure CLI.

Voraussetzungen

  • Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.

  • Azure Cloud Shell oder Azure PowerShell.

    Die Schritte in diesem Artikel führen die Azure PowerShell Cmdlets interaktiv in Azure Cloud Shell aus. Um die Befehle in Cloud Shell auszuführen, wählen Sie in der oberen rechten Ecke eines Codeblocks Cloud Shell öffnen aus. Wählen Sie Kopieren aus, um den Code zu kopieren und fügen Sie ihn in Cloud Shell ein, um ihn auszuführen. Sie können Azure Cloud Shell innerhalb des Azure-Portals starten.

    Sie können Azure PowerShell auch lokal installieren, um die Cmdlets auszuführen. Für diesen Artikel ist das Az PowerShell-Modul erforderlich. Weitere Informationen finden Sie unter Installieren von Azure PowerShell. Führen Sie Get-InstalledModule -Name Az aus, um die installierte Version zu ermitteln. Melden Sie sich bei Azure mit dem Cmdlet Connect-AzAccount an, wenn Sie PowerShell lokal ausführen.

  • Ein virtueller Computer mit der folgenden ausgehenden TCP-Verbindung:

    • zum Speicherkonto über Port 443
    • mit 169.254.169.254 über Port 80
    • mit 168.63.129.16 über Port 8037

Hinweis

  • Azure erstellt eine Network Watcher-Instanz in der Region des virtuellen Computers, wenn die Netzwerküberwachung für diese Region nicht aktiviert war. Weitere Informationen finden Sie unter Aktivieren oder Deaktivieren von Azure Network Watcher.
  • Für die Netzwerküberwachungspaketerfassung muss die VM-Erweiterung des Network Watcher-Agents auf dem virtuellen Zielcomputer installiert werden. Weitere Informationen finden Sie unter Installieren des Network Watcher-Agents.
  • Die letzten beiden IP-Adressen und Ports, die in den Voraussetzungen aufgeführt sind, sind in allen Netzwerküberwachungstools gemeinsam, die den Network Watcher-Agent verwenden und sich gelegentlich ändern können.

Wenn eine Netzwerksicherheitsgruppe der Netzwerkschnittstelle oder einem Subnetz, in dem sich die Netzwerkschnittstelle befindet, zugeordnet ist, stellen Sie sicher, dass Regeln definiert sind, um ausgehende Verbindungen über die oben genannten Ports zuzulassen. Stellen Sie ebenso die ausgehende Konnektivität über die vorherigen Ports sicher, wenn Sie Ihrem Netzwerk benutzerdefinierte Routen hinzufügen.

Installieren des Network Watcher-Agents

Um die Paketerfassung zu verwenden, muss die VM-Erweiterung für den Azure Network Watcher-Agent auf der VM installiert sein.

Verwenden Sie das Cmdlet Get-AzVMExtension, um zu überprüfen, ob die Erweiterung auf der VM installiert ist:

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

Wenn die Erweiterung auf der VM installiert ist, ist sie in der Ausgabe des vorherigen Befehls aufgelistet:

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

Wenn die Erweiterung nicht installiert ist, verwenden Sie das Cmdlet Set-AzVMExtension, um sie zu installieren:

# 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 

Nach einer erfolgreichen Installation der Erweiterung wird die folgende Ausgabe angezeigt:

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

Starten einer Paketerfassung

Verwenden Sie das Cmdlet New-AzNetworkWatcherPacketCapture, um eine Erfassungssitzung zu 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 

Nachdem die Erfassungssitzung gestartet wurde, wird die folgende Ausgabe angezeigt:

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

In der folgenden Tabelle sind die optionalen Parameter beschrieben, die mit dem Cmdlet New-AzNetworkWatcherPacketCapture verwendet werden können:

Parameter Beschreibung
-Filter Fügen Sie Filter hinzu, um nur den gewünschten Datenverkehr zu erfassen. Beispielsweise können Sie nur TCP-Datenverkehr von einer bestimmten IP-Adresse an einen bestimmten Port erfassen.
-TimeLimitInSeconds Legen Sie die maximale Dauer der Erfassungssitzung fest. Der Standardwert ist 18 000 Sekunden (5 Stunden).
-BytesToCapturePerPacket Legen Sie die maximale Anzahl von Bytes fest, die pro Paket erfasst werden sollen. Wenn kein Wert oder 0 eingegeben wird, werden alle Bytes erfasst.
-TotalBytesPerSession Legen Sie die Gesamtzahl der erfassten Bytes fest. Wenn dieser Wert erreicht wird, wird die Paketerfassung beendet. Wenn kein Wert angegeben ist, werden bis zu 1 GB (1.073.741.824 Bytes) erfasst.
-LocalFilePath Geben Sie einen gültigen lokalen Dateipfad ein, wenn die Erfassung auf dem virtuellen Zielcomputer gespeichert werden soll (z. B. C:\Capture\myVM_1.cap). Bei einem Linux-Computer muss der Pfad mit /var/captures beginnen.

Beenden einer Paketerfassung

Verwenden Sie das Cmdlet Stop-AzNetworkWatcherPacketCapture, um eine ausgeführte Paketerfassungssitzung manuell zu beenden.

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

Hinweis

Das Cmdlet gibt keine Antwort zurück, wenn es für eine aktuell ausgeführte Erfassungssitzung oder eine vorhandene Sitzung ausgeführt wird, die bereits beendet wurde.

Abrufen einer Paketerfassung

Verwenden Sie das Cmdlet Get-AzNetworkWatcherPacketCapture, um den Status einer Paketerfassung abzurufen (laufend oder abgeschlossen).

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

Die folgende Ausgabe ist ein Beispiel für die Ausgabe des Cmdlets Get-AzNetworkWatcherPacketCapture. Im folgenden Beispiel ist die Erfassung abgeschlossen. Der PacketCaptureStatus-Wert lautet „Stopped“ mit dem StopReason „TimeExceeded“. Dieser Wert zeigt, dass die Paketerfassung erfolgreich war und über den dafür festgelegten Zeitraum ausgeführt wurde.

ProvisioningState Name   Target                                                                                                                              BytesToCapturePerPacket TotalBytesPerSession TimeLimitInSeconds
----------------- ----   ------                                                                                                                              ----------------------- -------------------- ------------------
Succeeded         myVM_1 /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM 0                       1073741824           18000

Hinweis

Um weitere Details in der Ausgabe zu erhalten, fügen Sie | Format-List am Ende des Befehls hinzu.

Herunterladen einer Paketerfassung

Nach Abschluss der Paketerfassungssitzung wird die resultierende Aufnahmedatei im Azure-Speicher, als lokale Datei auf dem virtuellen Zielcomputer oder an beiden Orten gespeichert. Das Speicherziel für die Paketerfassung wird während der Erstellung angegeben. Weitere Informationen finden Sie unter Starten einer Paketerfassung.

Wenn ein Speicherkonto angegeben wird, werden Erfassungsdateien im Speicherkonto unter dem Pfad gespeichert:

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

Verwenden Sie das Cmdlet Get-AzStorageBlobContent, um eine Paketerfassungsdatei herunterzuladen, die in Azure Storage gespeichert ist:

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

Hinweis

Mithilfe des Azure Storage-Explorers können Sie die Erfassungsdatei auch aus dem Speicherkontocontainer herunterladen. Storage-Explorer ist eine eigenständige App, mit der Sie bequem auf Azure Storage-Daten zugreifen und diese verwenden können. Weitere Informationen finden Sie unter Erste Schritte mit dem Storage-Explorer.

Löschen einer Paketerfassung

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

Wichtig

Das Löschen einer Paketerfassung in Network Watcher löscht die Aufnahmedatei nicht aus dem Speicherkonto oder dem virtuellen Computer. Wenn Sie die Aufnahmedatei nicht mehr benötigen, müssen Sie sie manuell aus dem Speicherkonto löschen, um Speicherkosten zu vermeiden.