Как настроить маршрутизацию между виртуальными сетями Azure?

Я разрабатываю среду Azure, которая будет содержать несколько виртуальных сетей, и необходимо, чтобы все сети были подключены; ВМ в любой сети должна иметь возможность общаться с другой ВМ в любой другой сети.

Я мог бы подключить эти сети, используя топологию с полной сеткой, но это быстро вышло бы из-под контроля по мере увеличения числа сетей, и я действительно не хочу настраивать и управлять n (n - 1) / 2 VPN-соединениями.,

Я бы предпочел соединить их, используя топологию хаб-спиц, возможно, с использованием нескольких хабов, если достигнуто ограничение Azure в 10 соединений на виртуальную сеть. Тем не менее, я застрял с проблемой: в Azure нет способа обработки маршрутизации.

Скажем для простоты, что у меня есть три виртуальные сети:

  • Сеть А - 10.10.1.0/24
  • Сеть B - 10.10.2.0/24
  • Сеть C - 10.10.3.0/24

Я хочу подключить сеть A к сети B, а сеть B к сети C; Я не хочу прямого соединения между сетями A и C: я хочу, чтобы сеть A общалась с сетью C через сеть B.

Это было бы совершенно не проблема, если бы я имел контроль над шлюзами; пара статических маршрутов быстро и эффективно решит проблему.

Однако в Azure я не могу найти способ определения дополнительных маршрутов для виртуальных сетей, поэтому я не могу сказать шлюзу для сети A "отправлять трафик, адресованный для сети C, в сеть B" (и наоборот).

Как этого можно достичь в Azure?

2 ответа

Решение

Хорошо, это можно сделать, но это определенно не так просто, как могло бы (и должно) быть.

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

Чтобы настроить соединение между двумя виртуальными сетями Azure, необходимо определить две соответствующие "локальные сети", а затем подключить каждую сеть к "локальной сети", соответствующей другой; это уже не такой простой процесс, но, по крайней мере, есть некоторая документация по этому поводу. Наличие более одного соединения для данной виртуальной сети еще сложнее, потому что вы не можете обработать это с портала управления (или PowerShell), и вместо этого вам придется вручную редактировать файлы конфигурации сети; однако даже это можно сделать.

Но как насчет маршрутизации? В сценарии, описанном в этом вопросе, и при условии, что сеть B правильно подключена как к сети A, так и к сети C, как мы можем направить трафик между этими двумя сетями?

Мы можем сделать это, используя определения локальной сети; в основном, мы должны сообщить шлюзу сети A, что его соединение с сетью B не только хорошо для достижения IP-подсети сети B, но также и для подсети сети C; и мы, конечно, расскажем обратное к шлюзу сети C.

Мы уже должны определить четыре локальные сети:

  • Локальная сеть A (с точки зрения виртуальной сети B): 10.10.1.0/24
  • Локальная сеть C (с точки зрения виртуальной сети B): 10.10.3.0/24
  • Локальная сеть B (с точки зрения виртуальной сети A): 10.10.2.0/24
  • Локальная сеть B (с точки зрения виртуальной сети C): 10.10.2.0/24

Мы изменим их так:

  • Локальная сеть A (с точки зрения виртуальной сети B): 10.10.1.0/24
  • Локальная сеть C (с точки зрения виртуальной сети B): 10.10.3.0/24
  • Локальная сеть B (с точки зрения виртуальной сети A): 10.10.2.0/24 и 10.10.3.0/24
  • Локальная сеть B (с точки зрения виртуальной сети C): 10.10.2.0/24 и 10.10.1.0/24

Таким образом, когда сеть A подключается к сети B, она будет использовать это соединение для маршрутизации пакетов, направленных в сеть C. Когда шлюз сети B получит их, он уже будет знать, как их обрабатывать, и направит их через свое соединение. в сеть C; и наоборот.


В качестве дополнительного бонуса это работает и для соединений между сайтами за пределами Azure. Если вы хотите добавить соединение VPN со штаб-квартирой вашей компании и подключить его к сети B (создавая, таким образом, Y-образную топологию), вы можете сообщить сети A и сети B, что они могут связаться со штаб-квартирой вашей компании через подключение к сети. Б, точно так же.

Azure внедрил пиринг vNet, если вы не хотите беспокоиться о VPN каждый раз, когда хотите соединить 2 сети:

https://docs.microsoft.com/en-us/azure/virtual-network/create-peering-different-deployment-models

https://azure.microsoft.com/en-us/resources/videos/virtual-network-vnet-peering/

Возможно, стоит взглянуть, потому что он управляет путями, которые были боль в шее, чтобы справиться.

Если вам нужна дополнительная информация о том, как ее реализовать, я создал поток для своего блоба именно для этой цели и о том, как использовать PFSENSE в Azure . ( PFSENSE бесплатен, и я упаковываю VHD для этого, если вам нужен бесплатный маршрутизатор)

https://mouradcloud.westeurope.cloudapp.azure.com/blog/blog/2018/07/19/build-azure-hub-and-spoke-using-pfsense-nva-udr-vnet-peering-and-vpn-on-local-router/

Другие вопросы по тегам