Diagnozowanie problemu z routingiem sieciowym maszyny wirtualnej — Azure PowerShell

W tym artykule wdrożysz maszynę wirtualną, a następnie sprawdzisz komunikację z adresem IP i adresem URL. Określisz przyczynę niepowodzenia komunikacji oraz sposób rozwiązania problemu.

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.

Azure Cloud Shell

Na platforma Azure hostowane jest Azure Cloud Shell, interaktywne środowisko powłoki, z którego można korzystać w przeglądarce. Do pracy z usługami platformy Azure można używać programu Bash lub PowerShell w środowisku Cloud Shell. Aby uruchomić kod w tym artykule, możesz użyć wstępnie zainstalowanych poleceń usługi Cloud Shell bez konieczności instalowania niczego w środowisku lokalnym.

Aby uruchomić środowisko Azure Cloud Shell:

Opcja Przykład/link
Wybierz pozycję Wypróbuj w prawym górnym rogu bloku kodu lub polecenia. Wybranie pozycji Wypróbuj nie powoduje automatycznego skopiowania kodu lub polecenia do usługi Cloud Shell. Zrzut ekranu przedstawiający przykład narzędzia Try It dla usługi Azure Cloud Shell.
Przejdź do witryny https://shell.azure.com lub wybierz przycisk Uruchom Cloud Shell, aby otworzyć środowisko Cloud Shell w przeglądarce. Przycisk uruchamiania usługi Azure Cloud Shell.
Wybierz przycisk Cloud Shell na pasku menu w prawym górnym rogu witryny Azure Portal. Zrzut ekranu przedstawiający przycisk usługi Cloud Shell w witrynie Azure Portal

Aby użyć usługi Azure Cloud Shell:

  1. Uruchom usługę Cloud Shell.

  2. Wybierz przycisk Kopiuj w bloku kodu (lub bloku poleceń), aby skopiować kod lub polecenie.

  3. Wklej kod lub polecenie do sesji usługi Cloud Shell, wybierając klawisze Ctrl+Shift V w systemach Windows i Linux lub wybierając pozycję Cmd+Shift++V w systemie macOS.

  4. Wybierz klawisz Enter, aby uruchomić kod lub polecenie.

Jeśli zdecydujesz się zainstalować program PowerShell i korzystać z niego lokalnie, ten artykuł wymaga modułu Az programu PowerShell. Aby uzyskać więcej informacji, zobacz How to install Azure PowerShell (Jak zainstalować program Azure PowerShell). Aby dowiedzieć się, jaka wersja została zainstalowana, uruchom polecenie Get-InstalledModule -Name Az. Jeśli uruchomisz program PowerShell lokalnie, zaloguj się do platformy Azure przy użyciu polecenia cmdlet Połączenie-AzAccount.

Tworzenie maszyny wirtualnej

Przed utworzeniem maszyny wirtualnej musisz utworzyć grupę zasobów, która będzie zawierała maszynę wirtualną. Utwórz grupę zasobów za pomocą polecenia New-AzResourceGroup. W poniższym przykładzie tworzona jest grupa zasobów o nazwie myResourceGroup w lokalizacji eastus.

New-AzResourceGroup -Name myResourceGroup -Location EastUS

Utwórz maszynę wirtualną za pomocą polecenia New-AzVM. Podczas wykonywania tego kroku jest wyświetlany monit o poświadczenia. Wprowadzane wartości są konfigurowane jako nazwa użytkownika i hasło dla maszyny wirtualnej.

$vM = New-AzVm `
    -ResourceGroupName "myResourceGroup" `
    -Name "myVm" `
    -Location "East US"

W ciągu kilku minut zostanie utworzona maszyna wirtualna. Wykonywanie pozostałych kroków możesz zacząć dopiero wtedy, gdy maszyna wirtualna zostanie utworzona i program PowerShell zwróci dane wyjściowe.

Testowanie komunikacji sieciowej

Aby przetestować komunikację sieciową z usługą Network Watcher, należy najpierw włączyć usługę Network Watcher w regionie, w którym ma być testowa maszyna wirtualna, a następnie użyć funkcji następnego przeskoku usługi Network Watcher w celu przetestowania komunikacji.

Włączanie usługi Network Watcher

Jeśli masz już włączoną usługę Network Watcher w regionie Wschodnie stany USA, użyj polecenia Get-AzNetworkWatcher, aby pobrać usługę Network Watcher . Poniższy przykład pobiera istniejącą usługę Network Watcher o nazwie NetworkWatcher_eastus znajdującą się w grupie zasobów NetworkWatcherRG:

$networkWatcher = Get-AzNetworkWatcher `
  -Name NetworkWatcher_eastus `
  -ResourceGroupName NetworkWatcherRG

Jeśli usługa Network Watcher nie jest jeszcze włączona w regionie Wschodnie stany USA, użyj polecenia New-AzNetworkWatcher , aby utworzyć obserwatora sieciowego w regionie Wschodnie stany USA:

$networkWatcher = New-AzNetworkWatcher `
  -Name "NetworkWatcher_eastus" `
  -ResourceGroupName "NetworkWatcherRG" `
  -Location "East US"

Korzystanie z funkcji Następny przeskok

Na platformie Azure są automatycznie tworzone trasy do domyślnych miejsc docelowych. Możesz tworzyć trasy niestandardowe zastępujące domyślne trasy. Czasami użycie tras niestandardowych może spowodować niepowodzenie komunikacji. Aby przetestować routing z maszyny wirtualnej, użyj polecenia Get-AzNetworkWatcherNextHop , aby określić następny przeskok routingu, gdy ruch jest przeznaczony dla określonego adresu.

Przetestuj komunikację wychodzącą z maszyny wirtualnej do jednego z adresów IP dla www.bing.com:

Get-AzNetworkWatcherNextHop `
  -NetworkWatcher $networkWatcher `
  -TargetVirtualMachineId $VM.Id `
  -SourceIPAddress 192.168.1.4 `
  -DestinationIPAddress 13.107.21.200

Po kilku sekundach dane wyjściowe informują o tym, że wartość NextHopType to Internet, a identyfikator RouteTableId to Trasa systemowa. Ten wynik informuje o tym, że istnieje prawidłowa trasa do miejsca docelowego.

Przetestuj komunikację wychodzącą z maszyny wirtualnej do adresu 172.31.0.100:

Get-AzNetworkWatcherNextHop `
  -NetworkWatcher $networkWatcher `
  -TargetVirtualMachineId $VM.Id `
  -SourceIPAddress 192.168.1.4 `
  -DestinationIPAddress 172.31.0.100

Zwrócone dane wyjściowe informują o tym, że wartość None jest wartością NextHopType i że routeTableId jest również trasą systemową. Ten wynik oznacza, że istnieje prawidłowa trasa systemowa do miejsca docelowego, ale nie ma następnego przeskoku umożliwiającego kierowanie ruchu do miejsca docelowego.

Wyświetlanie szczegółów trasy

Aby dokładniej przeanalizować routing, przejrzyj obowiązujące trasy dla interfejsu sieciowego za pomocą polecenia Get-AzEffectiveRouteTable :

Get-AzEffectiveRouteTable `
  -NetworkInterfaceName myVm `
  -ResourceGroupName myResourceGroup |
  Format-table

Zwracane są dane wyjściowe zawierające następujący tekst:

Name State  Source  AddressPrefix           NextHopType NextHopIpAddress
---- -----  ------  -------------           ----------- ----------------
     Active Default {192.168.0.0/16}        VnetLocal   {}              
     Active Default {0.0.0.0/0}             Internet    {}              
     Active Default {10.0.0.0/8}            None        {}              
     Active Default {100.64.0.0/10}         None        {}              
     Active Default {172.16.0.0/12}         None        {}              

Jak widać w poprzednich danych wyjściowych, trasa z prefiksem AddressPrefix0.0.0.0/0 kieruje cały ruch, który nie jest przeznaczony dla adresów w prefiksach adresów innych tras z następnym przeskokiem Internetu. Jak widać również w danych wyjściowych, chociaż istnieje trasa domyślna do prefiksu 172.16.0.0/12, który zawiera adres 172.31.0.100, następny typhoptype to Brak. Platforma Azure tworzy domyślną trasę dla zakresu adresów 172.16.0.0/12, ale nie określa typu następnego przeskoku, jeśli nie jest to wymagane. Jeśli na przykład dodano zakres adresów 172.16.0.0/12 do przestrzeni adresowej sieci wirtualnej, platforma Azure zmienia wartość nextHopType na sieć wirtualną dla trasy. Następnie zostanie wyświetlona kontrola Sieć wirtualna jako następna wartośćHopType.

Czyszczenie zasobów

Gdy grupa zasobów nie jest już potrzebna, możesz użyć polecenia Remove-AzResourceGroup , aby usunąć grupę zasobów i wszystkie zawarte w niej zasoby:

Remove-AzResourceGroup -Name myResourceGroup -Force

Następne kroki

W tym artykule utworzono maszynę wirtualną i zdiagnozowano routing sieciowy z maszyny wirtualnej. Uzyskano informacje o tworzeniu tras domyślnych na platformie Azure i przetestowano routing do dwóch różnych miejsc docelowych. Uzyskaj więcej informacji na temat routingu na platformie Azure i dowiedz się, jak tworzyć trasy niestandardowe.

W przypadku połączeń wychodzących maszyn wirtualnych można również określić opóźnienie i dozwolony i niedozwolony ruch sieciowy między maszyną wirtualną a punktem końcowym przy użyciu możliwości rozwiązywania problemów z połączeniem usługi Network Watcher. Możesz monitorować komunikację między maszyną wirtualną a punktem końcowym, takim jak adres IP lub adres URL w czasie, przy użyciu funkcji monitora połączeń usługi Network Watcher. Aby uzyskać więcej informacji, zobacz Monitorowanie połączenia sieciowego.