Настройка Site-to-Site VPN с помощью strongSwan
Чтобы создать защищенное соединение между ресурсами в облаке MWS и сторонней площадкой, например с сервером в другом проекте или в другом облаке, можно настроить Site-to-Site (S2S) VPN с использованием семейства протоколов IPsec.
Это руководство поможет вам настроить Site-to-Site VPN с помощью strongSwan — имплементации IPsec с открытым исходным кодом. Через VPN вы сможете связываться со сторонней подсетью по внутренним IP-адресам.
Для этого вам потребуются два IPsec-шлюза: один — в MWS Cloud Platform, второй — на сторонней площадке:

Чтобы настроить Site-to-Site VPN:
- Установите и настройте strongSwan на обоих IPsec-шлюзах.
1. Подготовьте ресурсы в MWS Cloud Platform
Заголовок раздела «1. Подготовьте ресурсы в MWS Cloud Platform»Создайте сеть на стороне MWS Cloud Platform. Для параметра MTU укажите значение
1460: это значение учитывает накладные расходы IPsec-туннеля и помогает избежать фрагментации пакетов.Создайте подсеть внутри созданной сети. Далее в качестве примера для этой подсети используется CIDR
192.168.1.0/24.Зарезервируйте в созданной сети внешний статический IP-адрес — далее для примера используется
198.51.100.2.Создайте виртуальную машину, которая будет использоваться в качестве IPsec-шлюза. Назначьте ей зарезервированный ранее внешний статический IP-адрес —
198.51.100.2.При создании виртуальной машины обязательно включите переадресацию пакетов (IP Forwarding), чтобы ВМ могла перенаправлять транзитный трафик.
2. Подготовьте ресурсы на сторонней площадке
Заголовок раздела «2. Подготовьте ресурсы на сторонней площадке»- Выберите сеть и подсеть, которая будет связана с MWS Cloud Platform через IPSec-шлюз.
- Подготовьте сервер, на котором будет установлен strongSwan и который будет использоваться в качестве IPsec-шлюза. Назначьте ему внешний статический IP-адрес — далее для примера используется
203.0.113.2. В качестве внутреннего IP-адрес сервера для примера будет использоваться10.0.1.10.
3. Настройте правила файрвола
Заголовок раздела «3. Настройте правила файрвола»Для IPsec-шлюза в MWS Cloud Platform создайте правила файрвола, которые разрешают:
- подключения по SSH (порт
22); - входящий UDP-трафик для портов
500и4500; - исходящий трафик на внешний IP-адрес IPsec-шлюза на сторонней площадке —
203.0.113.2.
Для IPsec-шлюза на сторонней площадке создайте правила файрвола, которые разрешают:
- входящий UDP-трафик на порты
500и4500; - входящий трафик из подсетей MWS Cloud Platform;
- исходящий трафик на внешний IP-адрес IPsec-шлюза в MWS Cloud Platform —
198.51.100.2.
4. Настройте маршрутизацию
Заголовок раздела «4. Настройте маршрутизацию»В MWS Cloud Platform создайте маршрут для IPsec-шлюза и задайте его параметры:
- В качестве перехода (next hop) укажите внутренний IP-адрес этого IPsec-шлюза —
192.168.1.10. - В качестве префикса назначения (destination) укажите подсеть на сторонней площадке.
На сторонней площадке создайте маршрут для IPsec-шлюза и задайте его параметры:
- В качестве перехода (next hop) укажите внутренний IP-адрес этого IPsec-шлюза —
10.0.1.10. - В качестве префикса назначения (destination) укажите подсеть в MWS Cloud Platform —
192.168.1.0/24.
5. Установите и настройте strongSwan
Заголовок раздела «5. Установите и настройте strongSwan»Установите strongSwan на обоих шлюзах:
- Debian, Ubuntu
- CentOS, Alma Linux
bash sudo apt install strongswan strongswan-pki libcharon-extra-plugins strongswan-swanctl -yО других способах установки strongSwan см. в официальной документации.
Добавьте strongSwan в автозапуск на обоих шлюзах:
bash sudo systemctl enable strongswan-startersudo systemctl start strongswan-starterНа любом из шлюзов сгенерируйте секретный ключ и сохраните его в отдельном файле:
bash sudo suopenssl rand -base64 32 > /etc/swanctl/private/psk.txtСкопируйте сгенерированный ключ на другой шлюз.
На обоих шлюзах добавьте конфигурацию в файл
/etc/swanctl/swanctl.conf:Активируйте на уровне операционной системы переадресацию пакетов (IP forwarding) на обоих IPsec-шлюзах:
bash echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.confsudo sysctl -p(опционально) Отключите на обоих IPsec-шлюзах ICMP-перенаправление:
bash echo "net.ipv4.conf.all.accept_redirects = 0" | sudo tee -a /etc/sysctl.confecho "net.ipv4.conf.all.send_redirects = 0" | sudo tee -a /etc/sysctl.confsudo sysctl -pПримените новую конфигурацию на обоих IPsec-шлюзах:
bash sudo swanctl --load-allЕсли конфигурация применена успешно, в течение 30 секунд на консоль будет выведено сообщение:
bash site-to-site: #1, ESTABLISHED, IKEv2...net-to-net: #2, INSTALLED, TUNNELlocal 192.168.1.10remote 10.0.1.10
6. Проверьте VPN-соединение
Заголовок раздела «6. Проверьте VPN-соединение»Проверьте, что VPN настроен корректно:
bash swanctl --list-sasВ ответе вы получите информацию о статусе VPN. Если VPN настроен корректно, для него будет указан статус
ESTABLISHED.Проверьте доступность ресурсов на сторонней площадке:
bash ping <любой внутренний IP-адрес из подсети на сторонней площадке>Если ответы приходят, соединение настроено и работает корректно.
Удалите ресурсы
Заголовок раздела «Удалите ресурсы»В руководстве были созданы ресурсы, которые тарифицируются. Если вы не планируете использовать их, удалите: