- tocdepth
2
Организация 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: .
Метод аутентификации: Публичный ключ.
Нажмите кнопку Создать.
Шаг 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.yaml
network: version: 2 ethernets: enp3s0: dhcp4: true nameservers: addresses: [8.8.8.8, 8.8.4.4] enp4s0: dhcp4: true dhcp4-overrides: use-routes: false use-dns: false enp5s0: dhcp4: true dhcp4-overrides: use-routes: false use-dns: false
Разрешите форвардинг трафика:
sudo echo "1" > /proc/sys/net/ipv4/ip_forward sudo vi /etc/sysctl.conf
Расскомментируйте строку:
net.ipv4.ip_forward=1
Настройте ufw:
ufw allow ssh ufw enable vi /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 MASQUERADE COMMIT
Завершите операцию:
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.conf
connections { onprem-ipsec { local_addrs = <Direct IP> remote_addrs = <OnPrem IP> local { auth = psk } remote { auth = psk } version = 2 # IKEv2 mobike = no proposals = aes128-sha256-modp2048, default dpd_delay = 10s children { onprem-ipsec { # List of local IPv4 subnets local_ts = 192.168.0.0/16 # List of remote IPv4 subnets remote_ts = 10.0.0.0/8 start_action = start esp_proposals = aes128-sha256-modp2048 dpd_action = clear } } } } # Pre-shared key (PSK) for IPsec connection secrets { ike-onprem-ipsec { secret = <superstrongpassword> } }
В данном примере реализована аутентификация по паролю (preshared key).
Тем не менее, рекомендуется использовать аутентификацию по сертификатам. Более подробно об аутентификации по сертификатам можно прочитать в документации.
Загрузите сертификаты и праватные ключи из конфиг файлов:
sudo swanctl --load-creds
Загрузите подключения из конфиг файла:
sudo swanctl --load-conns
для Dev & Test