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 domyślnych tras 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 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 witryny Azure Portal
Zaloguj się do witryny Azure Portal przy użyciu konta platformy Azure, które ma niezbędne uprawnienia.
W górnej części witryny 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ą.
W obszarze Ustawienia po lewej stronie wybierz pozycję Sieć i przejdź do zasobu interfejsu sieciowego, wybierając jego nazwę.
Po lewej stronie wybierz pozycję Obowiązujące trasy. Na poniższej ilustracji przedstawiono obowiązujące trasy dla interfejsu sieciowego o nazwie myVMNic1 :
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 efektywne 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 być włączone dla sieci wirtualnej, takich 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 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żesz również wyświetlić obowiązujące trasy za pośrednictwem:
- Pojedynczy interfejs sieciowy: dowiedz się, jak wyświetlić interfejs sieciowy.
- Pojedyncza tabela tras: dowiedz się, jak wyświetlić tabelę tras.
Diagnozowanie przy użyciu programu PowerShell
Uwaga
Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. Aby rozpocząć, 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ć następujące polecenia w usłudze Azure Cloud Shell lub uruchomić program 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. W przypadku uruchamiania programu PowerShell z komputera potrzebny jest moduł 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 efektywne 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 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, które ma niezbędne uprawnienia.
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 efektywne 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 tras domyślnych 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 urządzenia wirtualne sieci, są obsługiwane. Użyj możliwości diagnostyki sieci VPN usługi 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.
Kwestie wymagające 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 typem następnego przeskoku, upewnij się, że przekazywanie IP jest włączone w urządzeniu WUS odbierającego ruch lub pakiety są porzucane. Dowiedz się więcej na temat włączania 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, 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 tego, jak następny przeskok obsługuje ruch. Wymuszone tunelowanie można włączyć:
- W przypadku korzystania z sieci VPN typu lokacja-lokacja należy utworzyć trasę z typem następnego przeskoku usługi 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 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 wirtualnych działał prawidłowo, 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:
- Poczekaj kilka sekund i spróbuj ponownie. Jeśli jest to nowo ustanowione łącze komunikacji równorzędnej, czasami propagowanie tras do wszystkich interfejsów sieciowych w podsieci trwa od czasu do czasu. Aby dowiedzieć się więcej na temat komunikacji równorzędnej sieci wirtualnych, zobacz Omówienie komunikacji równorzędnej sieci wirtualnych i zarządzanie komunikacją równorzędną sieci wirtualnych.
- Reguły sieciowej grupy zabezpieczeń mogą mieć wpływ na komunikację. Aby uzyskać więcej informacji, zobacz Diagnozowanie problemu z filtrowaniem ruchu sieciowego maszyny wirtualnej.
- 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 funkcji Następny przeskok 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 przez oprogramowanie zapory działające w systemie operacyjnym maszyny wirtualnej
- Jeśli wymusisz 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 usługi Network Watcher, aby określić routing, filtrowanie i przyczyny problemów z komunikacją wychodzącą w systemie operacyjnym.
Następne kroki
- Dowiedz się więcej o wszystkich zadaniach, właściwościach i ustawieniach tabeli tras i tras.
- Dowiedz się więcej o wszystkich typach następnego przeskoku, trasach systemowych i sposobach wybierania trasy przez platformę Azure.