Gestire le acquisizioni di pacchetti per le macchine virtuali con Azure Network Watcher usando l'interfaccia della riga di comando di Azure

Lo strumento di acquisizione pacchetti network Watcher consente di creare sessioni di acquisizione per registrare il traffico di rete da e verso una macchina virtuale di Azure. Vengono forniti filtri per la sessione di acquisizione per assicurarsi di acquisire solo il traffico desiderato. L'acquisizione di pacchetti consente di diagnosticare le anomalie di rete in modo reattivo e proattivo. Le applicazioni si estendono oltre il rilevamento anomalie per includere la raccolta di statistiche di rete, l'acquisizione di informazioni dettagliate sulle intrusioni di rete, il debug delle comunicazioni client-server e la risoluzione di varie altre problematiche di rete. L'acquisizione di pacchetti network Watcher consente di avviare acquisizioni di pacchetti in modalità remota, riducendo la necessità di eseguire manualmente in una macchina virtuale specifica.

Questo articolo illustra come configurare, avviare, arrestare, scaricare ed eliminare in remoto un'acquisizione di pacchetti di macchine virtuali usando Azure PowerShell. Per informazioni su come gestire le acquisizioni di pacchetti usando il portale di Azure o l'interfaccia della riga di comando di Azure, vedere Gestire le acquisizioni di pacchetti per le macchine virtuali usando il portale di Azure o Gestire le acquisizioni di pacchetti per le macchine virtuali tramite PowerShell.

Prerequisiti

  • Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.

  • Azure Cloud Shell o interfaccia della riga di comando di Azure.

    I passaggi descritti in questo articolo eseguono i comandi dell'interfaccia della riga di comando di Azure in modo interattivo in Azure Cloud Shell. Per eseguire i comandi in Cloud Shell, selezionare Apri Cloud Shell nell'angolo superiore destro di un blocco di codice. Selezionare Copia per copiare il codice e incollarlo in Cloud Shell per eseguirlo. È anche possibile eseguire Cloud Shell dall'interno del portale di Azure.

    È anche possibile installare l'interfaccia della riga di comando di Azure in locale per eseguire i comandi. Se si esegue l'interfaccia della riga di comando di Azure in locale, accedere ad Azure usando il comando az login .

  • Una macchina virtuale con la connettività TCP in uscita seguente:

    • all'account di archiviazione sulla porta 443
    • a 169.254.169.254 sulla porta 80
    • a 168.63.129.16 sulla porta 8037

Nota

  • Azure crea un'istanza di Network Watcher nell'area della macchina virtuale se Network Watcher non è stato abilitato per tale area. Per altre informazioni, vedere Abilitare o disabilitare Azure Network Watcher.
  • L'acquisizione di pacchetti network Watcher richiede l'installazione dell'estensione macchina virtuale dell'agente Network Watcher nella macchina virtuale di destinazione. Per altre informazioni, vedere Installare l'agente Network Watcher.
  • Gli ultimi due indirizzi IP e le porte elencati nei prerequisiti sono comuni in tutti gli strumenti di Network Watcher che usano l'agente Network Watcher e possono talvolta cambiare.

Se un gruppo di sicurezza di rete è associato all'interfaccia di rete o alla subnet in cui si trova l'interfaccia di rete, assicurarsi che le regole esistano per consentire la connettività in uscita sulle porte precedenti. Analogamente, assicurarsi la connettività in uscita sulle porte precedenti quando si aggiungono route definite dall'utente alla rete.

Installare l'agente Network Watcher

Passaggio 1

Eseguire il az vm extension set comando per installare l'agente di acquisizione pacchetti nella macchina virtuale guest.

Per le macchine virtuali Windows:

az vm extension set --resource-group resourceGroupName --vm-name virtualMachineName --publisher Microsoft.Azure.NetworkWatcher --name NetworkWatcherAgentWindows --version 1.4

Per le macchine virtuali Linux:

az vm extension set --resource-group resourceGroupName --vm-name virtualMachineName --publisher Microsoft.Azure.NetworkWatcher --name NetworkWatcherAgentLinux --version 1.4

Passaggio 2

Per assicurarsi che l'agente sia installato, eseguire il vm extension show comando e passarlo al gruppo di risorse e al nome della macchina virtuale. Controllare l'elenco risultante per verificare l'installazione dell'agente.

Per le macchine virtuali Windows:

az vm extension show --resource-group resourceGroupName --vm-name virtualMachineName --name NetworkWatcherAgentWindows

Per le macchine virtuali Linux:

az vm extension show --resource-group resourceGroupName --vm-name virtualMachineName --name AzureNetworkWatcherExtension

L'esempio seguente riporta una possibile risposta all'esecuzione di az vm extension show.

{
  "autoUpgradeMinorVersion": true,
  "forceUpdateTag": null,
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/extensions/NetworkWatcherAgentWindows",
  "instanceView": null,
  "location": "westcentralus",
  "name": "NetworkWatcherAgentWindows",
  "protectedSettings": null,
  "provisioningState": "Succeeded",
  "publisher": "Microsoft.Azure.NetworkWatcher",
  "resourceGroup": "{resourceGroupName}",
  "settings": null,
  "tags": null,
  "type": "Microsoft.Compute/virtualMachines/extensions",
  "typeHandlerVersion": "1.4",
  "virtualMachineExtensionType": "NetworkWatcherAgentWindows"
}

Avviare un'acquisizione di pacchetti

Dopo aver completato i passaggi precedenti, l'agente di acquisizione di pacchetti è installato nella macchina virtuale.

Passaggio 1

Recuperare un account di archiviazione. L'account di archiviazione viene usato per archiviare il file di acquisizione di pacchetti.

az storage account list

Passaggio 2

A questo punto, si è pronti per creare un'acquisizione di pacchetti. Prima di tutto, esaminiamo i parametri da configurare. I filtri sono un parametro di questo tipo che può essere usato per limitare i dati archiviati dall'acquisizione di pacchetti. L'esempio seguente imposta un'acquisizione di pacchetto con diversi filtri. I primi tre filtri acquisiscono il traffico TCP in uscita solo dall'indirizzo IP 10.0.0.3 verso le porte di destinazione 20, 80 e 443. L'ultimo filtro acquisisce solo il traffico UDP.

az network watcher packet-capture create --resource-group {resourceGroupName} --vm {vmName} --name packetCaptureName --storage-account {storageAccountName} --filters "[{\"protocol\":\"TCP\", \"remoteIPAddress\":\"1.1.1.1-255.255.255.255\",\"localIPAddress\":\"10.0.0.3\", \"remotePort\":\"20\"},{\"protocol\":\"TCP\", \"remoteIPAddress\":\"1.1.1.1-255.255.255.255\",\"localIPAddress\":\"10.0.0.3\", \"remotePort\":\"80\"},{\"protocol\":\"TCP\", \"remoteIPAddress\":\"1.1.1.1-255.255.255.255\",\"localIPAddress\":\"10.0.0.3\", \"remotePort\":\"443\"},{\"protocol\":\"UDP\"}]"

L'esempio seguente è l'output previsto dall'esecuzione del az network watcher packet-capture create comando .

{
  "bytesToCapturePerPacket": 0,
  "etag": "W/\"b8cf3528-2e14-45cb-a7f3-5712ffb687ac\"",
  "filters": [
    {
      "localIpAddress": "10.0.0.3",
      "localPort": "",
      "protocol": "TCP",
      "remoteIpAddress": "1.1.1.1-255.255.255.255",
      "remotePort": "20"
    },
    {
      "localIpAddress": "10.0.0.3",
      "localPort": "",
      "protocol": "TCP",
      "remoteIpAddress": "1.1.1.1-255.255.255.255",
      "remotePort": "80"
    },
    {
      "localIpAddress": "10.0.0.3",
      "localPort": "",
      "protocol": "TCP",
      "remoteIpAddress": "1.1.1.1-255.255.255.255",
      "remotePort": "443"
    },
    {
      "localIpAddress": "",
      "localPort": "",
      "protocol": "UDP",
      "remoteIpAddress": "",
      "remotePort": ""
    }
  ],
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/NetworkWatcherRG/providers/Microsoft.Network/networkWatchers/NetworkWatcher_westcentralus/pa
cketCaptures/packetCaptureName",
  "name": "packetCaptureName",
  "provisioningState": "Succeeded",
  "resourceGroup": "NetworkWatcherRG",
  "storageLocation": {
    "filePath": null,
    "storageId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/gwteststorage123abc",
    "storagePath": "https://gwteststorage123abc.blob.core.windows.net/network-watcher-logs/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/{resourceGroupName}/p
roviders/microsoft.compute/virtualmachines/{vmName}/2017/05/25/packetcapture_16_22_34_630.cap"
  },
  "target": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}",
  "timeLimitInSeconds": 18000,
  "totalBytesPerSession": 1073741824
}

Ottenere un'acquisizione di pacchetti

Eseguendo il az network watcher packet-capture show-status comando, recupera lo stato di un'acquisizione di pacchetti attualmente in esecuzione o completata.

az network watcher packet-capture show-status --name packetCaptureName --location {networkWatcherLocation}

L'esempio seguente è l'output del az network watcher packet-capture show-status comando . L'esempio seguente è relativo all'interruzione dell'acquisizione, con StopReason impostato su TimeExceeded.

{
  "additionalProperties": {
    "status": "Succeeded"
  },
  "captureStartTime": "2016-12-06T17:20:01.5671279Z",
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/NetworkWatcherRG/providers/Microsoft.Network/networkWatchers/NetworkWatcher_westcentralus/packetCaptures/packetCaptureName",
  "name": "packetCaptureName",
  "packetCaptureError": [],
  "packetCaptureStatus": "Stopped",
  "stopReason": "TimeExceeded"
}

Interrompere un'acquisizione di pacchetti

Eseguendo il az network watcher packet-capture stop comando , se è in corso una sessione di acquisizione, viene arrestata.

az network watcher packet-capture stop --name packetCaptureName --location westcentralus

Nota

Il comando 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

az network watcher packet-capture delete --name packetCaptureName --location westcentralus

Nota

L'eliminazione di un'acquisizione di pacchetti non elimina il file nell'account di archiviazione.

Scaricare un'acquisizione di pacchetti

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. La posizione di archiviazione dell'acquisizione di pacchetti viene definita al momento della creazione della sessione. Uno strumento utile per accedere ai file di acquisizione salvati in un account di archiviazione è Microsoft Azure Storage Explorer, disponibile qui: https://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:

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