Hantera paketinsamlingar för virtuella datorer med Azure Network Watcher med hjälp av Azure CLI

Med paketinsamlingsverktyget för Network Watcher kan du skapa avbildningssessioner för att registrera nätverkstrafik till och från en virtuell Azure-dator (VM). Filter tillhandahålls för avbildningssessionen för att säkerställa att du endast avbildar den trafik du vill ha. Paketinsamling hjälper till att diagnostisera nätverksavvikelser både reaktivt och proaktivt. Dess program sträcker sig bortom avvikelseidentifiering till att omfatta insamling av nätverksstatistik, få insikter om nätverksintrång, felsöka klient-server-kommunikation och hantera olika andra nätverksutmaningar. Med Network Watcher-paketinsamling kan du initiera paketinsamlingar via fjärranslutning, vilket minskar behovet av manuell körning på en specifik virtuell dator.

I den här artikeln får du lära dig hur du fjärr konfigurerar, startar, stoppar, laddar ned och tar bort en paketinsamling för virtuella datorer med Hjälp av Azure PowerShell. Mer information om hur du hanterar paketinsamlingar med hjälp av Azure-portalen eller Azure CLI finns i Hantera paketinsamlingar för virtuella datorer med hjälp av Azure-portalen eller Hantera paketinsamlingar för virtuella datorer med hjälp av PowerShell.

Förutsättningar

  • Ett Azure-konto med en aktiv prenumeration. Skapa ett konto utan kostnad.

  • Azure Cloud Shell eller Azure CLI.

    Stegen i den här artikeln kör Azure CLI-kommandona interaktivt i Azure Cloud Shell. Om du vill köra kommandona i Cloud Shell väljer du Öppna Cloud Shell i det övre högra hörnet i ett kodblock. Välj Kopiera för att kopiera koden och klistra in den i Cloud Shell för att köra den. Du kan också köra Cloud Shell från Azure-portalen.

    Du kan också installera Azure CLI lokalt för att köra kommandona. Om du kör Azure CLI lokalt loggar du in på Azure med kommandot az login .

  • En virtuell dator med följande utgående TCP-anslutning:

    • till lagringskontot via port 443
    • till 169.254.169.254 över port 80
    • till 168.63.129.16 över port 8037

Kommentar

  • Azure skapar en Network Watcher-instans i den virtuella datorns region om Network Watcher inte har aktiverats för den regionen. Mer information finns i Aktivera eller inaktivera Azure Network Watcher.
  • Network Watcher-paketinsamling kräver att VM-tillägget för Network Watcher-agenten installeras på den virtuella måldatorn. Mer information finns i Installera Network Watcher-agenten.
  • De två sista IP-adresserna och portarna som anges i förhandskraven är gemensamma för alla Network Watcher-verktyg som använder Network Watcher-agenten och kan ibland ändras.

Om en nätverkssäkerhetsgrupp är associerad med nätverksgränssnittet eller undernätet som nätverksgränssnittet finns i kontrollerar du att det finns regler för att tillåta utgående anslutning via de tidigare portarna. På samma sätt säkerställer du utgående anslutning via de tidigare portarna när du lägger till användardefinierade vägar i nätverket.

Installera Network Watcher-agenten

Steg 1

az vm extension set Kör kommandot för att installera paketinsamlingsagenten på den virtuella gästdatorn.

För virtuella Windows-datorer:

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

För virtuella Linux-datorer:

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

Steg 2

Kontrollera att agenten är installerad genom att köra vm extension show kommandot och skicka det till resursgruppen och namnet på den virtuella datorn. Kontrollera den resulterande listan för att se till att agenten är installerad.

För virtuella Windows-datorer:

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

För virtuella Linux-datorer:

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

Följande exempel är ett exempel på svaret från körningen 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"
}

Starta en paketinsamling

När föregående steg har slutförts installeras paketinsamlingsagenten på den virtuella datorn.

Steg 1

Hämta ett lagringskonto. Det här lagringskontot används för att lagra paketinsamlingsfilen.

az storage account list

Steg 2

Nu är du redo att skapa en paketinsamling. Först ska vi undersöka de parametrar som du kanske vill konfigurera. Filter är en sådan parameter som kan användas för att begränsa de data som lagras av paketinsamlingen. I följande exempel konfigureras en paketinsamling med flera filter. De första tre filtren samlar endast in utgående TCP-trafik från lokal IP 10.0.0.3 till målportarna 20, 80 och 443. Det sista filtret samlar endast in UDP-trafik.

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\"}]"

Följande exempel är de förväntade utdata från körningen av az network watcher packet-capture create kommandot.

{
  "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
}

Hämta en paketinsamling

az network watcher packet-capture show-status Kör kommandot, hämtar statusen för en paketinsamling som körs eller slutförts.

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

Följande exempel är utdata från az network watcher packet-capture show-status kommandot. Följande exempel är när avbildningen stoppas med en StopReason för 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"
}

Stoppa en paketinsamling

Om en avbildningssession pågår stoppas genom att kommandot körs az network watcher packet-capture stop .

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

Kommentar

Kommandot returnerar inget svar när det körs på en avbildningssession som körs eller en befintlig session som redan har stoppats.

Ta bort en paketinsamling

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

Kommentar

Om du tar bort en paketinsamling tas inte filen i lagringskontot bort.

Ladda ned en paketinsamling

När paketinsamlingssessionen har slutförts kan avbildningsfilen laddas upp till bloblagring eller till en lokal fil på den virtuella datorn. Lagringsplatsen för paketinsamlingen definieras när sessionen skapas. Ett praktiskt verktyg för att komma åt dessa avbildningsfiler som sparats på ett lagringskonto är Microsoft Azure Storage Explorer, som kan laddas ned här: https://storageexplorer.com/

Om ett lagringskonto anges sparas paketinsamlingsfiler till ett lagringskonto på följande plats:

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