Gestire le acquisizioni di pacchetti nel set di scalabilità di macchine virtuali con Azure Network Watcher usando PowerShell
- del portale di Azure
- PowerShell
L'acquisizione di pacchetti network Watcher consente di creare sessioni di acquisizione per tenere traccia del traffico da e verso un'istanza/i del set di scalabilità di macchine virtuali. I filtri vengono forniti per la sessione di acquisizione per assicurarsi di acquisire solo il traffico desiderato. L'acquisizione di pacchetti consente di diagnosticare le anomalie di rete, sia in modo reattivo che proattivo. Altri usi includono la raccolta di statistiche di rete, l'acquisizione di informazioni sulle intrusioni di rete, il debug delle comunicazioni client-server e molto altro ancora. Essere in grado di attivare in remoto le catture di pacchetti semplifica il compito di eseguire manualmente una cattura di pacchetti su una o più istanze del set di scalabilità di macchine virtuali desiderato, risparmiando tempo prezioso.
Questo articolo illustra le diverse attività di gestione attualmente disponibili per l'acquisizione di pacchetti.
- Avviare un'acquisizione di pacchetti
- Arrestare un'acquisizione di pacchetti
- Eliminare la cattura di pacchetti
- Scaricare un'acquisizione di pacchetti
Prima di iniziare
Questo articolo presuppone che siano disponibili le risorse seguenti:
- Istanza di Network Watcher nell'area in cui si vuole creare un'acquisizione di pacchetti
Importante
L'acquisizione di pacchetti richiede un'estensione del set di scalabilità per macchine virtuali AzureNetworkWatcherExtension
. Per installare l'estensione in una macchina virtuale Windows, visitare 'estensione macchina virtuale dell'agente Network Watcher di Azure per Windows e per la macchina virtuale Linux visitare 'estensione macchina virtuale dell'agente Network Watcher di Azure per Linux.
Installare l'estensione del set di scalabilità di macchine virtuali
Passaggio 1
$vmss = Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"
Passaggio 2
Installare networkWatcherAgent sul set di scalabilità di macchine virtuali/sulle istanze del set di scalabilità di macchine virtuali
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.
Passaggio 3
Per assicurarsi che l'agente sia installato, seguire il passaggio 1
Get-AzVMss -ResourceGroupName $vmss.ResourceGroupName -VMNScaleSetName $vmss.Name
Avviare un'acquisizione di pacchetti
Completati i passaggi precedenti, l'agente di acquisizione pacchetti viene installato nel set di scalabilità di macchine virtuali.
Passaggio 1
Il passaggio successivo consiste nel recuperare l'istanza di Network Watcher. Questa variabile viene passata al cmdlet New-AzNetworkWatcherPacketCapture
nel passaggio 4.
$networkWatcher = Get-AzNetworkWatcher | Where {$_.Location -eq "westcentralus" }
Passaggio 2
Recuperare un account di archiviazione. Questo account di archiviazione viene usato per archiviare il file di acquisizione pacchetti.
$storageAccount = Get-AzStorageAccount -ResourceGroupName testrg -Name testrgsa123
Passaggio 3
I filtri possono essere usati per limitare i dati archiviati dall'acquisizione di pacchetti. Nell'esempio seguente vengono impostati due filtri. Un filtro raccoglie il traffico TCP in uscita solo dall'indirizzo IP locale 10.0.0.3 alle porte di destinazione 20, 80 e 443. Il secondo filtro raccoglie solo il traffico 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
Nota
È possibile definire più filtri per un'acquisizione di pacchetti.
Passaggio 4
Creare l'ambito per l'acquisizione di pacchetti
$s1 = New-AzPacketCaptureScopeConfig -Include "0", "1"
Passaggio 5
Eseguire il cmdlet New-AzNetworkWatcherPacketCaptureV2
per avviare il processo di acquisizione pacchetti, passando i valori necessari recuperati nei passaggi precedenti.
New-AzNetworkWatcherPacketCaptureV2 -NetworkWatcher $networkwatcher -PacketCaptureName $pcName -TargetId $vmss.Id -TargetType "azurevmss" -StorageAccountId $storageAccount.id -Filter $filter1, $filter2
Ottenere un'acquisizione di pacchetti
Eseguendo il cmdlet Get-AzNetworkWatcherPacketCapture
, recupera lo stato di un'acquisizione di pacchetti attualmente in esecuzione o completata.
Get-AzNetworkWatcherPacketCapture -NetworkWatcher $networkWatcher -PacketCaptureName "PacketCaptureTest"
L'esempio seguente è l'output del cmdlet Get-AzNetworkWatcherPacketCapture
. Il seguente esempio si riferisce alla fase conclusiva del processo di acquisizione. Il valore di PacketCaptureStatus è Fermato, con motivo di interruzione del tempo superato. Questo valore indica che l'acquisizione di pacchetti ha avuto esito positivo ed è stata eseguita per la sua durata.
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 : []
Interrompere un'acquisizione di pacchetti
Eseguendo il cmdlet Stop-AzNetworkWatcherPacketCapture
, se una sessione di acquisizione è in corso, essa viene arrestata.
Stop-AzNetworkWatcherPacketCapture -NetworkWatcher $networkWatcher -PacketCaptureName "PacketCaptureTest"
Nota
Il cmdlet non restituisce alcuna risposta quando viene eseguita in una sessione di acquisizione attualmente in esecuzione o in una sessione esistente già arrestata.
Eliminare un'acquisizione di pacchetti
Remove-AzNetworkWatcherPacketCapture -NetworkWatcher $networkWatcher -PacketCaptureName "PacketCaptureTest"
Nota
L'eliminazione di un'acquisizione di pacchetti non comporta l'eliminazione del file nell'account di archiviazione.
Scaricare un'acquisizione di pacchetti
Al termine della sessione di acquisizione pacchetti, il file di acquisizione può essere caricato nell'archivio BLOB o in un file locale nell'istanza/i. Il percorso di archiviazione dell'acquisizione pacchetti viene definito durante la creazione della sessione. Uno strumento pratico per accedere a questi file di acquisizione salvati in un account di archiviazione è Microsoft Azure Storage Explorer, che può essere scaricato qui: https://storageexplorer.com/
Se si specifica un account di archiviazione, i file di acquisizione pacchetti vengono salvati in un account di archiviazione nel percorso seguente:
Se sono selezionate più istanze
https://{storageAccountName}.blob.core.windows.net/network-watcher-logs/subscriptions/{subscriptionId}/resourcegroups/{storageAccountResourceGroup}/providers/microsoft.compute/virtualmachinescalesets/{VMSSName}/{year}/{month}/{day}/packetCapture_{creationTime}
Se è selezionata una singola istanza
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
Passaggi successivi
Verificare se un determinato traffico è consentito all'ingresso o all'esterno della macchina virtuale visitando Controllare la verifica del flusso IP