Diagnozowanie problemu z routingiem maszyny wirtualnej

W tym artykule dowiesz się, jak zdiagnozować problem z routingiem, wyświetlając trasy, które są skuteczne dla interfejsu sieciowego na maszynie wirtualnej. Platforma Azure tworzy kilka tras domyślnych dla każdej podsieci sieci wirtualnej. Trasy domyślne platformy Azure można zastąpić, definiując trasy w tabeli tras, a następnie kojarząc tabelę tras z podsiecią. Kombinacja tras tworzonych, tras domyślnych platformy Azure i wszystkich tras propagowanych z sieci lokalnej za pośrednictwem bramy sieci VPN platformy Azure (jeśli sieć wirtualna jest połączona z siecią lokalną) za pośrednictwem protokołu BGP (Border Gateway Protocol), są skutecznymi trasami dla wszystkich interfejsów sieciowych w podsieci. Jeśli nie znasz pojęć związanych z siecią wirtualną, interfejsem sieciowym lub routingiem , zobacz Omówienie sieci wirtualnej, Interfejs sieciowy i Omówienie routingu.

Scenariusz

Próbujesz nawiązać połączenie z maszyną wirtualną, ale połączenie kończy się niepowodzeniem. Aby określić, dlaczego nie można nawiązać połączenia z maszyną wirtualną, możesz wyświetlić obowiązujące trasy dla interfejsu sieciowego przy użyciu witryny Azure Portal, programu PowerShell lub interfejsu wiersza polecenia platformy Azure.

W poniższych krokach założono, że masz istniejącą maszynę wirtualną, aby wyświetlić obowiązujące trasy. Jeśli nie masz istniejącej maszyny wirtualnej, najpierw wdróż maszynę wirtualną z systemem Linux lub Windows, aby wykonać zadania w tym artykule. Przykłady w tym artykule dotyczą maszyny wirtualnej o nazwie myVM z interfejsem sieciowym o nazwie myVMNic1. Maszyna wirtualna i interfejs sieciowy znajdują się w grupie zasobów o nazwie myResourceGroup i znajdują się w regionie Wschodnie stany USA . Zmień wartości w krokach zgodnie z potrzebami dla maszyny wirtualnej, dla której diagnozujesz problem.

Diagnozowanie przy użyciu Azure Portal

  1. Zaloguj się do witryny Azure Portal przy użyciu konta platformy Azure, które ma niezbędne uprawnienia.

  2. W górnej części Azure Portal wprowadź nazwę maszyny wirtualnej, która znajduje się w stanie uruchomienia, w polu wyszukiwania. Gdy nazwa maszyny wirtualnej pojawi się w wynikach wyszukiwania, wybierz ją.

  3. W obszarze Ustawienia po lewej stronie wybierz pozycję Sieć i przejdź do zasobu interfejsu sieciowego, wybierając jego nazwę. View network interfaces

  4. Po lewej stronie wybierz pozycję Obowiązujące trasy. Na poniższej ilustracji przedstawiono obowiązujące trasy dla interfejsu sieciowego o nazwie myVMNic1 : View effective routes

    Jeśli istnieje wiele interfejsów sieciowych dołączonych do maszyny wirtualnej, możesz wyświetlić obowiązujące trasy dla dowolnego interfejsu sieciowego, wybierając go. Ponieważ każdy interfejs sieciowy może znajdować się w innej podsieci, każdy interfejs sieciowy może mieć różne obowiązujące trasy.

    W przykładzie pokazanym na poprzedniej ilustracji wymienione trasy są domyślnymi trasami tworzonymi przez platformę Azure dla każdej podsieci. Lista zawiera co najmniej te trasy, ale może mieć dodatkowe trasy, w zależności od możliwości, które mogły być włączone dla sieci wirtualnej, takiej jak komunikacja równorzędna z inną siecią wirtualną lub połączona z siecią lokalną za pośrednictwem bramy sieci VPN platformy Azure. Aby dowiedzieć się więcej o poszczególnych trasach i innych trasach, które mogą być widoczne dla interfejsu sieciowego, zobacz Routing ruchu sieciowego w sieci wirtualnej. Jeśli lista zawiera dużą liczbę tras, możesz łatwiej wybrać pozycję Pobierz, aby pobrać plik .csv z listą tras.

Mimo że obowiązujące trasy były wyświetlane za pośrednictwem maszyny wirtualnej w poprzednich krokach, można również wyświetlić obowiązujące trasy za pośrednictwem:

Diagnozowanie przy użyciu programu PowerShell

Uwaga

W tym artykule użyto modułu Azure Az programu PowerShell, który jest zalecanym modułem programu PowerShell do interakcji z platformą Azure. Aby rozpocząć pracę z modułem Azure PowerShell, zobacz Instalowanie programu Azure PowerShell. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Możesz uruchomić polecenia, które są następujące w Cloud Shell platformy Azure lub za pomocą programu PowerShell z komputera. Usługa Azure Cloud Shell to bezpłatna interaktywna powłoka. Udostępnia ona wstępnie zainstalowane i najczęściej używane narzędzia platformy Azure, które są skonfigurowane do użycia na koncie. Jeśli uruchamiasz program PowerShell z komputera, potrzebujesz modułu Azure PowerShell w wersji 1.0.0 lub nowszej. Uruchom Get-Module -ListAvailable Az polecenie na komputerze, aby znaleźć zainstalowaną wersję. Jeśli konieczne będzie uaktualnienie, zobacz Instalowanie modułu Azure PowerShell. Jeśli korzystasz z programu PowerShell lokalnie, musisz również uruchomić polecenie Connect-AzAccount , aby zalogować się do platformy Azure przy użyciu konta z wymaganymi uprawnieniami.

Uzyskaj obowiązujące trasy dla interfejsu sieciowego za pomocą polecenia Get-AzEffectiveRouteTable. Poniższy przykład pobiera obowiązujące trasy dla interfejsu sieciowego o nazwie myVMNic1, czyli w grupie zasobów o nazwie myResourceGroup:

Get-AzEffectiveRouteTable `
  -NetworkInterfaceName myVMNic1 `
  -ResourceGroupName myResourceGroup `
  | Format-Table

Aby zrozumieć informacje zwrócone w danych wyjściowych, zobacz Omówienie routingu. Dane wyjściowe są zwracane tylko wtedy, gdy maszyna wirtualna jest w stanie uruchomienia. Jeśli istnieje wiele interfejsów sieciowych dołączonych do maszyny wirtualnej, możesz przejrzeć obowiązujące trasy dla każdego interfejsu sieciowego. Ponieważ każdy interfejs sieciowy może znajdować się w innej podsieci, każdy interfejs sieciowy może mieć różne obowiązujące trasy. Jeśli nadal masz problem z komunikacją, zapoznaj się z dodatkową diagnostyką i zagadnieniami.

Jeśli nie znasz nazwy interfejsu sieciowego, ale znasz nazwę maszyny wirtualnej, do której jest dołączony interfejs sieciowy, następujące polecenia zwracają identyfikatory wszystkich interfejsów sieciowych dołączonych do maszyny wirtualnej:

$VM = Get-AzVM -Name myVM `
  -ResourceGroupName myResourceGroup
$VM.NetworkProfile

Otrzymasz dane wyjściowe podobne do następującego przykładu:

NetworkInterfaces
-----------------
{/subscriptions/<ID>/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/myVMNic1

W poprzednich danych wyjściowych nazwa interfejsu sieciowego to myVMNic1.

Diagnozowanie przy użyciu interfejsu wiersza polecenia platformy Azure

Możesz uruchomić następujące polecenia w usłudze Azure Cloud Shell lub uruchomić interfejs wiersza polecenia z komputera. Ten artykuł wymaga interfejsu wiersza polecenia platformy Azure w wersji 2.0.32 lub nowszej. Uruchom polecenie az --version, aby dowiedzieć się, jaka wersja jest zainstalowana. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure. Jeśli korzystasz z interfejsu wiersza polecenia platformy Azure lokalnie, musisz również uruchomić az login platformę Azure i zalogować się do platformy Azure przy użyciu konta z wymaganymi uprawnieniami.

Uzyskaj obowiązujące trasy dla interfejsu sieciowego za pomocą polecenia az network nic show-effective-route-table. Poniższy przykład pobiera obowiązujące trasy dla interfejsu sieciowego o nazwie myVMNic1 , który znajduje się w grupie zasobów o nazwie myResourceGroup:

az network nic show-effective-route-table \
  --name myVMNic1 \
  --resource-group myResourceGroup

Aby zrozumieć informacje zwrócone w danych wyjściowych, zobacz Omówienie routingu. Dane wyjściowe są zwracane tylko wtedy, gdy maszyna wirtualna jest w stanie uruchomienia. Jeśli istnieje wiele interfejsów sieciowych dołączonych do maszyny wirtualnej, możesz przejrzeć obowiązujące trasy dla każdego interfejsu sieciowego. Ponieważ każdy interfejs sieciowy może znajdować się w innej podsieci, każdy interfejs sieciowy może mieć różne obowiązujące trasy. Jeśli nadal masz problem z komunikacją, zapoznaj się z dodatkową diagnostyką i zagadnieniami.

Jeśli nie znasz nazwy interfejsu sieciowego, ale znasz nazwę maszyny wirtualnej, do której jest dołączony interfejs sieciowy, następujące polecenia zwracają identyfikatory wszystkich interfejsów sieciowych dołączonych do maszyny wirtualnej:

az vm show \
  --name myVM \
  --resource-group myResourceGroup

Rozwiązywanie problemu

Rozwiązywanie problemów z routingiem zwykle składa się z następujących elementów:

  • Dodanie trasy niestandardowej w celu zastąpienia jednej z domyślnych tras platformy Azure. Dowiedz się, jak dodać trasę niestandardową.
  • Zmień lub usuń trasę niestandardową, która może spowodować przekierowanie do niepożądanej lokalizacji. Dowiedz się, jak zmienić lub usunąć trasę niestandardową.
  • Upewnij się, że tabela tras zawierająca zdefiniowane trasy niestandardowe jest skojarzona z podsiecią, w której znajduje się interfejs sieciowy. Dowiedz się, jak skojarzyć tabelę tras z podsiecią.
  • Zapewnienie, że wdrożone urządzenia, takie jak brama sieci VPN platformy Azure lub wdrożone urządzenia wirtualne sieci, są obsługiwane. Użyj możliwości diagnostyki sieci VPN Network Watcher, aby określić wszelkie problemy z bramą sieci VPN platformy Azure.

Jeśli nadal występują problemy z komunikacją, zobacz Zagadnienia i Dodatkowa diagnostyka.

Zagadnienia do rozważenia

Podczas rozwiązywania problemów z komunikacją należy wziąć pod uwagę następujące kwestie:

  • Routing jest oparty na najdłuższym dopasowaniu prefiksu (LPM) między trasami, które zostały zdefiniowane, protokół BGP (Border Gateway Protocol) i trasy systemowe. Jeśli istnieje więcej niż jedna trasa z tym samym dopasowaniem LPM, trasa jest wybierana na podstawie jego pochodzenia w kolejności wymienionej w przeglądzie routingu. Dzięki efektywnym trasom można zobaczyć tylko obowiązujące trasy, które są zgodne z LPM, na podstawie wszystkich dostępnych tras. Zobaczenie, jak trasy są oceniane dla interfejsu sieciowego, znacznie ułatwia rozwiązywanie problemów z określonymi trasami, które mogą mieć wpływ na komunikację z maszyny wirtualnej.
  • Jeśli zdefiniowano trasy niestandardowe do wirtualnego urządzenia sieciowego (WUS), z urządzeniem wirtualnym jako typem następnego przeskoku, upewnij się, że przekazywanie adresów IP jest włączone w urządzeniu WUS odbierającego ruch lub pakiety zostaną porzucone. Dowiedz się więcej o włączaniu przekazywania adresów IP dla interfejsu sieciowego. Ponadto system operacyjny lub aplikacja w urządzeniu WUS musi być również w stanie przekazywać ruch sieciowy i być skonfigurowany do tego celu.
  • Jeśli utworzono trasę do 0.0.0.0.0/0, cały ruch internetowy wychodzący jest kierowany do następnego przeskoku określonego, takiego jak urządzenie WUS lub brama sieci VPN. Tworzenie takiej trasy jest często określane jako wymuszone tunelowanie. Połączenia zdalne przy użyciu protokołów RDP lub SSH z Internetu do maszyny wirtualnej mogą nie działać z tą trasą, w zależności od tego, jak następny przeskok obsługuje ruch. Można włączyć tunelowanie wymuszone:
    • W przypadku korzystania z sieci VPN typu lokacja-lokacja utwórz trasę z typem następnego przeskoku VPN Gateway. Dowiedz się więcej na temat konfigurowania wymuszonego tunelowania.
    • Jeśli trasa domyślna 0.0.0.0/0 jest anonsowana za pośrednictwem protokołu BGP za pośrednictwem bramy sieci wirtualnej podczas korzystania z sieci VPN typu lokacja-lokacja lub obwodu usługi ExpressRoute. Dowiedz się więcej o korzystaniu z protokołu BGP z siecią VPN typu lokacja-lokacja lub usługą ExpressRoute.
  • Aby ruch komunikacji równorzędnej sieci wirtualnej działał poprawnie, trasa systemowa z typem następnego przeskoku komunikacji równorzędnej sieci wirtualnych musi istnieć dla zakresu prefiksów równorzędnej sieci wirtualnej. Jeśli taka trasa nie istnieje, a link komunikacji równorzędnej sieci wirtualnej to Połączono:
  • Chociaż platforma Azure przypisuje domyślne trasy do każdego interfejsu sieciowego platformy Azure, jeśli masz wiele interfejsów sieciowych dołączonych do maszyny wirtualnej, tylko podstawowy interfejs sieciowy ma przypisaną trasę domyślną (0.0.0.0/0) lub bramę w systemie operacyjnym maszyny wirtualnej. Dowiedz się, jak utworzyć trasę domyślną dla pomocniczych interfejsów sieciowych dołączonych do maszyny wirtualnej z systemem Windows lub Linux. Dowiedz się więcej na temat podstawowych i pomocniczych interfejsów sieciowych.

Dodatkowa diagnostyka

  • Aby uruchomić szybki test, aby określić typ następnego przeskoku dla ruchu kierowanego do lokalizacji, użyj możliwości następnego przeskoku platformy Azure Network Watcher. Następny przeskok informuje o tym, jaki jest typ następnego przeskoku dla ruchu kierowanego do określonej lokalizacji.
  • Jeśli nie ma tras powodujących niepowodzenie komunikacji sieciowej maszyny wirtualnej, problem może być spowodowany oprogramowaniem zapory działającym w systemie operacyjnym maszyny wirtualnej
  • Jeśli wymusisz tunelowanie ruchu do urządzenia lokalnego za pośrednictwem bramy sieci VPN lub urządzenia WUS, być może nie możesz nawiązać połączenia z maszyną wirtualną z Internetu, w zależności od tego, jak skonfigurowano routing dla urządzeń. Upewnij się, że routing skonfigurowany dla urządzenia kieruje ruch do publicznego lub prywatnego adresu IP maszyny wirtualnej.
  • Użyj możliwości rozwiązywania problemów z połączeniem Network Watcher, aby określić routing, filtrowanie i przyczyny problemów z komunikacją wychodzącą.

Następne kroki