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


Диагностика проблемы с маршрутизацией сети виртуальной машины с помощью 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это Internet, а RouteTableIdэто System Route. Этот результат дает вам понять, что существует действительный маршрут к пункту назначения.

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

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

Возвращаемые выходные данные информируют вас о том, что None — это NextHopType, и что RouteTableId также является System Route. Этот результат позволяет вам понять, что, хотя существует допустимый системный маршрут до пункта назначения, нет следующего узла для маршрутизации трафика к пункту назначения.

Просмотр деталей маршрута

Чтобы продолжить анализ маршрутизации, просмотрите эффективные маршруты для сетевого интерфейса с помощью команды 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        {}              

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

Очистите ресурсы

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

Remove-AzResourceGroup -Name myResourceGroup -Force

Дальнейшие шаги

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

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