Организация IPSEC VPN-туннелей между VPC-сетью Evolution и удаленной площадкой
В этой статье описывается решение по организации IPSEC VPN-туннелей между VPC-сетью платформы Evolution и удаленной площадкой
Описание паттерна
Паттерн описывает решение по организации IPSEC VPN-туннеля от платформы Evolution к внешнему ресурсу (on-prem площадка Заказчика или другие облачные платформы).
Преимущества паттерна |
Ограничения и риски |
---|---|
Паттерн разработан для стандартизации организации IPSEC-туннелей на платформе Evolution |
Сетевые накладные расходы при использовании туннелей IPSEC. Не более 15 сетевых сегментов в VPC. |
Общая схема
Реализация
Для построения IPSEC VPN-туннеля на платформе Evolution используется виртуальная машина с ОС Ubuntu и установленным на ней ПО Strongswan.
Strongswan — это открытое ПО, распространяемое по лицензии GPL, предоставляющее реализацию протокола IPSEC для различных операционных систем, включая Linux.
Схему организации сети в VPC нужно построить таким образом, чтобы VM Strongswan выполняла функции шлюза в интернет.
Таким образом, эта VM будет иметь один интерфейс с Direct IP и некоторое количество интерфейсов (от 1 до 15) в сторону сетей VPC.
Важно использовать именно Direct IP, а не Floating IP. Это позволит избежать возражений со стороны служб информационной безопасности, что потенциально какие-то сети могут иметь путь в интернет минуя VM Strongswan.
Ограничение в 15 интерфейсов не строгое, среда виртуализации позволяет создавать до 28 интерфейсов на VM (включая интерфейс с Direct IP), однако мы рекомендуем создавать не более 15 интерфейсов.
Сетевые сегменты, в которых размещается пользовательская нагрузка, создаются как изолированные.
Далее рассмотрим пошаговый процесс по реализации этого сценария.
В инструкции указаны конкретные адреса и сети. При использовании этого сценария не забудьте изменить адреса и сети на собственные.
В этом примере развертывание VM выполняется в зоне доступности ru.AZ-2. Вы можете выбрать другую AZ, но она должна быть одна в рамках сценария.
Шаг 1. Создание изолированных сетей
В личном кабинете перейдите в раздел Сеть → Подсети и нажмите Создать подсеть.
В появившемся окне укажите следующие данные:
Название: net-internal-1;
Локальная подсеть: Трафик замкнут;
Зона доступности: ru.AZ-2;
Адрес: «192.168.1.0/24».
Нажмите Создать.
Создайте вторую подсеть используя следующие данные:
Название: net-internal-2;
Локальная подсеть: Трафик замкнут;
Зона доступности: ru.AZ-2;
Адреc: «192.168.2.0/24».
Нажмите Создать.
Шаг 2. Создание группы безопасности
Необходимо создать две группы безопасности: одну для VM внутренней сети, а другую для внешнего интерфейса VM Strongswan.
Группа безопасности VM внутренней сети
Создадим группу безопасности для VM внутренней сети:
В личном кабинете перейдите в раздел Сеть → Группы безопасности и нажмите Создать группы безопасности.
В появившемся окне укажите следующие данные:
Зона доступности: ru.AZ-2;
Название: sg-app;
Правила входящего трафика:
Протокол — любой;
Тип источника — IP адрес;
Источник — «192.168.0.0/16».
или
Протокол — любой;
Тип источника — группа безопасности;
Источник — sg-app.
Правила исходящего трафика:
Протокол - любой, Тип источника - IP адрес, Источник - «0.0.0.0/0».
Нажмите кнопку Создать.
Группа безопасности внешнего интерфейса VM Strongswan
Создадим группу безопасности для внешнего интерфейса VM Strongswan:
В разделе Группы безопасности нажмите Создать группы безопасности.
В появившемся окне укажите следующие данные:
Зона доступности: ru.AZ-2;
Название: sg-swan-externa;
Правила входящего трафика:
Протокол - UDP, Порт - 500, Тип источника - IP адрес, Источник - «0.0.0.0/0»;
Протокол - UDP, Порт - 4500, Тип источника - IP адрес, Источник - «0.0.0.0/0».
Правила исходящего трафика:
Протокол - любой, Тип источника - IP адрес, Источник - «0.0.0.0/0».
Нажмите кнопку Создать.
Шаг 3. Создание виртуальной машины
В личном кабинете перейдите в раздел Инфраструктура → Виртуальные машины и нажмите Создать виртуальную машину.
В разделе Конфигурация укажите следующие данные:
Название: vm-swan;
Зона доступности: ru.AZ-2;
Образ: Ubuntu 22.04;
СPU: в зависимости от требований к пропускной способности;
RAM: для работы IPSEC не требуется много памяти, выбирайте минимально возможное значение для заданного количества CPU;
Диск: 10 Гб.
В разделе Настройки выберите следущие данные:
Подключить публичный IP: Прямой → Арендовать новый → Группа безопасности → sg-swan-external, SSH-access_ru.AZ-2.
Метод аутентификации: Публичный ключ.
Нажмите кнопку Создать.
Шаг 4. Настройка виртуальной машины
Настройка виртуальной машины проводится в консоли SSH.
Зайдите в консоль VM.
Поменяйте Shell для пользователя. После этого действия необходимо переключиться на нужного пользователя:
sudo chsh -s /bin/bash <username>Установите обновления операционной системы:
sudo apt update && sudo apt upgrade -yОтредактируйте файл сетевых конфигураций, чтобы VM корректно отрабатывала маршруты:
sudo vi /etc/netplan/50-cloud-init.yamlnetwork:version: 2ethernets:enp3s0:dhcp4: truenameservers:addresses: [ 8 .8.8.8, 8 .8.4.4 ]enp4s0:dhcp4: truedhcp4-overrides:use-routes: falseuse-dns: falseenp5s0:dhcp4: truedhcp4-overrides:use-routes: falseuse-dns: falseРазрешите форвардинг трафика:
sudo echo "1" > /proc/sys/net/ipv4/ip_forwardsudo vi /etc/sysctl.confРасскомментируйте строку:
net.ipv4.ip_forward = 1Настройте ufw:
ufw allow sshufw enablevi /etc/ufw/before.rulesВ конце необходимо добавить:*nat-F:POSTROUTING ACCEPT [ 0 :0 ]-A POSTROUTING -s 192 .168.0.0/16 -d 10 .0.0.0/8 -j ACCEPT-A POSTROUTING -s 192 .168.0.0/16 -o enp3s0 -j MASQUERADECOMMITЗавершите операцию:
ufw reload
Шаг 5. Добавление внутреннего интерфейса
Для добавление внутренних интерфейсов к VM необходимо подключить подсети.
Подключим к VM первую подсеть:
На вкладке Виртуальные машины выберете вашу VM.
Выберете Сетевые параметры → Подключить к подсети.
В открывшемся окне введите следующие данные:
VPC: Изолированные сети;
Подсети: «192.168.1.0/24»;
Внутренний IP: «192.168.1.254» (ввести вручную);
Группа безопасности: любая.
Выберите Подсети → Свойства интерфейса → Проверка адреса источника/назначения: нет.
Теперь подключим к VM вторую подсеть:
Выберете Сетевые параметры → Подключить к подсети.
В открывшемся окне введите следующие данные:
VPC: Изолированные сети;
Подсети: «192.168.2.0/24»;
Внутренний IP: «192.168.2.254» (ввести вручную);
Группа безопасности: любая.
Для каждой из добавленных подсетей сделайте Подсети → Свойства интерфейса → Проверка адреса источника/назначения: нет.
Шаг 6. Настройка Strongswan
Примените изменения netplan, которые настраивали ранее:
sudo netplan applyУстановите пакеты Strongswan:
sudo apt install charon-systemd strongswan-swanctl -yНастройте Strongswan:
sudo vi /etc/swanctl/conf.d/onprem.confconnections {onprem-ipsec {local_addrs = <Direct IP>remote_addrs = <OnPrem IP>local {auth = psk}remote {auth = psk}version = 2 # IKEv2mobike = noproposals = aes128-sha256-modp2048, defaultdpd_delay = 10schildren {onprem-ipsec {# List of local IPv4 subnetslocal_ts = 192 .168.0.0/16# List of remote IPv4 subnetsremote_ts = 10 .0.0.0/8start_action = startesp_proposals = aes128-sha256-modp2048dpd_action = clear}}}}# Pre-shared key (PSK) for IPsec connectionsecrets {ike-onprem-ipsec {secret = <superstrongpassword>}}В данном примере реализована аутентификация по паролю (preshared key).
Тем не менее, рекомендуется использовать аутентификацию по сертификатам. Более подробно об аутентификации по сертификатам можно прочитать в документации.
Загрузите сертификаты и праватные ключи из конфиг файлов:
sudo swanctl --load-credsЗагрузите подключения из конфиг файла:
sudo swanctl --load-conns
- Описание паттерна
- Общая схема
- Реализация
- Шаг 1. Создание изолированных сетей
- Шаг 2. Создание группы безопасности
- Шаг 3. Создание виртуальной машины
- Шаг 4. Настройка виртуальной машины
- Шаг 5. Добавление внутреннего интерфейса
- Шаг 6. Настройка Strongswan