Поделиться через


Диагностика проблемы маршрутизации сети виртуальных машин с помощью PowerShell

В этой статье вы узнаете, как использовать средство следующего прыжка Azure Наблюдатель за сетями для устранения неполадок и диагностики проблемы маршрутизации виртуальной машины, которая препятствует правильному взаимодействию с другими ресурсами.

Необходимые компоненты

  • Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .

  • Azure Cloud Shell или Azure PowerShell.

    Действия, описанные в этой статье, выполняют командлеты Azure PowerShell в интерактивном режиме в Azure Cloud Shell. Чтобы запустить командлеты в Cloud Shell, выберите Open Cloud Shell в правом верхнем углу блока кода. Выберите "Копировать", чтобы скопировать код, а затем вставьте его в Cloud Shell, чтобы запустить его. Вы также можете запустить Cloud Shell из портал Azure.

    Вы также можете установить Azure PowerShell локально для выполнения командлетов. Запустите Get-Module -ListAvailable Az , чтобы найти установленную версию. При локальном запуске PowerShell войдите в Azure с помощью командлета Connect-AzAccount .

Создание виртуальной машины

Прежде чем создать виртуальную машину, создайте группу ресурсов, которая будет содержать эту виртуальную машину. Создайте группу ресурсов с помощью командлета New-AzResourceGroup. В следующем примере создается группа ресурсов с именем myResourceGroup в расположении eastus.

New-AzResourceGroup -Name myResourceGroup -Location EastUS

Создайте виртуальную машину с помощью команды New-AzVM. При выполнении этого шага будут запрошены учетные данные. В качестве вводимых значений указываются имя пользователя и пароль для виртуальной машины.

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

Создание виртуальной машины занимает несколько минут. Не приступайте к дальнейшим инструкциям, пока не завершится создание виртуальной машины и PowerShell не вернет выходные данные.

Тестирование взаимодействия по сети

Чтобы проверить сетевое подключение с помощью Наблюдателя за сетями, сначала включите Наблюдатель за сетями в регионе, где размещается тестируемая виртуальная машина. Затем примените в Наблюдателе за сетями возможность следующего прыжка.

Включение Наблюдателя за сетями

Если Наблюдатель за сетями уже включен в регионе "Восточная часть США", получите его экземпляр с помощью командлета Get-AzNetworkWatcher. В следующем примере извлекается существующий Наблюдатель за сетями с именем NetworkWatcher_eastus, размещенный в группе ресурсов NetworkWatcherRG:

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

Если Наблюдатель за сетями еще не включен в регионе "Восточная часть США", создайте его с помощью командлета New-AzNetworkWatcher:

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

Использование следующего прыжка

Azure автоматически создает маршруты к пунктам назначения по умолчанию. Вы можете создать настраиваемые маршруты, которые переопределяют маршруты по умолчанию. В некоторых случаях настраиваемые маршруты могут привести к сбою связи. Чтобы проверить маршрутизацию из виртуальной машины, выполните команду Get-AzNetworkWatcherNextHop для определения следующего прыжка маршрутизации при поступлении трафика на определенный адрес.

Проверьте исходящее подключение виртуальной машины по любому из IP-адресов сайта www.bing.com:

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

Через несколько секунд вы получите результат, где указано, что nextHopType имеет значение Интернет, а routeTableIdСистемный маршрут. Из этого результата вы узнаете, что существует допустимый системный маршрут к назначению.

Проверьте исходящее подключение виртуальной машины к адресу 172.31.0.100:

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

Возвращенный результат сообщает, что nextHopType имеет значение Нет, а routeTableIdСистемный маршрут. Так мы узнаем, что, хотя есть допустимый системный маршрут к месту назначения, следующий прыжок для маршрутизации трафика в пункт назначения отсутствует.

Просмотр сведений о маршруте

Чтобы проанализировать маршрутизацию дальше, просмотрите действующие маршруты для сетевого интерфейса, выполнив команду Get-AzEffectiveRouteTable:

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

Возвращаются выходные данные, содержащие следующий текст:

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        {}              

Как можно увидеть в предыдущих выходных данных, маршрут с префиксом адреса0.0.0.0/0 перенаправляет весь трафик, не предназначенный для адресов в пределах префиксов адресов другого маршрута, с помощью прыжка Интернета. Кроме того, как можно увидеть в выходных данных, хотя есть маршрут по умолчанию к префиксу 172.16.0.0/12, который включает адрес 172.31.0.100, nextHopType имеет значение Нет. Azure создает маршрут по умолчанию 172.16.0.0/12, но не указывает тип следующего прыжка, пока для этого не возникнут основания. Если, например, добавить диапазон адресов 172.16.0.0/12 в адресное пространство виртуальной сети, Azure изменит nextHopType для маршрута на Виртуальная сеть. Затем проверка отобразит Виртуальная сеть в качестве значения nextHopType.

Очистка ресурсов

Вы можете удалить ненужную группу ресурсов и все содержащиеся в ней ресурсы с помощью командлета Remove-AzResourceGroup:

Remove-AzResourceGroup -Name myResourceGroup -Force

Следующие шаги

В этой статье вы создали виртуальную машину и выполнили диагностику сетевой маршрутизации из виртуальной машины. Вы узнали, что Azure создает несколько маршрутов по умолчанию и тестирует маршрутизацию в два разные пункта назначения. Дополнительные сведения см. в статье Маршрутизация трафика в виртуальной сети и разделе Создание маршрута.

Для исходящих подключений виртуальной машины можно определить задержку, разрешенный и запрещенный сетевой трафик между виртуальной машиной и конечной точкой с помощью функции устранения неполадок с подключениями Наблюдателя за сетями. Вы можете отслеживать обмен данными между виртуальной машиной и конечной точкой, например IP-адресом или URL-адресом с течением времени с помощью возможности монитора подключения Наблюдатель за сетями. Дополнительные сведения см. в разделе "Мониторинг сетевого подключения".