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.
- Uruchom przechwytywanie pakietów
- Zatrzymaj przechwytywanie pakietów
- Usuń przechwytywanie pakietów
- Pobierz przechwycony pakiet
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