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


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

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

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

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

  • Azure Cloud Shell или Azure CLI

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

    Вы также можете установить Azure CLI локально для выполнения команд. В этой статье требуется Azure CLI 2.0 или более поздней версии. Выполните команду az --version , чтобы найти установленную версию. При локальном запуске Azure CLI войдите в Azure с помощью команды az login .

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

Прежде чем создать виртуальную машину, создайте группу ресурсов, которая будет содержать эту виртуальную машину. Создайте группу ресурсов с помощью команды 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 Ubuntu2204 \
  --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-адресом с течением времени с помощью возможности монитора подключения Наблюдатель за сетями. Дополнительные сведения см. в разделе "Мониторинг сетевого подключения".