Можно ли использовать UDR для IP-перенаправления в пределах одной и той же подсети Azure?

Вопрос или проблема

Я пытаюсь протестировать сценарий перед его применением в производственной среде, где нам нужно направить весь трафик на одну виртуальную машину, а затем эта виртуальная машина должна перенаправить трафик на нужный компьютер. (не могу объяснить “почему” детали), итак:

1- Я создал Vnet "VN", подсеть "SN", 3 NIC и 3 виртуальные машины (используя: размер Standard_DS1_v2 и последнюю Win 2022 image).
2- Все в одном регионе Azure под одной учетной записью и подпиской.
3- Я создал таблицу маршрутизации "RT" и добавил два маршрута.
4- Сделал IP VM2 статическим.
5- Включил IP Forwarding на VM2
6- Отключил брандмауэр Windows на всех виртуальных машинах.

IP-адреса:

ВМ     |     IP
----------------------  
ВМ1    |     10.3.1.4  
ВМ2    |     10.3.1.5  
ВМ3    |     10.3.1.6 

Маршруты RT:

Имя     |   Префикс адреса  |     Тип следующего хопа   |    Адрес следующего хопа
----------------------------------------------------------------------------
VM1-VM3  |   10.3.1.6/32    |     Virtual Appliance   |    10.3.1.5
VM3-VM1  |   10.3.1.4/32    |     Virtual Appliance   |    10.3.1.5

До присоединения таблицы маршрутизации RT к подсети SN, вся сеть работает нормально, и я могу пинговать откуда угодно куда угодно. Однако, когда я присоединяю RT к SN, я больше не могу пинговать и получаю печально известное сообщение “Время ожидания запроса истекло” от любого к любому.

Что я пробовал:
1- разные подсети: работает, но нам нужна та же подсеть.
2- добавление nsg и разрешение ICMP.
3- добавление nsg и разрешение всего трафика (any к any).
4- пересоздание всей конфигурации, но я получил тот же результат.
5- другой аккаунт и подписка, безуспешно.
6- Спросил у AI, возможно ли это вообще, и получил ответ “Да”.

Таким образом, у меня кончились варианты, и я не понимаю, в чем дело?

Ответ или решение

В современном мире облачных вычислений, Azure предоставляет множество возможностей для сложных сетевых конфигураций. Однако, когда дело доходит до настройки маршрутизации внутри одной подсети, могут возникнуть некоторые ограничения и нюансы, которые необходимо учитывать, чтобы избежать проблем с подключением. Рассмотрим, возможно ли использование пользовательских таблиц маршрутизации (UDR) для перенаправления IP внутри одной и той же подсети Azure и как это может повлиять на работу вашей сети.

Теория (Theory)

В Azure пользовательская таблица маршрутизации (UDR) позволяет вам управлять потоком трафика в виртуальной сети (VNet) путем задания пользовательских маршрутов. Это может быть полезно для реализации сценариев фаерволов, инспекции пакетов или других сетевых функций, которые требуют контролируемого перенаправления трафика.

Однако при использовании UDR для маршрутизации трафика в пределах одной и той же подсети приходится учитывать несколько критических моментов:

  1. Архитектурные ограничения: Azure не поддерживает использование UDR для изменения пути построчного трафика внутри одной и той же подсети. Это связано с архитектурным решением, в котором предполагается, что трафик внутри одной подсети маршрутизируется напрямую, минуя любые пользовательские таблицы маршрутизации.

  2. Направление виртуальных машин: Когда вы пытаетесь перенаправить трафик из VM1 через VM2 к VM3 в той же подсети, вы сталкиваетесь с лимитами, где Azure не позволит UDR вмешательство.

  3. Сетевые пакеты обработки: Когда пакет направляется для обработки на уровне подсети внутри одной и той же сети, он обрабатывается локально, без проверки маршрутизации UDR.

Пример (Example)

Давайте разберем ваш конкретный случай. Вы создали виртуальную сеть с одной подсетью, в которой находятся три виртуальные машины VM1, VM2 и VM3 с статичными IP-адресами. Вы добавили пользовательскую таблицу маршрутизации с двумя маршрутами, которые организуют трафик через VM2 для сетей конечных точек VM1 и VM3. Когда вы прикрепили RT к подсети, связь прекратилась, и вы получили сообщение "Request timed out".

Применение (Application)

Проблема, с которой вы столкнулись, связана с попыткой маршрутизировать трафик внутри одной подсети с использованием UDR, что в Azure не поддерживается. Вот несколько шагов, которые могут помочь вам справиться с этой задачей:

  1. Измените архитектуру: Разделите виртуальные машины на разные подсети, если это возможно. Это позволит вам использовать UDR для маршрутизации между этими подсетями.

  2. Используйте Azure Load Balancer или Azure Firewall: Если вам нужно сохранить существующую подсеть, рассмотрите возможность использования Azure Load Balancer или Azure Firewall для направления трафика. Они могут помочь в распределении и инспекции пакетов.

  3. Переосмыслите стратегию маршрутизации: Если инфраструктурные ограничения препятствуют выполнению задачи, возможно, стоит пересмотреть саму целесообразность попытки маршрутизации трафика таким образом.

Таким образом, использование UDR для маршрутизации трафика внутри одной подсети не поддерживается, и сетевая архитектура должна учитывать это ограничение. Развертывание на разных подсетях или использование новых методов маршрутизации может помочь достичь желаемого результата без нарушения соединения.

Оцените материал
Добавить комментарий

Капча загружается...