Udostępnij za pośrednictwem


Zarządzanie przechwytywaniem pakietów w zestawie skalowania maszyn wirtualnych za pomocą usługi Azure Network Watcher przy użyciu programu PowerShell

Przechwytywanie pakietów usługi Network Watcher pozwala na tworzenie sesji przechwytywania, które umożliwiają śledzenie ruchu do i z instancji maszyn wirtualnych w zestawie skalowania. Filtry są udostępniane dla sesji przechwytywania, aby zapewnić przechwycenie tylko żądanego ruchu. Przechwytywanie pakietów pomaga diagnozować anomalie sieci, zarówno reaktywnie, jak i aktywnie. Inne zastosowania obejmują zbieranie statystyk sieciowych, uzyskiwanie informacji na temat włamań sieciowych, debugowanie komunikacji między klientem a serwerem i wiele innych. Możliwość zdalnego inicjowania przechwytywania pakietów zmniejsza potrzebę ręcznego działania w celu przechwycenia pakietów na wybranym wystąpieniu lub wybranych wystąpieniach zestawu skalowania maszyn wirtualnych, co pozwala zaoszczędzić cenny czas.

W tym artykule przedstawiono różne zadania zarządzania, które są obecnie dostępne do przechwytywania pakietów.

Przed rozpoczęciem

W tym artykule założono, że masz następujące zasoby:

  • Wystąpienie usługi Network Watcher w regionie, w którym chcesz utworzyć przechwytywanie pakietów

Ważny

Przechwytywanie pakietów wymaga rozszerzenia zestawu skalowania maszyn wirtualnych AzureNetworkWatcherExtension. Aby zainstalować rozszerzenie na maszynie wirtualnej z systemem Windows, odwiedź stronę rozszerzenie maszyny wirtualnej agenta usługi Azure Network Watcher dla systemu Windows i maszyny wirtualnej z systemem Linux odwiedź stronę rozszerzenia maszyny wirtualnej agenta usługi Azure Network Watcher dla systemu Linux.

Instalowanie rozszerzenia zestawu skalowania maszyn wirtualnych

Krok 1

$vmss = Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"

Krok 2

Instalowanie agenta networkWatcherAgent w zestawie skalowania maszyn wirtualnych/wystąpieniach zestawu skalowania maszyn wirtualnych

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.

Krok 3

Aby upewnić się, że agent jest zainstalowany, wykonaj krok 1

Get-AzVMss -ResourceGroupName $vmss.ResourceGroupName  -VMNScaleSetName $vmss.Name

Uruchamianie przechwytywania pakietów

Po wykonaniu powyższych kroków agent przechwytywania pakietów jest instalowany na zestawie skalowania maszyn wirtualnych.

Krok 1

Następnym krokiem jest pobranie instancji usługi Network Watcher. Ta zmienna jest przekazywana do polecenia cmdlet New-AzNetworkWatcherPacketCapture w kroku 4.

$networkWatcher = Get-AzNetworkWatcher  | Where {$_.Location -eq "westcentralus" }

Krok 2

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

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

Krok 3

Filtry mogą służyć do ograniczania danych przechowywanych przez przechwytywanie pakietów. Poniższy przykład konfiguruje dwa filtry. Jeden filtr zbiera wychodzący ruch TCP tylko z lokalnego adresu IP 10.0.0.3 do portów docelowych 20, 80 i 443. Drugi filtr zbiera tylko ruch 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

Notatka

Na potrzeby przechwytywania pakietów można zdefiniować wiele filtrów.

Krok 4

Tworzenie zakresu przechwytywania pakietów

$s1 = New-AzPacketCaptureScopeConfig -Include "0", "1"

Krok 5

Uruchom polecenie cmdlet New-AzNetworkWatcherPacketCaptureV2, aby rozpocząć proces przechwytywania pakietów, przekazując wymagane wartości pobrane w poprzednich krokach.


New-AzNetworkWatcherPacketCaptureV2 -NetworkWatcher $networkwatcher -PacketCaptureName $pcName -TargetId $vmss.Id -TargetType "azurevmss" -StorageAccountId $storageAccount.id -Filter $filter1, $filter2

Uzyskaj przechwytywanie pakietów

Uruchomienie polecenia cmdlet Get-AzNetworkWatcherPacketCapture pozwala pobrać stan przechwytywania pakietów, które jest obecnie uruchomione lub zakończone.

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

Poniższy przykład to dane wyjściowe polecenia cmdlet Get-AzNetworkWatcherPacketCapture. Poniższy przykład jest po zakończeniu przechwytywania. Wartość PacketCaptureStatus to Zatrzymany, z powodem zatrzymania TimeExceeded. Ta wartość pokazuje, że przechwytywanie pakietów zakończyło się pomyślnie i trwało jego czas.

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

Zatrzymaj przechwytywanie pakietów

Uruchamiając polecenie cmdlet Stop-AzNetworkWatcherPacketCapture, jeśli sesja przechwytywania jest w toku, zostanie zatrzymana.

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

Notatka

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

Usuń przechwytywanie pakietów

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

Notatka

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

Pobierz przechwytywanie pakietów

Po zakończeniu sesji przechwytywania pakietów, plik przechwytywania można przekazać do magazynu obiektów BLOB lub do pliku lokalnego w wystąpieniach/instancjach. Lokalizacja przechowywania przechwytywania pakietów jest definiowana podczas tworzenia sesji. Wygodnym narzędziem do uzyskiwania dostępu do tych plików przechwytywania zapisanych na koncie magazynu jest Eksplorator usługi Microsoft Azure Storage, który można pobrać tutaj: https://storageexplorer.com/

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

Jeśli wybrano wiele instancji

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

W przypadku wybrania pojedynczej instancji

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

Następne kroki

Sprawdź, czy określony ruch jest dozwolony do lub z twojej maszyny wirtualnej, odwiedzając Sprawdź przepływ adresów IP