Диагностика проблем с маршрутизацией виртуальной машиныDiagnose a virtual machine routing problem

В этой статье вы узнаете, как диагностировать проблемы с маршрутизацией, просмотрев действующие маршруты для сетевого интерфейса в виртуальной машине.In this article, you learn how to diagnose a routing problem by viewing the routes that are effective for a network interface in a virtual machine (VM). Azure создает несколько маршрутов по умолчанию для каждой подсети в виртуальной сети.Azure creates several default routes for each virtual network subnet. Маршруты по умолчанию Azure можно переопределить, определив маршруты в таблице маршрутов, а затем связав эту таблицу маршрутов с подсетью.You can override Azure's default routes by defining routes in a route table, and then associating the route table to a subnet. Созданные вами маршруты, маршруты по умолчанию Azure и все маршруты, распространяемые из локальной сети через VPN-шлюз Azure (если виртуальная сеть подключена к локальной сети) через протокол BGP, являются действующими маршрутами для всех сетевых интерфейсов в подсети.The combination of routes you create, Azure's default routes, and any routes propagated from your on-premises network through an Azure VPN gateway (if your virtual network is connected to your on-premises network) via the border gateway protocol (BGP), are the effective routes for all network interfaces in a subnet. Если вам неизвестны приведенные здесь понятия, ознакомьтесь с общими сведениями о виртуальных сетях, сетевом интерфейсе и маршрутизации.If you're not familiar with virtual network, network interface, or routing concepts, see Virtual network overview, Network interface, and Routing overview.

СценарийScenario

При попытке подключиться к виртуальной машине происходит сбой.You attempt to connect to a VM, but the connection fails. Чтобы определить, почему не удается подключиться к виртуальной машине, вы можете просмотреть действующие маршруты для сетевого интерфейса с помощью портала Azure, PowerShell или Azure CLI.To determine why you can't connect to the VM, you can view the effective routes for a network interface using the Azure portal, PowerShell, or the Azure CLI.

Чтобы выполнить приведенные ниже инструкции, требуется виртуальная машина, для которой будут просматриваться действующие маршруты.The steps that follow assume you have an existing VM to view the effective routes for. Если у вас ее нет, разверните виртуальную машину Linux или Windows для выполнения задач, описанных в этой статье.If you don't have an existing VM, first deploy a Linux or Windows VM to complete the tasks in this article with. Примеры в этой статье относятся к виртуальной машине myVM с сетевым интерфейсом myVMVMNic.The examples in this article are for a VM named myVM with a network interface named myVMVMNic. Виртуальная машина и сетевой интерфейс находятся в группе ресурсов myResourceGroup в регионе Восточная часть США.The VM and network interface are in a resource group named myResourceGroup, and are in the East US region. Измените значения в инструкциях, чтобы они соответствовали значениям для виртуальной машины, проблема с которой диагностируется.Change the values in the steps, as appropriate, for the VM you are diagnosing the problem for.

Диагностика с помощью портала AzureDiagnose using Azure portal

  1. Войдите на портал Azure с помощью учетной записи Azure, которая предоставляет необходимые разрешения.Log into the Azure portal with an Azure account that has the necessary permissions.

  2. В верхней части окна портала Azure введите в поле поиска имя запущенной виртуальной машины.At the top of the Azure portal, enter the name of a VM that is in the running state, in the search box. Когда в результатах поиска появится имя виртуальной машины, щелкните его.When the name of the VM appears in the search results, select it.

  3. Выберите Диагностика и решение проблем, а затем в разделе Рекомендуемые действия щелкните фактические маршруты в пункте 7, как показано на следующем рисунке.Select Diagnose and solve problems, and then under Recommended steps, select effective routes in item 7, as shown in the following picture:

    Просмотр действующих маршрутов

  4. Отобразятся действующие маршруты для сетевого интерфейса myVMVMNic, как показано ниже.The effective routes for a network interface named myVMVMNic are shown, in the following picture:

    Просмотр действующих маршрутов

    Если к виртуальной машине подключено несколько сетевых интерфейсов, можно просмотреть действующие маршруты для любого из них, выбрав соответствующий сетевой интерфейс.If there are multiple network interfaces attached to the VM, you can view the effective routes for any network interface by selecting it. Так как сетевые интерфейсы могут находиться в разных подсетях, у них могут быть разные действующие маршруты.Since each network interface can be in a different subnet, each network interface can have different effective routes.

    В примере, показанном на предыдущем рисунке, перечислены маршруты по умолчанию, создаваемые Azure для каждой подсети.In the example shown in the previous picture, the listed routes are default routes that Azure creates for each subnet. Ваш список содержит по крайней мере эти маршруты. Он может также содержать дополнительные маршруты, в зависимости от включенных возможностей виртуальной сети: пиринга с другой виртуальной сетью или подключения к локальной сети через VPN-шлюз Azure.Your list has at least these routes, but may have additional routes, depending on capabilities you may have enabled for your virtual network such as it being peered with another virtual network or connected to your on-premises network through an Azure VPN gateway. Дополнительные сведения о каждом этом маршруте и других маршрутах, которые могут отображаться для сетевого интерфейса, приведены в разделе Маршрутизация трафика в виртуальной сети.To learn more about each of the routes, and other routes you may see for your network interface, see Virtual network traffic routing. Если в списке большое количество маршрутов, удобно будет щелкнуть Скачать, чтобы скачать CSV-файл со списком маршрутов.If your list has a large number of routes, you may find it easier to select Download, to download a .csv file with the list of routes.

На предыдущем шаге мы просмотрели действующие маршруты с помощью виртуальной машины. Но их можно просмотреть и другими способами:Though effective routes were viewed through the VM in the previous steps, you can also view effective routes through an:

Диагностика с помощью PowerShellDiagnose using PowerShell

Примечание

Эта статья была изменена и теперь содержит сведения о новом модуле Az для Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Вы по-прежнему можете использовать модуль AzureRM, исправления ошибок для которого будут продолжать выпускаться как минимум до декабря 2020 г.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Дополнительные сведения о совместимости модуля Az с AzureRM см. в статье Introducing the new Azure PowerShell Az module (Знакомство с новым модулем Az для Azure PowerShell).To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Инструкции по установке модуля Az см. в статье об установке Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

Вы можете выполнить приведенные ниже команды в Azure Cloud Shell или с помощью PowerShell на своем компьютере.You can run the commands that follow in the Azure Cloud Shell, or by running PowerShell from your computer. Azure Cloud Shell — это бесплатная интерактивная оболочка.The Azure Cloud Shell is a free interactive shell. Она включает предварительно установленные общие инструменты Azure и настроена для использования с вашей учетной записью.It has common Azure tools preinstalled and configured to use with your account. Если вы запустите PowerShell на компьютере, требуется модуль Azure PowerShell версии 1.0.0 или более поздней версии.If you run PowerShell from your computer, you need the Azure PowerShell module, version 1.0.0 or later. Выполните Get-Module -ListAvailable Az на компьютере, чтобы получить сведения об установленной версии.Run Get-Module -ListAvailable Az on your computer, to find the installed version. Если вам необходимо выполнить обновление, ознакомьтесь со статьей, посвященной установке модуля Azure PowerShell.If you need to upgrade, see Install Azure PowerShell module. Если PowerShell работает локально, необходимо также выполнить Connect-AzAccount, чтобы войти в Azure с учетной записью, предоставляющей необходимые разрешения.If you are running PowerShell locally, you also need to run Connect-AzAccount to log into Azure with an account that has the necessary permissions.

Получить действующие маршруты для сетевого интерфейса с помощью Get-AzEffectiveRouteTable.Get the effective routes for a network interface with Get-AzEffectiveRouteTable. В следующем примере извлекаются действующие маршруты для сетевого интерфейса myVMVMNic, который находится в группе ресурсов myResourceGroup.The following example gets the effective routes for a network interface named myVMVMNic, that is in a resource group named myResourceGroup:

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

Чтобы понять сведения, возвращенные в выходных данных, ознакомьтесь с разделом Маршрутизация трафика в виртуальной сети.To understand the information returned in the output, see Routing overview. Выходные данные возвращаются только в том случае, если виртуальная машина запущена.Output is only returned if the VM is in the running state. Если к виртуальной машине подключено несколько сетевых интерфейсов, можно просмотреть действующие маршруты для каждого из них.If there are multiple network interfaces attached to the VM, you can review the effective routes for each network interface. Так как сетевые интерфейсы могут находиться в разных подсетях, у них могут быть разные действующие маршруты.Since each network interface can be in a different subnet, each network interface can have different effective routes. Если у вас по-прежнему возникают проблемы с подключением, прочитайте разделы Дополнительная диагностика и Рекомендации.If you're still having a communication problem, see additional diagnosis and considerations.

Если вы не знаете имя сетевого интерфейса, но знаете имя виртуальной машины, к которой он подключен, вы можете получить идентификаторы всех сетевых интерфейсов, подключенных к виртуальной машине. Для этого выполните следующие команды.If you don't know the name of a network interface, but do know the name of the VM the network interface is attached to, the following commands return the IDs of all network interfaces attached to a VM:

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

Вы получите примерно такой результат:You receive output similar to the following example:

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

В предыдущих выходных данных имя сетевого интерфейса было myVMVMNic.In the previous output, the network interface name is myVMVMNic.

Диагностика с помощью Azure CLIDiagnose using Azure CLI

Вы можете выполнить приведенные ниже команды в Azure Cloud Shell или с помощью интерфейса командной строки на своем компьютере.You can run the commands that follow in the Azure Cloud Shell, or by running the CLI from your computer. Для этой статьи требуется Azure CLI 2.0.32 или более поздней версии.This article requires the Azure CLI version 2.0.32 or later. Выполните командлет az --version, чтобы узнать установленную версию.Run az --version to find the installed version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.If you need to install or upgrade, see Install Azure CLI. Если Azure CLI работает локально, необходимо также выполнить az login и войти в Azure с учетной записью, предоставляющей необходимые разрешения.If you are running the Azure CLI locally, you also need to run az login and log into Azure with an account that has the necessary permissions.

Получите действующие маршруты для сетевого интерфейса с помощью команды az network nic show-effective-route-table.Get the effective routes for a network interface with az network nic show-effective-route-table. В следующем примере извлекаются действующие маршруты для сетевого интерфейса myVMVMNic, который находится в группе ресурсов myResourceGroup.The following example gets the effective routes for a network interface named myVMVMNic that is in a resource group named myResourceGroup:

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

Чтобы понять сведения, возвращенные в выходных данных, ознакомьтесь с разделом Маршрутизация трафика в виртуальной сети.To understand the information returned in the output, see Routing overview. Выходные данные возвращаются только в том случае, если виртуальная машина запущена.Output is only returned if the VM is in the running state. Если к виртуальной машине подключено несколько сетевых интерфейсов, можно просмотреть действующие маршруты для каждого из них.If there are multiple network interfaces attached to the VM, you can review the effective routes for each network interface. Так как сетевые интерфейсы могут находиться в разных подсетях, у них могут быть разные действующие маршруты.Since each network interface can be in a different subnet, each network interface can have different effective routes. Если у вас по-прежнему возникают проблемы с подключением, прочитайте разделы Дополнительная диагностика и Рекомендации.If you're still having a communication problem, see additional diagnosis and considerations.

Если вы не знаете имя сетевого интерфейса, но знаете имя виртуальной машины, к которой он подключен, вы можете получить идентификаторы всех сетевых интерфейсов, подключенных к виртуальной машине. Для этого выполните следующие команды.If you don't know the name of a network interface, but do know the name of the VM the network interface is attached to, the following commands return the IDs of all network interfaces attached to a VM:

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

Устранение проблемыResolve a problem

Устранение проблем с маршрутизацией обычно включает в себя следующие действия.Resolving routing problems typically consists of:

  • Добавление настраиваемого маршрута для переопределения маршрутов по умолчанию Azure.Adding a custom route to override one of Azure's default routes. Узнайте, как добавить настраиваемый маршрут.Learn how to add a custom route.
  • Изменение или удаление настраиваемого маршрута, который может привести к маршрутизации в нежелательное расположение.Change or remove a custom route that may cause routing to an undesired location. Узнайте, как изменить или удалить настраиваемый маршрут.Learn how to change or delete a custom route.
  • Обеспечение привязки таблицы маршрутов, которая содержит определенные вами настраиваемые маршруты, к подсети сетевого интерфейса.Ensuring that the route table that contains any custom routes you've defined is associated to the subnet the network interface is in. Узнайте, как связать таблицу маршрутов с подсетью.Learn how to associate a route table to a subnet.
  • Обеспечение работоспособности устройств, таких как развернутые вами VPN-шлюз Azure или сетевые виртуальные модули.Ensuring that devices such as Azure VPN gateway or network virtual appliances you've deployed are operable. Используйте возможности диагностики VPN в службе "Наблюдатель за сетями", чтобы выявить проблемы с VPN-шлюзом Azure.Use the VPN diagnostics capability of Network Watcher to determine any problems with an Azure VPN gateway.

Если у вас по-прежнему возникают проблемы с подключениями, ознакомьтесь с разделами Рекомендации и "Дополнительная диагностика".If you're still having communication problems, see Considerations and Additional diagnosis.

РекомендацииConsiderations

При устранении проблем с подключениями необходимо учитывать следующие аспекты.Consider the following points when troubleshooting communication problems:

  • Маршрутизация основана на совпадении наиболее длинного префикса (LPM) среди определенных вами маршрутов, протоколе BGP и системных маршрутах.Routing is based on longest prefix match (LPM) among routes that you've defined, border gateway protocol (BGP), and system routes. При наличии более одного маршрута с совпадающими значениями LPM маршрут выбирается по источнику в порядке, указанном в разделе Маршрутизация трафика в виртуальной сети.If there is more than one route with the same LPM match, then a route is selected based on its origin in the order listed in Routing overview. Функция действующих маршрутов позволяет просмотреть только действующие маршруты, выделенные из доступных маршрутов при помощи совпадающего значения LPM.With effective routes, you can only see effective routes that are an LPM match, based on all the available routes. Отображение способа вычисления маршрутов для сетевого интерфейса сильно упрощает устранение неполадок с определенными маршрутами, которые могут влиять на подключения из виртуальной машины.Seeing how the routes are evaluated for a network interface makes it a lot easier to troubleshoot specific routes that may be impacting communication from your VM.
  • Если вы определили настраиваемые маршруты к сетевому виртуальному модулю и при этом типом следующего прыжка является Виртуальный модуль, обязательно включите IP-пересылку на принимающем трафик сетевом виртуальном модуле, иначе пакеты будут удаляться.If you've defined custom routes to a network virtual appliance (NVA), with Virtual Appliance as the next hop type, ensure that IP forwarding is enabled on the NVA receiving the traffic, or packets are dropped. Узнайте больше о способах включения IP-пересылки для сетевого интерфейса.Learn more about enabling IP forwarding for a network interface. Кроме того, операционная система или приложение в сетевом виртуальном модуле должны иметь возможность пересылать трафик и поддерживать настройку этой функции.Additionally, the operating system, or application within the NVA must also be able to forward network traffic and be configured to do so.
  • Если вы создали маршрут 0.0.0.0/0, то весь исходящий трафик Интернета направляется по указанному вами следующему прыжку, например, в сетевой виртуальный модуль или VPN-шлюз.If you've created a route to 0.0.0.0/0, all outbound internet traffic is routed to the next hop you specified, such as to an NVA or VPN gateway. Создание таких маршрутов часто называют принудительным туннелированием.Creating such a route is often referred to as forced tunneling. Удаленные подключения по протоколу RDP или SSH из Интернета к вашей виртуальной машине могут не работать с этим маршрутом. Это зависит от обработки трафика при выполнении следующего прыжка.Remote connections using the RDP or SSH protocols from the internet to your VM may not work with this route, depending on how the next hop handles the traffic. Принудительное туннелирование можно включить:Forced-tunneling can be enabled:
    • Если используется VPN типа "сеть — сеть" путем создания маршрута с типом следующего прыжка VPN-шлюз.When using site-to-site VPN, by creating a route with a next hop type of VPN Gateway. Узнайте больше о настройке принудительного туннелирования.Learn more about configuring forced tunneling.
    • Если маршрут 0.0.0.0/0 (маршрут по умолчанию) объявляется по протоколу BGP через шлюз виртуальной сети при использовании VPN типа "сеть — сеть" или канала ExpressRoute.If a 0.0.0.0/0 (default route) is advertised over BGP through a virtual network gateway when using a site-to-site VPN, or ExpressRoute circuit. Узнайте больше об использовании протокола BGP с VPN типа "сеть — сеть" или ExpressRoute.Learn more about using BGP with a site-to-site VPN or ExpressRoute.
  • Для правильной работы пирингового трафика виртуальной сети системный маршрут с типом следующего прыжка Пиринг VNet должен действовать в диапазоне префиксов пиринговой виртуальной сети.For virtual network peering traffic to work correctly, a system route with a next hop type of VNet Peering must exist for the peered virtual network's prefix range. Если такого маршрута не существует и пиринговая связь виртуальной сети подключена, возможны два сценария.If such a route doesn't exist, and the virtual network peering link is Connected:
  • Хотя Azure назначает маршруты по умолчанию каждому сетевому интерфейсу Azure, если к виртуальной машине подключено несколько сетевых интерфейсов, то маршрут по умолчанию (0.0.0.0/0) назначается только основному сетевому интерфейсу или шлюзу в операционной системе виртуальной машины.Though Azure assigns default routes to each Azure network interface, if you have multiple network interfaces attached to the VM, only the primary network interface is assigned a default route (0.0.0.0/0), or gateway, within the VM's operating system. Узнайте, как создать маршрут по умолчанию для дополнительных сетевых интерфейсов, подключенных к виртуальной машине Windows или Linux.Learn how to create a default route for secondary network interfaces attached to a Windows or Linux VM. Узнайте больше об основных и дополнительных сетевых интерфейсах.Learn more about primary and secondary network interfaces.

Дополнительная диагностикаAdditional diagnosis

  • Чтобы выполнить быстрый тест для определения типа следующего прыжка для трафика, предназначенного для определенного расположения, используйте функцию следующего прыжка службы "Наблюдатель за сетями Azure".To run a quick test to determine the next hop type for traffic destined to a location, use the Next hop capability of Azure Network Watcher. С ее помощью можно узнать тип следующего прыжка для трафика, предназначенного для указанного расположения.Next hop tells you what the next hop type is for traffic destined to a specified location.
  • Если маршруты, вызывающие сбой работы сети виртуальной машины, отсутствуют, возможно, проблема возникла из-за программного обеспечения брандмауэра, запущенного в операционной системе виртуальной машины.If there are no routes causing a VM's network communication to fail, the problem may be due to firewall software running within the VM's operating system
  • Если вы используете принудительное туннелирование трафика на локальное устройство через VPN-шлюз или сетевой виртуальный модуль, может отсутствовать возможность подключения к виртуальной машине из Интернета в зависимости от настройки маршрутизации для этих устройств.If you are force tunneling traffic to an on-premises device through a VPN gateway, or NVA, you may not be able to connect to a VM from the internet, depending on how you've configured routing for the devices. Убедитесь, что маршрутизация для этих устройств направляет трафик на общедоступный или частный IP-адрес виртуальной машины.Confirm that the routing you have configured for the device routes traffic to either a public or private IP address for the VM.
  • Используйте функцию устранения неполадок подключения службы "Наблюдатель за сетями", чтобы определить параметры маршрутизации, фильтрации и ОС, вызывающие проблему с подключением.Use the connection troubleshoot capability of Network Watcher to determine routing, filtering, and in-OS causes of outbound communication problems.

Дальнейшие действияNext steps