Gestire le acquisizioni di pacchetti con Azure Network Watcher tramite PowerShellManage packet captures with Azure Network Watcher using PowerShell

Il servizio di acquisizione di pacchetti di Network Watcher consente di creare sessioni di acquisizione per registrare il traffico da e verso una macchina virtuale.Network Watcher packet capture allows you to create capture sessions to track traffic to and from a virtual machine. Sono disponibili filtri per la sessione di acquisizione per garantire che venga acquisito solo il traffico desiderato.Filters are provided for the capture session to ensure you capture only the traffic you want. Il servizio di acquisizione di pacchetti consente di individuare eventuali anomalie di rete in modo proattivo e reattivo.Packet capture helps to diagnose network anomalies both reactively and proactively. Altri utilizzi comprendono la raccolta di statistiche di rete, informazioni sulle intrusioni nella rete, debug delle comunicazioni client-server e molto altro ancora.Other uses include gathering network statistics, gaining information on network intrusions, to debug client-server communications and much more. La possibilità di attivare da remoto l'acquisizione di pacchetti evita di dover eseguire manualmente questa operazione sul computer desiderato, consentendo un notevole risparmio di tempo.By being able to remotely trigger packet captures, this capability eases the burden of running a packet capture manually and on the desired machine, which saves valuable time.

Questo articolo illustra le diverse attività di gestione attualmente disponibili per l'acquisizione di pacchetti.This article takes you through the different management tasks that are currently available for packet capture.

Prima di iniziareBefore you begin

Questo articolo presuppone che l'utente disponga delle risorse seguenti:This article assumes you have the following resources:

  • Un'istanza di Network Watcher nell'area in cui creare un'acquisizione di pacchetti.An instance of Network Watcher in the region you want to create a packet capture

  • Una macchina virtuale con l'estensione di acquisizione di pacchetti abilitata.A virtual machine with the packet capture extension enabled.

Importante

L'acquisizione di pacchetti richiede un'estensione macchina virtuale AzureNetworkWatcherExtension.Packet capture requires a virtual machine extension AzureNetworkWatcherExtension. Per installare l'estensione in una VM Windows, vedere Estensione macchina virtuale agente Azure Network Watcher per Windows e per una VM Linux VM vedere Estensione macchina virtuale Azure Network Watcher Agent per Linux.For installing the extension on a Windows VM visit Azure Network Watcher Agent virtual machine extension for Windows and for Linux VM visit Azure Network Watcher Agent virtual machine extension for Linux.

Installare un'estensione macchina virtualeInstall VM extension

Passaggio 1Step 1

$VM = Get-AzureRmVM -ResourceGroupName testrg -Name VM1

Passaggio 2Step 2

Nell'esempio seguente vengono recuperate le informazioni sull'estensione necessarie per eseguire il cmdlet Set-AzureRmVMExtension.The following example retrieves the extension information needed to run the Set-AzureRmVMExtension cmdlet. Il cmdlet installa l'agente di acquisizione di pacchetti sulla macchina virtuale guest.This cmdlet installs the packet capture agent on the guest virtual machine.

Nota

Il completamento del cmdlet Set-AzureRmVMExtension può richiedere alcuni minuti.The Set-AzureRmVMExtension cmdlet may take several minutes to complete.

Per le macchine virtuali Windows:For Windows virtual machines:

$AzureNetworkWatcherExtension = Get-AzureRmVMExtensionImage -Location WestCentralUS -PublisherName Microsoft.Azure.NetworkWatcher -Type NetworkWatcherAgentWindows -Version 1.4.13.0
$ExtensionName = "AzureNetworkWatcherExtension"
Set-AzureRmVMExtension -ResourceGroupName $VM.ResourceGroupName  -Location $VM.Location -VMName $VM.Name -Name $ExtensionName -Publisher $AzureNetworkWatcherExtension.PublisherName -ExtensionType $AzureNetworkWatcherExtension.Type -TypeHandlerVersion $AzureNetworkWatcherExtension.Version.Substring(0,3)

Per le macchine virtuali Linux:For Linux virtual machines:

$AzureNetworkWatcherExtension = Get-AzureRmVMExtensionImage -Location WestCentralUS -PublisherName Microsoft.Azure.NetworkWatcher -Type NetworkWatcherAgentLinux -Version 1.4.13.0
$ExtensionName = "AzureNetworkWatcherExtension"
Set-AzureRmVMExtension -ResourceGroupName $VM.ResourceGroupName  -Location $VM.Location -VMName $VM.Name -Name $ExtensionName -Publisher $AzureNetworkWatcherExtension.PublisherName -ExtensionType $AzureNetworkWatcherExtension.Type -TypeHandlerVersion $AzureNetworkWatcherExtension.Version.Substring(0,3)

L'esempio seguente rappresenta una risposta corretta dopo l'esecuzione del cmdlet Set-AzureRmVMExtension.The following example is a successful response after running the Set-AzureRmVMExtension cmdlet.

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

Passaggio 3Step 3

Per verificare che l'agente sia stato installato, eseguire il cmdlet Get-AzureRmVMExtension e passarlo al nome della macchina virtuale e al nome dell'estensione.To ensure that the agent is installed, run the Get-AzureRmVMExtension cmdlet and pass it the virtual machine name and the extension name.

Get-AzureRmVMExtension -ResourceGroupName $VM.ResourceGroupName  -VMName $VM.Name -Name $ExtensionName

L'esempio seguente riporta una possibile risposta all'esecuzione di Get-AzureRmVMExtension.The following sample is an example of the response from running Get-AzureRmVMExtension

ResourceGroupName       : testrg
VMName                  : testvm1
Name                    : AzureNetworkWatcherExtension
Location                : westcentralus
Etag                    : null
Publisher               : Microsoft.Azure.NetworkWatcher
ExtensionType           : NetworkWatcherAgentWindows
TypeHandlerVersion      : 1.4
Id                      : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testrg/providers/Microsoft.Compute/virtualMachines/testvm1/
                          extensions/AzureNetworkWatcherExtension
PublicSettings          : 
ProtectedSettings       : 
ProvisioningState       : Succeeded
Statuses                : 
SubStatuses             : 
AutoUpgradeMinorVersion : True
ForceUpdateTag          : 

Avviare un'acquisizione di pacchettiStart a packet capture

Dopo aver completato i passaggi precedenti, l'agente di acquisizione di pacchetti è installato nella macchina virtuale.Once the preceding steps are complete, the packet capture agent is installed on the virtual machine.

Passaggio 1Step 1

Il passaggio successivo consente di recuperare l'istanza di Network Watcher.The next step is to retrieve the Network Watcher instance. Questa variabile viene passata al cmdlet New-AzureRmNetworkWatcherPacketCapture nel passaggio 4.This variable is passed to the New-AzureRmNetworkWatcherPacketCapture cmdlet in step 4.

$nw = Get-AzurermResource | Where {$_.ResourceType -eq "Microsoft.Network/networkWatchers" -and $_.Location -eq "WestCentralUS" }
$networkWatcher = Get-AzureRmNetworkWatcher -Name $nw.Name -ResourceGroupName $nw.ResourceGroupName  

Passaggio 2Step 2

Recuperare un account di archiviazione.Retrieve a storage account. L'account di archiviazione viene usato per archiviare il file di acquisizione di pacchetti.This storage account is used to store the packet capture file.

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

Passaggio 3Step 3

È possibile usare i filtri per limitare i dati archiviati dall'acquisizione di pacchetti.Filters can be used to limit the data that is stored by the packet capture. Nell'esempio seguente vengono impostati due filtri.The following example sets up two filters. Un filtro acquisisce il traffico TCP in uscita solo dall'indirizzo IP 10.0.0.3 locale verso le porte di destinazione 20, 80 e 443.One filter collects outgoing TCP traffic only from local IP 10.0.0.3 to destination ports 20, 80 and 443. Il secondo filtro acquisisce solo il traffico UDP.The second filter collects only UDP traffic.

$filter1 = New-AzureRmPacketCaptureFilterConfig -Protocol TCP -RemoteIPAddress "1.1.1.1-255.255.255" -LocalIPAddress "10.0.0.3" -LocalPort "1-65535" -RemotePort "20;80;443"
$filter2 = New-AzureRmPacketCaptureFilterConfig -Protocol UDP

Nota

Per un'acquisizione di pacchetti è possibile definire più filtri.Multiple filters can be defined for a packet capture.

Passaggio 4Step 4

Eseguire il cmdlet New-AzureRmNetworkWatcherPacketCapture per avviare il processo di acquisizione dei pacchetti, passando i valori richiesti recuperati nei passaggi precedenti.Run the New-AzureRmNetworkWatcherPacketCapture cmdlet to start the packet capture process, passing the required values retrieved in the preceding steps.


New-AzureRmNetworkWatcherPacketCapture -NetworkWatcher $networkWatcher -TargetVirtualMachineId $vm.Id -PacketCaptureName "PacketCaptureTest" -StorageAccountId $storageAccount.id -TimeLimitInSeconds 60 -Filter $filter1, $filter2

L'esempio seguente riporta l'output previsto dall'esecuzione del cmdlet New-AzureRmNetworkWatcherPacketCapture.The following example is the expected output from running the New-AzureRmNetworkWatcherPacketCapture cmdlet.

Name                    : PacketCaptureTest
Id                      : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/NetworkWatcherRG/providers/Microsoft.Network/networkWatcher
                          s/NetworkWatcher_westcentralus/packetCaptures/PacketCaptureTest
Etag                    : W/"3bf27278-8251-4651-9546-c7f369855e4e"
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": ""
                            }
                          ]

Ottenere un'acquisizione di pacchettiGet a packet capture

L'esecuzione del cmdlet Get-AzureRmNetworkWatcherPacketCapture consente di recuperare lo stato di un'acquisizione di pacchetti attualmente in esecuzione o completata.Running the Get-AzureRmNetworkWatcherPacketCapture cmdlet, retrieves the status of a currently running, or completed packet capture.

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

L'esempio seguente riporta l'output ottenuto dall'esecuzione del cmdlet Get-AzureRmNetworkWatcherPacketCapture.The following example is the output from the Get-AzureRmNetworkWatcherPacketCapture cmdlet. L'esempio seguente mostra il risultato ottenuto al completamento dell'acquisizione di pacchetti.The following example is after the capture is complete. Il valore PacketCaptureStatus è Stopped, mentre il valore StopReason corrisponde a TimeExceeded.The PacketCaptureStatus value is Stopped, with a StopReason of TimeExceeded. Questo valore indica che l'acquisizione di pacchetti ha avuto esito positivo ed è stata eseguita per il tempo necessario.This value shows that the packet capture was successful and ran its time.

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      : []

Interrompere un'acquisizione di pacchettiStop a packet capture

L'esecuzione del cmdlet Stop-AzureRmNetworkWatcherPacketCapture consente di interrompere un'acquisizione di pacchetti in corso.By running the Stop-AzureRmNetworkWatcherPacketCapture cmdlet, if a capture session is in progress it is stopped.

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

Nota

Il cmdlet non restituisce alcuna risposta se eseguito in una sessione di acquisizione in corso o in una sessione esistente che è già stata interrotta.The cmdlet returns no response when ran on a currently running capture session or an existing session that has already stopped.

Eliminare un'acquisizione di pacchettiDelete a packet capture

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

Nota

L'eliminazione di un'acquisizione di pacchetti non elimina il file nell'account di archiviazione.Deleting a packet capture does not delete the file in the storage account.

Scaricare un'acquisizione di pacchettiDownload a packet capture

Dopo aver completato la sessione di acquisizione di pacchetti, è possibile scaricare il file di acquisizione nell'archiviazione BLOB o in un file locale nella macchina virtuale.Once your packet capture session has completed, the capture file can be uploaded to blob storage or to a local file on the VM. La posizione di archiviazione dell'acquisizione di pacchetti viene definita al momento della creazione della sessione.The storage location of the packet capture is defined at creation of the session. Uno strumento utile per accedere ai file di acquisizione salvati in un account di archiviazione è Esplora archivi di Microsoft Azure, disponibile qui: http://storageexplorer.com/A convenient tool to access these capture files saved to a storage account is Microsoft Azure Storage Explorer, which can be downloaded here: http://storageexplorer.com/

Se viene specificato un account di archiviazione, i file di acquisizione di pacchetti vengono salvati in un account di archiviazione nel percorso seguente:If a storage account is specified, packet capture files are saved to a storage account at the following location:

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

Passaggi successiviNext steps

Per altre informazioni su come automatizzare le acquisizioni di pacchetti tramite gli avvisi della macchina virtuale, leggere l'articolo su come creare un'acquisizione di pacchetti attivata da un avviso.Learn how to automate packet captures with Virtual machine alerts by viewing Create an alert triggered packet capture

Per stabilire se un traffico specificato è consentito all'interno o all'esterno di una macchina virtuale, leggere l'articolo su come controllare la verifica del flusso IP.Find if certain traffic is allowed in orr out of your VM by visiting Check IP flow verify