Гид по технологиям

Установка IKEv2 VPN на Strongswan (Ubuntu 18.04)

• 5 min read • DevOps • Обновлено 18 Nov 2025
IKEv2 VPN на Strongswan — Ubuntu 18.04
IKEv2 VPN на Strongswan — Ubuntu 18.04

Короткие определения

  • Strongswan — реализация IPSec с поддержкой IKEv1/IKEv2.
  • IKEv2 — протокол обмена ключами для установления защищённых IPSec-соединений.
  • EAP-MSCHAPv2 — метод аутентификации по логину/паролю, часто используемый для мобильных клиентов.

Необходимые условия

  • Сервер с Ubuntu 18.04.
  • Права root или sudo.
  • Зарегистрованный домен (в примере vpn.hakase-labs.pw) и открытые порты UDP 500 и 4500.

Что сделаем

  1. Установим Strongswan.
  2. Получим SSL-сертификат от Let’s Encrypt.
  3. Настроим Strongswan для IKEv2 + EAP-MSCHAPv2.
  4. Включим NAT и форвардинг в UFW.
  5. Протестируем подключение на macOS и Android.

Шаг 1 — Установка Strongswan на Ubuntu

Обновите пакеты и установите Strongswan и дополнительные плагины:

sudo apt update  
sudo apt install strongswan strongswan-pki libstrongswan-standard-plugins libstrongswan-extra-plugins

Дождитесь завершения установки.

Скриншот установки пакетов в терминале

Важное: для корректной работы EAP и современных шифров нужны дополнительные плагины — они установлены командой выше.

Шаг 2 — Получение сертификата Let’s Encrypt

В примере будет использоваться домен vpn.hakase-labs.pw. Мы установим certbot и выпустим сертификат методом standalone (certbot поднимет временный HTTP-сервер на 80 порт).

Устанавливаем certbot:

sudo apt install certbot -y

Запрос сертификата (замените email и домен на свои):

certbot certonly --rsa-key-size 4096 --standalone --agree-tos --no-eff-email --email [email protected] -d vpn.hakase-labs.pw

Сертификаты появятся в /etc/letsencrypt/live/vpn.hakase-labs.pw/. Скопируйте файлы в каталог Strongswan:

cp /etc/letsencrypt/live/vpn.hakase-labs.pw/fullchain.pem /etc/ipsec.d/certs/  
cp /etc/letsencrypt/live/vpn.hakase-labs.pw/privkey.pem /etc/ipsec.d/private/  
cp /etc/letsencrypt/live/vpn.hakase-labs.pw/chain.pem /etc/ipsec.d/cacerts/

Проверьте структуру:

tree /etc/ipsec.d/

Список файлов сертификатов в /etc/ipsec.d

Резервируем исходный конфиг и создаём новый /etc/ipsec.conf:

mv /etc/ipsec.conf /etc/ipsec.conf.asli  
vim /etc/ipsec.conf

Вставьте (пример конфигурации сервера IKEv2):

#global configuration IPsec
#chron logger
config setup
    charondebug="ike 1, knl 1, cfg 0"
    uniqueids=no

#define new ipsec connection
conn hakase-vpn
    auto=add
    compress=no
    type=tunnel
    keyexchange=ikev2
    ike=aes128-sha1-modp1024,aes128-sha1-modp1536,aes128-sha1-modp2048,aes128-sha256-ecp256,aes128-sha256-modp1024,aes128-sha256-modp1536,aes128-sha256-modp2048,aes256-aes128-sha256-sha1-modp2048-modp4096-modp1024,aes256-sha1-modp1024,aes256-sha256-modp1024,aes256-sha256-modp1536,aes256-sha256-modp2048,aes256-sha256-modp4096,aes256-sha384-ecp384,aes256-sha384-modp1024,aes256-sha384-modp1536,aes256-sha384-modp2048,aes256-sha384-modp4096,aes256gcm16-aes256gcm12-aes128gcm16-aes128gcm12-sha256-sha1-modp2048-modp4096-modp1024,3des-sha1!
    esp=aes128-aes256-sha1-sha256-modp2048-modp4096-modp1024,aes128-sha1,aes128-sha1-modp1024,aes128-sha1-modp1536,aes128-sha1-modp2048,aes128-sha256,aes128-sha256-ecp256,aes128-sha256-modp1024,aes128-sha256-modp1536,aes128-sha256-modp2048,aes128gcm12-aes128gcm16-aes256gcm12-aes256gcm16-modp2048-modp4096-modp1024,aes128gcm16,aes128gcm16-ecp256,aes256-sha1,aes256-sha256,aes256-sha256-modp1024,aes256-sha256-modp1536,aes256-sha256-modp2048,aes256-sha256-modp4096,aes256-sha384,aes256-sha384-ecp384,aes256-sha384-modp1024,aes256-sha384-modp1536,aes256-sha384-modp2048,aes256-sha384-modp4096,aes256gcm16,aes256gcm16-ecp384,3des-sha1!
    fragmentation=yes
    forceencaps=yes
    dpdaction=clear
    dpddelay=300s
    rekey=no
    left=%any
    [email protected]
    leftcert=fullchain.pem
    leftsendcert=always
    leftsubnet=0.0.0.0/0
    right=%any
    rightid=%any
    rightauth=eap-mschapv2
    rightsourceip=10.15.1.0/24
    rightdns=1.1.1.1,8.8.8.8
    rightsendcert=never
    eap_identity=%identity

Сохраните и закройте. Короткие пояснения к настройкам:

  • left — настройки сервера (сертификат fullchain.pem).
  • right — параметры клиентов: EAP-MSCHAPv2, пул адресов 10.15.1.0/24, DNS — Cloudflare и Google.

Отредактируйте /etc/ipsec.secrets для ключа и учётных данных EAP:

vim /etc/ipsec.secrets

Вставьте:

: RSA "privkey.pem"
hakase : EAP "hakase321@"
tensai : EAP "tensai321@"

Пояснение: формат “user : EAP \”password\””. Храните пароли безопасно; для production используйте более надёжные методы хранения (например, подключение к RADIUS).

Скриншот /etc/ipsec.secrets с учетными записями

Запустите и включите службу Strongswan:

systemctl start strongswan  
systemctl enable strongswan

Шаг 4 — NAT и форвардинг (UFW)

Откроем SSH и порты UDP для IPSec (500 и 4500):

sudo ufw allow ssh  
sudo ufw allow 500,4500/udp

Изменим политику переадресации пакетов в /etc/default/ufw:

vim /etc/default/ufw

Установите:

DEFAULT_FORWARD_POLICY="ACCEPT"

Определите ваш внешний интерфейс, по которому выходит трафик:

route | grep '^default' | grep -o '[^ ]*$'

В примере интерфейс — ens3. Отредактируйте /etc/ufw/before.rules и вставьте NAT/mangle в верхнюю часть файла:

cd /etc/ufw/  
vim before.rules

Вставьте (замените ens3 на свой интерфейс):

*nat
-A POSTROUTING -s 10.15.1.0/24 -o ens3 -m policy --pol ipsec --dir out -j ACCEPT
-A POSTROUTING -s 10.15.1.0/24 -o ens3 -j MASQUERADE
COMMIT

*mangle
-A FORWARD --match policy --pol ipsec --dir in -s 10.15.1.0/24 -o ens3 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360
COMMIT

И добавьте правила в секцию *filter (подставьте в нужное место):

*filter
.....

-A ufw-before-forward --match policy --pol ipsec --dir in --proto esp -s 10.15.1.0/24 -j ACCEPT
-A ufw-before-forward --match policy --pol ipsec --dir out --proto esp -d 10.15.1.0/24 -j ACCEPT

Скриншот правок before.rules

Примечание: замените ens3 и подсеть 10.15.1.0/24 на значения вашей сети.

Включите IP forwarding в /etc/ufw/sysctl.conf:

cd /etc/ufw  
vim sysctl.conf

Разкомментируйте:

net/ipv4/ip_forward=1

Включите UFW и перезапустите Strongswan:

sudo ufw enable
systemctl restart strongswan

Подтверждение включения UFW

Если появятся ошибки — см. раздел Устранение неисправностей ниже.

Шаг 5 — Тестирование

Ниже — краткая инструкция по подключению с macOS и Android.

macOS

  1. Откройте Системные настройки → Сеть.
  2. Нажмите ‘+’ для добавления нового подключения:
    • Интерфейс: VPN
    • Тип VPN: IKEv2
    • Имя сервиса: IKEv2-vpn

Создание VPN-подключения в macOS

  1. В полях Server Address и Remote ID укажите vpn.hakase-labs.pw.
  2. Нажмите Authentication Settings → Username: укажите пользователя (например, tensai) и пароль (tensai321@).
  3. Apply → Connect.

Настройка параметров аутентификации в macOS

После успешного подключения клиент получит адрес из пулa (пример: 10.15.1.1).

Подключение IKEv2 в macOS — статус Connected

Android (StrongSwan VPN Client)

  1. Установите приложение strongSwan VPN Client из Google Play.
  2. Создайте профиль IKEv2 EAP: укажите сервер vpn.hakase-labs.pw и учётные данные EAP (tensai / tensai321@).

Подключение Android через приложение strongSwan

Если подключение успешно — трафик клиента будет идти через VPN, при этом клиент получит внутренний адрес из диапазона 10.15.1.0/24.

Устранение неисправностей (Runbook)

  1. Проверка статуса службы:
systemctl status strongswan
journalctl -u strongswan -e
  1. Логи Charonce: увеличьте charondebug для подробного вывода (в /etc/ipsec.conf).
  2. Проблемы с сертификатом: проверьте цепочку и права доступа к /etc/ipsec.d/*.
  3. Клиент не получает IP: проверьте rightsourceip и правила NAT/POSTROUTING в UFW.
  4. Порт 500/4500 заблокирован: убедитесь, что облачный провайдер или хостинг не блокируют UDP 500/4500.

Короткий шаг отката: восстановите оригинальный /etc/ipsec.conf.asli и перезапустите strongswan.

Безопасность и hardening

  • Регулярно обновляйте систему и strongswan-пакеты.
  • Используйте длинные пароли и MFA там, где возможно.
  • Для production рассмотреть аутентификацию через RADIUS/LDAP вместо хранения паролей в ipsec.secrets.
  • Минимизируйте список поддерживаемых шифров (в примере включён широкий набор для совместимости — в проде оставьте только современные AES-GCM и сильные наборы).
  • Защитите доступ к ключам: приватный ключ privkey.pem должен иметь права 600 и владельца root.

Альтернативы и когда этот подход не подходит

  • Если вам нужна масштабируемая корпоративная аутентификация — лучше интегрировать RADIUS/FreeRADIUS или использовать OpenVPN/SSL-based решения.
  • Для простой удалённой администрирования иногда удобнее WireGuard (проще в настройке, современный стек, но не поддерживает EAP).
  • На старых клиентах, которым нужен IKEv1, потребуются отдельные параметры; этот гайд ориентирован на IKEv2.

Контроль качества — тесты и критерии приёмки

Критерии приёмки:

  • Сервер запускается без ошибок и слушает UDP 500 и 4500.
  • Клиент macOS успешно подключается и получает IP из rightsourceip.
  • Android-клиент подключается через strongSwan и имеет доступ в интернет.
  • Трафик клиента NAT’ится и клиент видит внешние ресурсы.

Тестовые случаи:

  • Подключение с корректными учётными данными (ожидается подключение).
  • Подключение с неверным паролем (ожидается отказ).
  • Падение интерфейса ens3 — проверка восстановления соединения.

Чеклисты (роль-ориентированные)

Администратор сервера:

  • Проверить наличие сертификата в /etc/ipsec.d/certs.
  • Настроить права на приватный ключ.
  • Обновить список шифров под требования безопасности.
  • Настроить мониторинг сервиса strongswan.

Пользователь (перед подключением):

  • Убедиться, что домен сервера резолвится.
  • Иметь логин/пароль EAP.
  • Для macOS: приготовить Root/Remote ID (домен сервера).

Советы по эксплуатации и миграции

  • Для автоматического обновления сертификатов используйте certbot renew и добавляйте post-hook для копирования новых файлов в /etc/ipsec.d/ с перезапуском strongswan.
  • При смене домена не забывайте обновить leftcert и left (если left использует явный FQDN).

Ссылки и ресурсы


Краткое резюме

  • Мы установили Strongswan, получили сертификат Let’s Encrypt, настроили сервер для IKEv2 + EAP-MSCHAPv2, включили NAT и протестировали подключения на macOS и Android.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро