Соединение нескольких VPC
In this article:
Соединение нескольких VPC#
Если вам необходимо соединить два и более VPC, то вы можете сделать это с помощью транзитного шлюза.
В приводимом примере показано, как соединить два VPC, vpc-1 (10.0.0.0/16) и vpc-2 (172.31.0.0/16), которые находятся в одном проекте.
При необходимости вы можете подключить к транзитному шлюзу VPC из других проектов, в том числе из проектов других компаний, предоставив доступ к шлюзу.
Общая схема действий следующая:
задайте маршруты в таблице маршрутизации транзитного шлюза к подключённым VPC;
задайте маршрут в таблице маршрутизации каждого VPC через транзитный шлюз в другое VPC;
разрешите соответствующий трафик, например ICMP, в группах безопасности, назначенных экземплярам, между которыми его необходимо пересылать.
Пример прохождения трафика#
В данном примере предполагается, что в vpc-1 запущен экземпляр с адресом 10.0.0.4 в подсети 10.0.0.0/20 в зоне доступности az-1, а в vpc-2 запущен экземпляр с адресом 172.31.16.4 в подсети 172.31.16.0/20 в зоне доступности az-2.
И с экземпляра 10.0.0.4 выполняется ping экземпляра 172.31.16.4.
Кроме того, мы предполагаем, что подсети 10.0.0.0/20 назначена основная таблица vpc-rtb-1 для vpc-1, а подсети 172.31.16.0/20 — основная таблица vpc-rtb-2 для vpc-2.
Экземпляр 10.0.0.4 отправляет эхо-запрос ICMP на адрес 172.31.16.4 на виртуальный маршрутизатор
vpc-1.Виртуальный маршрутизатор
vpc-1проверяет адрес назначения по связанной с подсетью таблице маршрутизацииvpc-rtb-1и направляет пакет на виртуальный интерфейс подключенияvpc-1к транзитному шлюзу в зоне доступностиaz-1.
Маршрутизатор
vpc-1получает пакет, предназначенный для 172.31.16.4. В соответствии с таблицей маршрутизации он отправляет его на подключение транзитного шлюза кvpc-1.#Транзитный шлюз в соответствии со своей таблицей маршрутизации направляет пакет на виртуальный интерфейс подключения к
vpc-2в той же зоне доступности —az-1.
Транзитный шлюз получает пакет, предназначенный для 172.31.16.4, от подключения к
vpc-1. В соответствии со своей таблицей маршрутизации он отправляет его на подключение кvpc-2.#Виртуальный маршрутизатор
vpc-2отправляет поступивший пакет от транзитного шлюза в подсеть 172.31.16.0 в зоне доступностиaz-2, где находится экземпляр 172.31.16.4.
Маршрутизатор VPC-2 получает пакет, предназначенный экземпляру, находящемуся в подключённой к нему подсети.#
Пакет доставлен.
Эхо-пакет проделывает схожий путь обратно от экземпляра 172.31.16.4 до экземпляра 10.0.0.4, однако основная часть маршрута — до стыковочной подсети в vpc-1 — пролегает внутри зоны доступности az-2.
Создайте транзитный шлюз#
Перейдите в раздел Сетевые соединения Транзитные шлюзы и откройте одноимённый подраздел.
Нажмите Создать.
Оставьте без изменений опции Создать таблицу маршрутизации и назначить основной для:
подключений;
распространения маршрутов.
При их выборе всем новым подключениям назначается созданная основная таблица маршрутизации и включается распространение маршрутов из этих подключений. Это освобождает от необходимости вручную задавать статические маршруты к каждому VPC в таблицах маршрутизации транзитного шлюза.
Нажмите Создать для завершения создания шлюза.
Создайте стыковочные подсети#
В каждой из зон доступности рекомендуется создать стыковочную подсеть (attachment subnet), к которой будет подключаться транзитный шлюз. Если подсеть с экземплярами подключить напрямую к транзитному шлюзу, то трафик из шлюза будет поступать к экземплярам, минуя Network ACL. При наличии стыковочной подсети трафик между транзитным шлюзом и остальными подсетями в этом VPC всегда проходит через виртуальный маршрутизатор VPC и, как следствие, фильтруется Network ACL.
Примечание
Правила групп безопасности применяются к трафику на сетевых интерфейсах в любом случае — независимо от выбора варианта подключения.
В стыковочной подсети не рекомендуется размещать другие ресурсы. Она служит только для связи с транзитным шлюзом, поэтому в целях экономии адресного пространства стыковочной подсети можно выделить IP-подсеть наименьшего возможного размера (/28).
Перейдите в раздел Виртуальные машины Сеть Подсети и нажмите Создать.
В диалоге создания подсети задайте следующие параметры:
vpc-1.(Опционально) Тег Name.
Адрес подсети 10.0.255.0/28.
Зону доступности, к которой необходимо подключить транзитный шлюз.
Если необходимо назначить дополнительные теги, перейдите на следующий шаг, нажав Добавить теги.
После задания всех необходимых параметров нажмите Создать подсеть.
Аналогично создайте подсети 10.0.255.16/28 и 10.0.255.32/28 в остальных зонах доступности (при наличии в регионе) в vpc-1 и подсети 172.31.255.0/28, 172.31.255.16/28 и 172.31.255.32/28 в трёх зонах доступности (при наличии в регионе) в vpc-2.
В этом примере значение 255 в третьем октете адресов стыковочных подсетей выбрано так, чтобы адресное пространство VPC оставалось целостным и непрерывным и было доступно для создания подсетей, в которых будут размещаться экземпляры.
Вы можете выбрать, в скольких зонах доступности создавать подсети — одной, двух или трёх. Однако для продуктивных инфраструктур рекомендуем заранее создавать стыковочные подсети во всех зонах доступности, так как потом изменить этот выбор будет невозможно — инфраструктуру транзитного шлюза придётся создавать с нуля заново.
Выбор зон доступности для стыковочных подсетей влияет на маршрут передачи трафика между VPC и транзитным шлюзом. Например, если у каждого из соединяемых VPC имеется стыковочная сеть только в одной зоне доступности, то трафик между подсетями в других зонах доступности этих VPC будет маршрутизироваться через эту зону. Если же создать подсети в каждой зоне, то трафик будет направляться по кратчайшему пути.
Создайте подключения#
Подключения необходимо создать в каждом из соединяемых VPC (см. подробнее о подключении транзитных шлюзов).
При создании первого подключения вы можете указать подсети в одной или нескольких зонах доступности по своему усмотрению. Однако при создании другого подключения необходимо задать подсети в тех же зонах доступности, что и у первого.
В этом примере используются подключения в двух зонах доступности.#
При этом обмен трафиком возможен между любыми подсетями в этих VPC, не только непосредственно подключёнными к транзитному шлюзу — необходимо лишь задать маршруты через транзитный шлюз в таблицах маршрутизации этих подсетей.
Примечание
После создания к подключению нельзя привязать другие подсети.
Перейдите в раздел Сетевые соединения Транзитные шлюзы Подключения.
Нажмите Создать.
В открывшемся окне укажите следующие параметры:
Тег Name для идентификации подключения, например
vpc-1(опционально).Созданный транзитный шлюз.
vpc-1.Стыковочные подсети в
vpc-1, к которым будет подключён транзитный шлюз:10.0.255.0/28;
10.0.255.16/28.
В каждой из этих подсетей будет создан виртуальный интерфейс подключения.
Нажмите Создать для завершения создания подключения.
Аналогичные подключения необходимо создать для vpc-2.
Задайте маршруты в таблице маршрутизации транзитного шлюза#
Если вы не отключали опцию Создать таблицу маршрутизации и назначить основной для: распространения маршрутов у основной таблицы маршрутизации транзитного шлюза, то маршруты в vpc-1 и vpc-2 будут установлены в неё автоматически.
В противном случае для каждого подключаемого VPC необходимо задать маршрут к нему через соответствующие подключения:
Перейдите в раздел Сетевые соединения Транзитные шлюзы Таблицы маршрутизации.
Выберите в таблице ресурсов таблицу маршрутизации созданного транзитного шлюза и нажмите на идентификатор таблицы для перехода на её страницу.
На вкладке Маршруты нажмите Добавить.
В открывшемся окне:
В поле Сеть укажите сеть, которая соответствует
vpc-1(10.0.0.0/16). Вы можете указать CIDR-блок любой подсети вvpc-1, если трафик необходимо пересылать в конкретную подсеть.Подключение, через которое
vpc-1подключается к транзитному шлюзу.
Нажмите Создать.
Повторите шаги 3-5 для задания маршрута к
vpc-2.
Задайте маршруты в таблице маршрутизации VPC#
В каждом VPC необходимо задать маршрут до другого VPC через транзитный шлюз. Ниже предполагается, что всем подсетям в VPC, из которых надо передавать трафик в другое VPC, назначена основная таблица маршрутизации этого VPC. Если какой-либо подсети назначена другая таблица маршрутизации, то, чтобы трафик из неё передавался в другое VPC, необходимо также задать в ней маршрут через транзитный шлюз.
Перейдите в раздел Виртуальные машины Сеть Таблицы маршрутизации.
Выберите в таблице ресурсов основную таблицу маршрутизации
vpc-1и нажмите на идентификатор таблицы для перехода на её страницу.Перейдите на вкладку Маршруты и нажмите Добавить.
В открывшемся окне:
В поле Сеть укажите целевую сеть в
vpc-2. В данном примере это сеть 172.31.0.0/16, соответствующаяvpc-2.В поле Тип шлюза выберите Транзитный шлюз.
В поле Шлюз выберите созданный транзитный шлюз.
Нажмите Добавить для создания маршрута.
Повторите шаги 2-4 для
vpc-2.
Разрешите необходимый трафик#
Чтобы экземпляры виртуальных машин в разных VPC могли обмениваться трафиком друг с другом, его необходимо разрешить в группах безопасности, которые назначены этим экземплярам.
В качестве примера рассмотрим ситуацию, когда требуется выполнять взаимный ping между экземплярами в разных VPC. При этом предполагается, что экземплярам назначена группа безопасности по умолчанию из соответствующего VPC.
Перейдите в раздел Виртуальные машины Безопасность Группы безопасности.
В таблице ресурсов найдите группу безопасности по умолчанию для
vpc-1и нажмите на её ID для перехода на страницу группы.На вкладке Входящие правила нажмите Добавить.
В открывшемся окне:
В поле Протокол выберите ICMP.
Для опции Разрешить доступ выберите Из сети.
В поле Сеть введите подсеть в
vpc-2, в которой находится экземпляр изvpc-2, например, 172.31.16.0/20 как в примере прохождения трафика. Либо укажите CIDR-блок для всегоvpc-2, в данном случае 172.31.0.0/16.
Повторите шаги 2-4 для
vpc-2.
Проверьте, что связь есть.
На экземпляре в vpc-2 запустите ping экземпляра в vpc-1 по внутреннему IP-адресу.
Ту же проверку выполните для экземпляра в vpc-1.