Вопрос о пересылке трафика в виртуальных сетях Azure

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

Вот описание настройки: у меня есть две виртуальные сети Azure (VNET1 и VNET2), каждая из которых имеет собственный VPN-шлюз Azure на основе маршрутов, и одна сторонняя виртуальная сеть (VNET3), подключенная к первому Azure. виртуальная сеть VNTE1 через туннель IPsec VPN. Ниже приведены адресные пространства всех 3 виртуальных сетей.

  • VNET1 10.20.0.0/16 (виртуальная сеть Azure)
  • VNET2 10.30.0.0/16 (виртуальная сеть Azure)
  • VNET3 10.0.0.0/12 (сторонний vnet)

Вот что я могу сделать:

  • VNET1 подключен через туннель IPsec VPN к VNET3. Таким образом, я могу выполнить эхо-запрос с виртуальной машины в VNET1 10.20.10.5, а также с виртуальной машины в VNET3 10.0.0.1, и они могут ответить мне.
  • VNET1 подключен через туннель IPsec VPN к VNET2. Таким образом, я могу выполнить эхо-запрос с виртуальной машины в VNET1 10.20.10.5 на виртуальную машину в VNET2 10.30.10.5

Вот что я не могу сделать:

  • Я не могу выполнить эхо-запрос с виртуальной машины в VNET2 10.30.10.5, с виртуальной машины в VNET3 10.0.0.1.

Вот что я безуспешно пытался сделать, чтобы решить эту проблему:

  • Я предполагаю, что сеть VNET2 не знает, как направлять трафик в сеть VNET3. Таким образом, я создал таблицу маршрутов Azure, назначил таблицу маршрутов подсети 10.30.10.0/24 и создал правило, согласно которому весь трафик в сеть 10.0.0.0/12 должен направляться на VPN GateWay VNTE2. Я ожидаю, что как только трафик пойдет на GW, он достигнет VNET1, который знает, как направить его в VNET3. Это не сработало.
  • Хотя я думаю, что в этом нет необходимости, поскольку VNET1 уже знает, как направлять трафик в VNET3, я также создал таблицу маршрутизации для 10.0.0.0/12, аналогичную приведенной выше. Это тоже не помогло.

Я где-то пропускаю маршрут, и если да, то какое правило и где? Или мне вообще нужно иметь виртуальную машину в качестве маршрутизатора? (Надеюсь нет)


person aragorn    schedule 10.02.2020    source источник
comment
Если можно, поделитесь скриншотами с вкладки «Эффективные маршруты» сетевых интерфейсов ваших ВМ?   -  person Ivan Ignatiev    schedule 10.02.2020
comment
Что вы имеете в виду под туннелем IPSec VPN между VNET1 и VNET3? Это тот же VPN-шлюз VNET1, который также используется для соединения с VNET2?   -  person Ivan Ignatiev    schedule 10.02.2020
comment
Вы также можете использовать функцию проверки IP Flow в Azure Network Watcher, чтобы проверить свою конфигурацию docs.microsoft.com/en-us/azure/network-watcher/   -  person Ivan Ignatiev    schedule 10.02.2020
comment
Есть ли в вашей сторонней виртуальной сети (VNET3) какой-либо маршрут к VNet2 из VNet3?   -  person Nancy Xiong    schedule 11.02.2020
comment
@IvanIgnatiev: Я отвечаю на ваши вопросы 1) Нет, к сожалению, мне не разрешено делиться вкладкой эффективных маршрутов. Однако странно, что маршруты, которые я вижу на вкладке, если я захожу на виртуальную машину и выполняю ›route PRINT, я не вижу их всех. 2) Да, тот же самый VPN GW из VNET1, который используется для подключения к VNET3, также используется для подключения VNET2.   -  person aragorn    schedule 11.02.2020
comment
@NancyXiong: Да, наш партнер упомянул, что в VNET3 есть статические маршруты как к VNET1, так и к VNET2. Фактически, VNET3 перенаправляет весь трафик через VPN-туннель в VNET1.   -  person aragorn    schedule 11.02.2020


Ответы (1)


Я думаю, ваша проблема заключается в ограничении виртуального шлюза Azure:

Локальные сети, подключающиеся через VPN-устройства на основе политик с помощью этого механизма, могут подключаться только к виртуальной сети Azure; они не могут переходить в другие локальные сети или виртуальные сети через один и тот же VPN-шлюз Azure.

https://docs.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-connect-multiple-policybased-rm-ps

Таким образом, даже если вы используете один и тот же VPN-шлюз для подключения к VNET 3 и VNET 2, по замыслу VNET 3 и VNET 2 не могут обмениваться данными.

Чтобы решить эту проблему, я рекомендую использовать пиринг. Ваша конфигурация аналогична классической топологии Hub-Spoke. Ваш VNET1 - это концентратор, VNET2 - это Spoke, VNET3 - это своего рода «локальный».

Никаких изменений в конфигурации между VNET1 и VNET3 не требуется. Вам необходимо установить пиринг между VNET1 и VNET2 и в обратном направлении и применить следующую конфигурацию:

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

https://docs.microsoft.com/en-us/azure/architecture/reference-architectures/hybrid-networking/hub-spoke.

В этом случае VNET3 сможет взаимодействовать с HUB (VNET1) и всеми периферийными устройствами (VNET2 и любыми другими, подключенными к VNET1). VNET2 может взаимодействовать с HUB (VNET1) и локально (VNET3), когда туннель запущен.

Предупреждение. Спицы не могут обмениваться данными между собой без шлюза пересылки в HUB, т.е. если вы добавите VNET4 с пирингом к VNET1 и из VNET1, VNET4 не сможет проверять связь с виртуальными машинами в VNET2. Но они могли общаться с HUB и локально без каких-либо дополнительных устройств.

person Ivan Ignatiev    schedule 11.02.2020
comment
Спасибо за ответ Иван. Я уже пробовал пиринг, но он не работает, потому что и VNET1, и VNET2 имеют VPN GW, и вы можете разрешить транзит GW через пиринг только в том случае, если у одной из VNETS есть VPN GW. Я забыл упомянуть, что в предоставленном (также стороннем) есть VNET4, который был подключен к VNET2 через отдельный VPN-туннель до того, как два других VNETS войдут в игру, и теперь я должен каким-то образом заставить все работать вместе. . Я думаю, что мой единственный вариант - изменить топологию сети или реализовать виртуальную машину, которая будет действовать как маршрутизатор в VNET1. - person aragorn; 11.02.2020
comment
@aragorn Да, я думал, что вы используете VPN-шлюз только для подключения сетей, но в вашем случае, я думаю, вы не можете избежать реализации сетевого устройства, такого как маршрутизатор, для правильной пересылки и фильтрации трафика. - person Ivan Ignatiev; 11.02.2020
comment
В конце концов, мы воспользуемся подходом, предложенным Иваном для пиринга, поскольку мы не хотим, чтобы виртуальная машина действовала в качестве маршрутизатора. Таким образом, мы изменим топологию сети, чтобы избежать двух VPN GW. Спасибо, Иван. - person aragorn; 11.02.2020