Diagnozowanie problemu z routingiem na maszynie wirtualnej

Z tego artykułu 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. Domyślne trasy platformy Azure można zastąpić, definiując trasy w tabeli tras, a następnie kojarząc tabelę tras z podsiecią. Kombinacja tworzonych tras, 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 Routing.

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 kolejnych 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 z tego artykułu. 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 odpowiednio 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 jest 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ę. Wyświetlanie interfejsów sieciowych

  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 : Wyświetlanie obowiązujących tras

    Jeśli do maszyny wirtualnej jest dołączonych wiele interfejsów sieciowych, 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ą trasami domyślnymi 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 zostać włączone dla sieci wirtualnej, na przykład komunikacji równorzędnej z inną siecią wirtualną lub połączonej 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 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

Zalecamy korzystanie z modułu Azure Az programu PowerShell do interakcji z platformą Azure. Zobacz Instalowanie programu Azure PowerShell, aby rozpocząć. 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ć następujące polecenia w usłudze Azure Cloud Shell 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 polecenie Get-Module -ListAvailable Az na komputerze, aby znaleźć zainstalowaną wersję. Jeśli konieczne będzie uaktualnienie, zobacz Instalowanie modułu Azure PowerShell. Jeśli używasz programu PowerShell lokalnie, musisz również uruchomić polecenie Connect-AzAccount , aby zalogować się do platformy Azure przy użyciu konta z niezbędnymi 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, który znajduje się 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 do maszyny wirtualnej jest dołączonych wiele interfejsów sieciowych, 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ą diagnozą 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 uruchamiać 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 używasz 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 niezbędnymi 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 do maszyny wirtualnej jest dołączonych wiele interfejsów sieciowych, 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ą diagnozą 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 powodować routing 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 wirtualne urządzenia sieciowe, są sprawne. 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 zdefiniowanymi, protokołem BGP (Border Gateway Protocol) i trasami systemowym. 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. W przypadku obowiązujących tras 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 typ następnego przeskoku, upewnij się, że przekazywanie IP jest włączone na urządzeniu WUS odbierającego ruch lub pakiety są porzucane. 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 adresu 0.0.0.0/0, cały wychodzący ruch internetowy jest kierowany do określonego następnego przeskoku, 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 sposobu obsługi ruchu przez następny przeskok. Można włączyć wymuszone tunelowanie:
    • W przypadku korzystania z sieci VPN typu lokacja-lokacja przez utworzenie trasy z typem następnego przeskoku VPN Gateway. Dowiedz się więcej o konfigurowaniu 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 w przypadku 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 wirtualnych działał prawidłowo, musi istnieć trasa systemowa z typem następnego przeskoku komunikacji równorzędnej sieci wirtualnych 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/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 o podstawowych i pomocniczych interfejsach sieciowych.

Dodatkowa diagnostyka

  • Aby uruchomić szybki test w celu określenia typu następnego przeskoku dla ruchu kierowanego do lokalizacji, użyj możliwości Następnego przeskoku usługi Azure Network Watcher. Następny przeskok informuje, 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 wymuszasz tunelowanie ruchu do urządzenia lokalnego za pośrednictwem bramy sieci VPN lub urządzenia WUS, możesz nie być w stanie 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.
  • Skorzystaj z 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ą w systemie operacyjnym.

Następne kroki