Správa zachytávání paketů pro virtuální počítače pomocí služby Azure Network Watcher pomocí PowerShellu

Nástroj network Watcher pro zachytávání paketů umožňuje vytvářet relace zachytávání, které zaznamenávají síťový provoz do a z virtuálního počítače Azure. Filtry jsou k dispozici pro relaci zachycení, abyste zajistili, že zachytíte jenom požadovaný provoz. Zachytávání paketů pomáhá při diagnostice síťových anomálií reaktivně i proaktivně. Její aplikace přesahují detekci anomálií, aby zahrnovaly shromažďování statistik sítě, získávání přehledů o narušení sítě, ladění komunikace mezi klientem a serverem a řešení různých dalších problémů se sítěmi. Zachytávání paketů služby Network Watcher umožňuje vzdáleně inicializovat zachytávání paketů, které by mohly vyžadovat ruční spuštění na konkrétním virtuálním počítači.

V tomto článku se dozvíte, jak vzdáleně nakonfigurovat, spustit, zastavit, stáhnout a odstranit zachytávání paketů virtuálního počítače pomocí Azure PowerShellu. Informace o správě zachytávání paketů pomocí webu Azure Portal nebo Azure CLI najdete v tématu Správa zachytávání paketů pro virtuální počítače pomocí webu Azure Portal nebo Správa zachytávání paketů pro virtuální počítače pomocí Azure CLI.

Požadavky

  • Účet Azure s aktivním předplatným. Vytvoření účtu zdarma

  • Azure Cloud Shell nebo Azure PowerShell.

    Kroky v tomto článku spouští rutiny Azure PowerShellu interaktivně ve službě Azure Cloud Shell. Pokud chcete příkazy spustit v Cloud Shellu, vyberte Otevřít Cloud Shell v pravém horním rohu bloku kódu. Výběrem možnosti Kopírovat zkopírujte kód a vložte ho do Cloud Shellu a spusťte ho. Cloud Shell můžete spustit také z webu Azure Portal.

    Ke spuštění rutin můžete také nainstalovat Azure PowerShell místně. Tento článek vyžaduje modul Az PowerShell. Další informace najdete v tématu Postup instalace Azure PowerShellu. Nainstalovanou verzi zjistíte spuštěním rutiny Get-InstalledModule -Name Az. Pokud spustíte PowerShell místně, přihlaste se k Azure pomocí rutiny Připojení-AzAccount.

  • Virtuální počítač s následujícím odchozím připojením TCP:

    • na účet úložiště přes port 443
    • na 169.254.169.254 přes port 80
    • na 168.63.129.16 přes port 8037

Poznámka:

  • Azure vytvoří instanci služby Network Watcher v oblasti virtuálního počítače, pokud pro danou oblast nebyla povolená služba Network Watcher. Další informace najdete v tématu Povolení nebo zakázání služby Azure Network Watcher.
  • Zachytávání paketů Network Watcher vyžaduje, aby bylo na cílovém virtuálním počítači nainstalované rozšíření agenta Network Watcher. Další informace najdete v tématu Instalace agenta Network Watcher.
  • Poslední dvě IP adresy a porty uvedené v požadavcích jsou společné pro všechny nástroje Network Watcher, které používají agenta Network Watcher a můžou se občas měnit.

Pokud je skupina zabezpečení sítě přidružená k síťovému rozhraní nebo podsíti, ve které je síťové rozhraní, ujistěte se, že existují pravidla umožňující odchozí připojení přes předchozí porty. Podobně při přidávání tras definovaných uživatelem do sítě zajistěte odchozí připojení přes předchozí porty.

Instalace agenta Network Watcher

Pokud chcete použít zachytávání paketů, musí být na virtuálním počítači nainstalované rozšíření virtuálního počítače agenta Network Watcher.

Pomocí rutiny Get-AzVMExtension zkontrolujte, jestli je rozšíření nainstalované na virtuálním počítači:

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

Pokud je rozšíření nainstalované na virtuálním počítači, můžete ho zobrazit ve výstupu předchozího příkazu:

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

Pokud rozšíření není nainstalované, nainstalujte ho pomocí rutiny Set-AzVMExtension :

# 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 

Po úspěšné instalaci rozšíření se zobrazí následující výstup:

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

Spuštění zachytávání paketů

Pokud chcete spustit relaci zachycení, použijte rutinu New-AzNetworkWatcherPacketCapture :

# 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 

Po spuštění relace zachycení se zobrazí následující výstup:

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

Následující tabulka popisuje volitelné parametry, které můžete použít s rutinou New-AzNetworkWatcherPacketCapture :

Parametr description
-Filter Přidejte filtry, abyste zachytili jenom požadovaný provoz. Můžete například zaznamenat pouze provoz TCP z konkrétní IP adresy na konkrétní port.
-TimeLimitInSeconds Nastavte maximální dobu trvání relace zachycení. Výchozí hodnota je 18000 sekund (5 hodin).
-BytesToCapturePerPacket Nastavte maximální počet bajtů, které se mají zachytávat pro každý paket. Všechny bajty jsou zachyceny, pokud nejsou použity nebo 0 zadané.
-TotalBytesPerSession Nastavte celkový počet zachycených bajtů. Po dosažení hodnoty se zachytávání paketů zastaví. Pokud se nepoužívá, zachytí se až 1 GB (1 073 741 824 bajtů).
-LocalFilePath Zadejte platnou místní cestu k souboru, pokud chcete, aby se zachytávání uložilo do cílového virtuálního počítače (například C:\Capture\myVM_1.cap). Pokud používáte počítač s Linuxem, musí cesta začínat řetězcem /var/captures.

Zastavení zachytávání paketů

K ručnímu zastavení spuštěné relace zachytávání paketů použijte rutinu Stop-AzNetworkWatcherPacketCapture .

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

Poznámka:

Rutina nevrací odpověď, jestli byla spuštěna v aktuálně spuštěné relaci zachycení, nebo v relaci, která už byla zastavena.

Získání zachytávání paketů

K načtení stavu zachytávání paketů (spuštění nebo dokončení) použijte rutinu Get-AzNetworkWatcherPacketCapture .

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

Následující výstup je příkladem výstupu rutiny Get-AzNetworkWatcherPacketCapture . Následující příklad je po dokončení zachycení. Hodnota PacketCaptureStatus je Zastaveno, se StopReason of TimeExceeded. Tato hodnota ukazuje, že zachytávání paketů proběhlo úspěšně a spustilo jeho čas.

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

Poznámka:

Pokud chcete získat další podrobnosti ve výstupu, přidejte | Format-List na konec příkazu.

Stažení zachytávání paketů

Po uzavření relace zachytávání paketů se výsledný soubor zachytávání uloží do úložiště Azure, do místního souboru na cílovém virtuálním počítači nebo do obou. Cíl úložiště pro zachytávání paketů se zadává během jeho vytváření. Další informace naleznete v tématu Spuštění zachytávání paketů.

Pokud je zadaný účet úložiště, uloží se do účtu úložiště zachytávání souborů na následující cestě:

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

Pokud chcete stáhnout soubor zachytávání paketů uložený do úložiště Azure, použijte rutinu Get-AzStorageBlobContent :

# 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'

Poznámka:

Soubor zachytávání můžete také stáhnout z kontejneru účtu úložiště pomocí Průzkumník služby Azure Storage. Průzkumník služby Storage je samostatná aplikace, kterou můžete pohodlně používat pro přístup k datům Azure Storage a práci s daty. Další informace najdete v tématu Začínáme s Průzkumník služby Storage.

Odstranění zachytávání paketů

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

Důležité

Odstranění zachytávání paketů ve službě Network Watcher neodstraní zachytávací soubor z účtu úložiště nebo virtuálního počítače. Pokud už soubor zachytávání nepotřebujete, musíte ho ručně odstranit z účtu úložiště, abyste se vyhnuli poplatkům za úložiště.