Zarządzanie przechwytywaniem pakietów dla maszyn wirtualnych za pomocą usługi Azure Network Watcher przy użyciu interfejsu wiersza polecenia platformy Azure

Narzędzie przechwytywania pakietów usługi Network Watcher umożliwia tworzenie sesji przechwytywania w celu rejestrowania ruchu sieciowego do i z maszyny wirtualnej platformy Azure. Filtry są udostępniane dla sesji przechwytywania, aby zapewnić przechwycenie tylko żądanego ruchu. Przechwytywanie pakietów pomaga w diagnozowaniu anomalii sieci zarówno reaktywnie, jak i aktywnie. Jej aplikacje wykraczają poza wykrywanie anomalii, aby obejmować zbieranie statystyk sieciowych, uzyskiwanie wglądu w włamania do sieci, debugowanie komunikacji klient-serwer i rozwiązywanie różnych innych problemów z siecią. Przechwytywanie pakietów usługi Network Watcher umożliwia zdalne inicjowanie przechwytywania pakietów, co pozwala zmniejszyć potrzebę ręcznego wykonywania na określonej maszynie wirtualnej.

Z tego artykułu dowiesz się, jak zdalnie konfigurować, uruchamiać, zatrzymywać, pobierać i usuwać przechwytywanie pakietów maszyn wirtualnych przy użyciu programu Azure PowerShell. Aby dowiedzieć się, jak zarządzać przechwytywaniem pakietów przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure, zobacz Zarządzanie przechwytywaniem pakietów dla maszyn wirtualnych przy użyciu witryny Azure Portal lub Zarządzanie przechwytywaniem pakietów dla maszyn wirtualnych przy użyciu programu PowerShell.

Wymagania wstępne

  • Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.

  • Azure Cloud Shell lub interfejs wiersza polecenia platformy Azure.

    Kroki opisane w tym artykule umożliwiają interaktywne uruchamianie poleceń interfejsu wiersza polecenia platformy Azure w usłudze Azure Cloud Shell. Aby uruchomić polecenia w usłudze Cloud Shell, wybierz pozycję Otwórz usługę Cloud Shell w prawym górnym rogu bloku kodu. Wybierz pozycję Kopiuj , aby skopiować kod i wklej go w usłudze Cloud Shell, aby go uruchomić. Możesz również uruchomić usługę Cloud Shell z poziomu witryny Azure Portal.

    Możesz również zainstalować interfejs wiersza polecenia platformy Azure lokalnie , aby uruchomić polecenia. Jeśli uruchomisz interfejs wiersza polecenia platformy Azure lokalnie, zaloguj się do platformy Azure przy użyciu polecenia az login .

  • Maszyna wirtualna z następującą wychodzącą łącznością TCP:

    • do konta magazynu za pośrednictwem portu 443
    • do 169.254.169.254 przez port 80
    • do 168.63.129.16 przez port 8037

Uwaga

  • Platforma Azure tworzy wystąpienie usługi Network Watcher w regionie maszyny wirtualnej, jeśli usługa Network Watcher nie została włączona dla tego regionu. Aby uzyskać więcej informacji, zobacz Włączanie lub wyłączanie usługi Azure Network Watcher.
  • Przechwytywanie pakietów usługi Network Watcher wymaga zainstalowania rozszerzenia maszyny wirtualnej agenta usługi Network Watcher na docelowej maszynie wirtualnej. Aby uzyskać więcej informacji, zobacz Instalowanie agenta usługi Network Watcher.
  • Dwa ostatnie adresy IP i porty wymienione w sekcji Wymagania wstępne są wspólne we wszystkich narzędziach usługi Network Watcher korzystających z agenta usługi Network Watcher i mogą czasami ulec zmianie.

Jeśli sieciowa grupa zabezpieczeń jest skojarzona z interfejsem sieciowym lub podsiecią, w którą znajduje się interfejs sieciowy, upewnij się, że istnieją reguły zezwalające na łączność wychodzącą przez poprzednie porty. Podobnie należy zapewnić łączność wychodzącą przez poprzednie porty podczas dodawania tras zdefiniowanych przez użytkownika do sieci.

Instalowanie agenta usługi Network Watcher

Krok 1

Uruchom polecenie , az vm extension set aby zainstalować agenta przechwytywania pakietów na maszynie wirtualnej gościa.

W przypadku maszyn wirtualnych z systemem Windows:

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

W przypadku maszyn wirtualnych z systemem Linux:

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

Krok 2

Aby upewnić się, że agent jest zainstalowany, uruchom vm extension show polecenie i przekaż nazwę grupy zasobów i maszyny wirtualnej. Sprawdź wynikowe listy, aby upewnić się, że agent jest zainstalowany.

W przypadku maszyn wirtualnych z systemem Windows:

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

W przypadku maszyn wirtualnych z systemem Linux:

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

Poniższy przykład to przykład odpowiedzi z uruchomienia 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"
}

Uruchamianie przechwytywania pakietów

Po wykonaniu powyższych kroków agent przechwytywania pakietów jest instalowany na maszynie wirtualnej.

Krok 1

Pobieranie konta magazynu. To konto magazynu służy do przechowywania pliku przechwytywania pakietów.

az storage account list

Krok 2

Na tym etapie możesz utworzyć przechwytywanie pakietów. Najpierw przyjrzyjmy się parametrom, które warto skonfigurować. Filtry są jednym z takich parametrów, które mogą służyć do ograniczania danych przechowywanych przez przechwytywanie pakietów. W poniższym przykładzie skonfigurowaliśmy przechwytywanie pakietów z kilkoma filtrami. Pierwsze trzy filtry zbierają wychodzący ruch TCP tylko z lokalnego adresu IP 10.0.0.3 do portów docelowych 20, 80 i 443. Ostatni filtr zbiera tylko ruch 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\"}]"

Poniższy przykład to oczekiwane dane wyjściowe z uruchomienia az network watcher packet-capture create polecenia.

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

Pobieranie przechwytywania pakietów

az network watcher packet-capture show-status Uruchomienie polecenia powoduje pobranie stanu aktualnie uruchomionego lub ukończonego przechwytywania pakietów.

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

Poniższy przykład to dane wyjściowe polecenia az network watcher packet-capture show-status . W poniższym przykładzie jest to, gdy przechwytywanie jest zatrzymane z zatrzymanym plikiem StopReason 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"
}

Zatrzymywanie przechwytywania pakietów

az network watcher packet-capture stop Uruchamiając polecenie, jeśli sesja przechwytywania jest w toku, jest zatrzymana.

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

Uwaga

Polecenie nie zwraca żadnej odpowiedzi po uruchomieniu aktualnie uruchomionej sesji przechwytywania lub istniejącej sesji, która została już zatrzymana.

Usuwanie przechwytywania pakietów

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

Uwaga

Usunięcie przechwytywania pakietów nie powoduje usunięcia pliku na koncie magazynu.

Pobieranie przechwytywania pakietów

Po zakończeniu sesji przechwytywania pakietów plik przechwytywania można przekazać do magazynu obiektów blob lub do pliku lokalnego na maszynie wirtualnej. Lokalizacja przechowywania przechwytywania pakietów jest definiowana podczas tworzenia sesji. Wygodne narzędzie do uzyskiwania dostępu do tych plików przechwytywania zapisanych na koncie magazynu jest Eksplorator usługi Microsoft Azure Storage, które można pobrać tutaj:https://storageexplorer.com/

Jeśli określono konto magazynu, pliki przechwytywania pakietów są zapisywane na koncie magazynu w następującej lokalizacji:

https://{storageAccountName}.blob.core.windows.net/network-watcher-logs/subscriptions/{subscriptionId}/resourcegroups/{storageAccountResourceGroup}/providers/microsoft.compute/virtualmachines/{VMName}/{year}/{month}/{day}/packetCapture_{creationTime}.cap
  • Aby dowiedzieć się, jak zautomatyzować przechwytywanie pakietów przy użyciu alertów maszyny wirtualnej, zobacz Tworzenie przechwycenia pakietów wyzwalanych przez alert.
  • Aby określić, czy określony ruch jest dozwolony na maszynie wirtualnej, czy poza maszyną wirtualną, zobacz Diagnozowanie problemu z filtrowaniem ruchu sieciowego maszyny wirtualnej.