Я разрабатываю среду Azure, которая будет содержать несколько виртуальных сетей, и требуется, чтобы все сети были подключены; виртуальная машина в любой сети должна иметь возможность общаться с другой виртуальной машиной в любой другой сети.
я мог соединить эти сети, используя топологию full mesh, но это быстро выйдет из-под контроля по мере увеличения количества сетей, и я действительно не хочу, чтобы вам пришлось настраивать и управлять п (п - 1) / 2 VPN-соединения.
Я бы предпочел подключать их с использованием топологии «ступица и луч», возможно, с использованием нескольких концентраторов, если будет достигнут предел Azure в 10 подключений на виртуальную сеть. Однако у меня возникла проблема: похоже, нет способа обрабатывать маршрутизацию в Azure.
Допустим, для простоты у меня есть три виртуальные сети:
Я хочу подключить сеть A к сети B, а сеть B к сети C; Я не хочу прямого соединения между сетями A и C: я хочу, чтобы сеть A общалась с сетью C через сеть B.
Это не было бы проблемой, если бы я контролировал шлюзы; пара статических маршрутов быстро и эффективно решит проблему.
Однако в Azure я не могу найти способ определить дополнительные маршруты для виртуальных сетей, поэтому я не могу указать шлюзу для сети A «отправлять трафик, адресованный для сети C, в сеть B» (и наоборот).
Как этого добиться в Azure?
Хорошо, это можно сделать, но это определенно не так просто, как могло бы (и должно быть).
По сути, фокус заключается в использовании «локальных сетей» Azure для настройки шлюзов Azure по своему усмотрению, даже если мы не можем напрямую коснуться их конфигурации.
Чтобы установить соединение между двумя виртуальными сетями Azure, необходимо определить две соответствующие «локальные сети», а затем подключить каждую сеть к «локальной сети», соответствующей другой; это уже не такой уж и прямой процесс, но, по крайней мере, есть некоторые документация об этом. Наличие более одного соединения для данной виртуальной сети еще сложнее, потому что вы не можете обработать это с портала управления (или PowerShell), и вместо этого вам придется вручную редактировать файлы конфигурации сети; тем не мение, даже это можно сделать.
А как насчет маршрутизации? В сценарии, описанном в этом вопросе, и при условии, что сеть B правильно подключена как к сети A, так и к сети C, как мы можем маршрутизировать трафик между этими двумя сетями?
Мы можем сделать это, используя определения локальной сети; в основном, мы должны сообщить шлюзу сети A, что его соединение с сетью B подходит не только для доступа к IP-подсети сети B, но также и подсети C; и мы, конечно, скажем обратное шлюзу сети C.
Нам уже нужно определить четыре локальные сети:
Мы изменим их как таковые:
Таким образом, когда сеть A подключается к сети B, она будет использовать это соединение для маршрутизации пакетов, направленных в сеть C. Когда шлюз сети B получит их, он уже будет знать, как их обрабатывать, и будет направлять их через свое соединение. в Сеть C; и наоборот.
В качестве дополнительного бонуса это работает для соединений между сайтами. вне Лазурный тоже. Если вы хотите добавить VPN в штаб-квартиру вашей компании и т. Д. подключив его к сети B (создавая таким образом Y-образную топологию), вы можете сообщить сети A и сети B, что они могут связаться с штаб-квартирой вашей компании через свое соединение с сетью 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, если вам нужен бесплатный маршрутизатор)