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

В этой статье вы развернете виртуальную машину и проверите доступ к IP-адресу и URL-адресу. Затем вы определите причину проблемы с подключением и найдете способ ее устранения.

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.

Предварительные требования

Можно использовать либо Azure Cloud Shell, либо локальную версию Azure CLI.

  • Azure Cloud Shell в среде Bash. Или запустите Cloud Shell здесь.

    Запуск Cloud Shell в новом окне

  • Сведения об использовании локальной версии Azure CLI см. в статье об установке Azure CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в разделе Запуск Azure CLI в контейнере Docker.

    • Выполните вход в Azure CLI с помощью команды az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Сведения о других возможностях, доступных при входе, приведены в статье Вход с помощью Azure CLI.

    • При первом использовании Azure CLI установите расширение Azure CLI. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.

    • Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.

  • Для работы с этой статьей требуется Azure CLI версии 2.0 или более поздней. Если вы используете Azure Cloud Shell, последняя версия уже установлена.

  • Команды Azure CLI в этой статье отформатированы для выполнения в оболочке Bash.

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

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

az group create --name myResourceGroup --location eastus

Создайте виртуальную машину с помощью команды az vm create. Также команда создает ключи SSH, если они не существуют в расположении ключей по умолчанию. Чтобы использовать определенный набор ключей, используйте параметр --ssh-key-value. В следующем примере создается виртуальная машина с именем myVM:

az vm create \
  --resource-group myResourceGroup \
  --name myVm \
  --image UbuntuLTS \
  --generate-ssh-keys

Создание виртуальной машины занимает несколько минут. Переходите к остальным шагам только после того, как завершится создание виртуальной машины и Azure CLI вернет выходные данные.

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

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

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

Если в регионе "Восточная часть США" уже включена служба "Наблюдатель за сетями", перейдите к разделу по использованию следующего прыжка. С помощью команды az network watcher configure создайте Наблюдателя за сетями в регионе "Восточная часть США":

az network watcher configure \
  --resource-group NetworkWatcherRG \
  --locations eastus \
  --enabled

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

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

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

az network watcher show-next-hop \
  --dest-ip 13.107.21.200 \
  --resource-group myResourceGroup \
  --source-ip 10.0.0.4 \
  --vm myVm \
  --nic myVmVMNic \
  --out table

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

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

az network watcher show-next-hop \
  --dest-ip 172.31.0.100 \
  --resource-group myResourceGroup \
  --source-ip 10.0.0.4 \
  --vm myVm \
  --nic myVmVMNic \
  --out table

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

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

Чтобы проанализировать маршрутизацию дальше, просмотрите действующие маршруты для сетевого интерфейса, выполнив команду az network nic show-effective-route-table:

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

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

{
  "additionalProperties": {
    "disableBgpRoutePropagation": false
  },
  "addressPrefix": [
    "0.0.0.0/0"
  ],
  "name": null,
  "nextHopIpAddress": [],
  "nextHopType": "Internet",
  "source": "Default",
  "state": "Active"
},

При выполнении команды az network watcher show-next-hop для проверки исходящего подключения по IP-адресу 13.107.21.200 в разделе Использование следующего прыжка маршрут с addressPrefix 0.0.0.0/0** использовался для маршрутизации трафика на адрес, так как другие маршруты в выходных данных не включали адрес. По умолчанию все адреса, не указанные в префиксе адреса другого маршрута, маршрутизируются в Интернет.

Однако при выполнении команды az network watcher show-next-hop для проверки исходящего подключения по IP-адресу 172.31.0.100 вы узнали, что тип следующего прыжка отсутствовал. В возвращенные данные также включен следующий текст:

{
  "additionalProperties": {
    "disableBgpRoutePropagation": false
      },
  "addressPrefix": [
    "172.16.0.0/12"
  ],
  "name": null,
  "nextHopIpAddress": [],
  "nextHopType": "None",
  "source": "Default",
  "state": "Active"
},

Как можно увидеть в выходных данных выполнения команды az network watcher nic show-effective-route-table, хотя есть маршрут по умолчанию к префиксу 172.16.0.0/12, который включает адрес 172.31.0.100, nextHopType имеет значение Нет. Azure создает маршрут по умолчанию 172.16.0.0/12, но не указывает тип следующего прыжка, пока для этого не возникнут основания. Если, например, добавить диапазон адресов 172.16.0.0/12 в адресное пространство виртуальной сети, Azure изменит nextHopType для маршрута на Виртуальная сеть. Затем проверка отобразит Виртуальная сеть в качестве значения nextHopType.

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

Чтобы удалить ненужную группу ресурсов и все содержащиеся в ней ресурсы, выполните команду az group delete.

az group delete --name myResourceGroup --yes

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

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

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