Настройка IKEv2 (EAP-MSCHAPv2) VPN на strongSwan с Let’s Encrypt на Rocky Linux 9

Кому подходит это руководство
Это руководство ориентировано на администраторов и инженеров, которым нужен простой в использовании клиент‑к‑сайту (road‑warrior) VPN без установки сторонних клиентов и без выдачи ключей каждому пользователю. Подходит, если вы хотите авторизацию по паре логин/пароль через EAP‑MSCHAPv2 и использование бесплатных сертификатов Let’s Encrypt для IKEv2.
В этом документе вы найдёте:
- пошаговую инструкцию настройки на Rocky Linux 9;
- готовый пример конфигурации strongSwan для EAP‑MSCHAPv2;
- инструкции подключения для популярных клиентов (Windows, macOS, Android, iOS, Linux);
- чек‑листы для администратора и пользователя;
- рекомендации по безопасности, конфигурации NAT/брандмауэра и устранению неполадок.
Требования
- Сервер с Rocky Linux 9 (ресурсы зависят от числа пользователей).
- Неработающий root‑пользователь с sudo‑правами.
- FQDN, указывающий на сервер, например vpn.example.com.
- Обновлённая система:
bash $ sudo dnf update - Набор утилит:
bash $ sudo dnf install wget curl nano unzip yum-utils -y
Важно: в примерах ниже используются реальные команды; выполняйте их под sudo или от имени администратора.
Порты и протоколы (факт‑бокс)
- IKE (UDP 500) — начальный обмен ключами.
- NAT‑Traversal (UDP 4500) — если клиент/сервер за NAT.
- HTTP/HTTPS (TCP 80/443) — требуется для получения сертификатов Let’s Encrypt (HTTP‑challange) или для ACME + TLS‑ALPN.
- IP‑маскарадинг (NAT) — при использовании доступа к Интернету через VPN.
Шаг 1 — Настройка сети и брандмауэра
Включите пересылку IPv4 в ядре:
$ echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.conf
$ sudo sysctl -pРазрешите сервис IPSec в firewalld и откройте HTTP/HTTPS, включите маскарадинг:
$ sudo firewall-cmd --permanent --add-service=ipsec
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
$ sudo firewall-cmd --permanent --add-masquerade
$ sudo firewall-cmd --reloadВажно: убедитесь, что на хосте нет других правил, блокирующих UDP 500/4500.
Шаг 2 — Установка Certbot (Let’s Encrypt)
Мы будем устанавливать Certbot через snapd. Для этого нужен EPEL.
$ sudo dnf install -y epel-release
$ sudo dnf install -y snapd
$ sudo systemctl enable snapd --now
$ sudo snap install core && sudo snap refresh core
$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh
$ sudo snap install --classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
$ certbot --versionПример запроса сертификата (замените email и домен):
$ sudo certbot --key-type rsa certonly --standalone --agree-tos --no-eff-email --preferred-challenges http -m [email protected] -d vpn.example.comСертификат будет сохранён в /etc/letsencrypt/live/vpn.example.com.
Проверьте сухой запуск обновления сертификатов:
$ sudo certbot renew --dry-runПримечание: если сервер уже обслуживает веб‑сайт на порту 80, используйте webroot‑метод или временно остановите HTTP‑службу.
Шаг 3 — Установка strongSwan и базовая конфигурация
Установите strongSwan (EPEL уже установлен в предыдущем шаге):
$ sudo dnf install strongswanСоздайте символические ссылки на сертификаты Let’s Encrypt в каталоге swanctl:
$ sudo ln -s /etc/letsencrypt/live/vpn.example.com/fullchain.pem /etc/strongswan/swanctl/x509
$ sudo ln -s /etc/letsencrypt/live/vpn.example.com/privkey.pem /etc/strongswan/swanctl/private
$ sudo ln -s /etc/letsencrypt/live/vpn.example.com/chain.pem /etc/strongswan/swanctl/x509caСоздайте файл конфигурации:
$ sudo nano /etc/strongswan/swanctl/conf.d/my_vpn.confВставьте следующий пример конфигурации. Этот конфиг настраивает IKEv2 с EAP‑MSCHAPv2 и пулом IPv4 адресов для клиентов.
connections {
ikev2-eap-mschapv2 {
version = 2
proposals = aes256-sha256-modp4096,aes256-sha256-modp2048,aes256gcm16-sha256-modp1024
rekey_time = 0s
pools = pool-ipv4
fragmentation = yes
dpd_delay = 30s
send_cert=always
unique = never
local {
id = vpn.example.com
certs = fullchain.pem
}
remote {
auth = eap-mschapv2
eap_id = %any
}
children {
ikev2-eap-mschapv2 {
local_ts = 0.0.0.0/0
rekey_time = 0s
dpd_action = clear
esp_proposals = aes256-sha256-sha1
}
}
}
}
pools {
pool-ipv4 {
addrs = 10.1.1.0/24
dns = 1.1.1.1, 8.8.8.8
}
}
secrets {
eap-User1 {
id = username1
secret = "password1"
}
}Сохраните файл. Если вы хотите проксировать и IPv6, добавьте IPv6‑пул и скорректируйте local_ts и dns:
local_ts = 0.0.0.0/0,::/0
addrs = 10.1.1.0/24,2a00:1450:400c:c05::/112
dns = 8.8.8.8,2001:4860:4860::8888Отключите OpenSSL‑плагин, если он мешает (проблемы с RSA+SHA1 в версии OpenSSL на Rocky 9):
$ sudo sed -i "s/load = yes/load = no/" /etc/strongswan/strongswan.d/charon/openssl.confВключите и запустите сервис:
$ sudo systemctl enable strongswan
$ sudo systemctl start strongswanПроверьте статус и логи:
$ sudo systemctl status strongswan
$ sudo journalctl -u strongswan -fБезопасность: рекомендации и жёсткие настройки
- Не храните пароли в открытом виде в конфигурационных файлах на долгосрочной основе. Для производственной системы используйте плагин eap‑radius или отдельную базу пользователей с безопасным хешированием.
- Отключите слабые криптографии: оставьте современные наборы шифров (AES‑GCM, AES‑SHA2) и DH‑группы 2048+/3072/4096.
- Включите DPD (Dead Peer Detection) и корректно настраивайте таймауты.
- Используйте HSM/Key‑management, если есть требования к защите приватных ключей.
- Регулярно проверяйте автоматическое обновление сертификатов и файл /etc/letsencrypt/renewal.
Шаг 4 — Подключение: Windows
- Откройте Параметры → Сеть и Интернет → VPN.
- Нажмите «Добавить VPN‑подключение».
- В поле “Поставщик VPN” выберите Windows (по умолчанию), название подключения укажите удобное, сервер — vpn.example.com.
- Тип VPN — IKEv2. Тип входа — Имя пользователя и пароль.

После сохранения выберите подключение и нажмите «Подключить».

Совет: если Windows не подключается, проверьте журнал Событий и убедитесь, что сертификат сервера валиден и имя совпадает с Server Address.
Шаг 5 — Подключение: macOS
- Откройте Системные настройки → Сеть.
- Нажмите + для добавления сервиса.
- Интерфейс — VPN, Тип — IKEv2, задайте имя.
- Введите Server Address и Remote ID = vpn.example.com. Local ID оставьте пустым.
- В Authentication Settings выберите Username и введите credentials (имя пользователя/пароль).



macOS создаст ярлык в строке меню — оттуда можно быстро подключаться.
Шаг 6 — Подключение: Android
- Откройте Настройки → Сеть и Интернет → VPN.
- Нажмите + для добавления профиля.
- Введите имя, тип — IKEv2/IPSec MSCHAPv2.
- Сервер — vpn.example.com, IPSec Identifier — произвольная строка, введите логин/пароль.

Сохраните и подключитесь.
Шаг 7 — Подключение: iOS
- Настройки → Основные → VPN → Добавить конфигурацию VPN.
- Тип — IKEv2. Описание — удобное имя. Сервер и Remote ID — vpn.example.com. Local ID — пусто.
- Аутентификация — Username, введите логин/пароль.

Нажмите «Готово» и переключите тумблер для подключения.
Краткая шпаргалка для пользователей
- Сервер: vpn.example.com
- Тип: IKEv2
- Аутентификация: Имя пользователя / Пароль (EAP‑MSCHAPv2)
- При проблемах: проверьте дату/время на клиенте, проверьте, что сертификат сервера не просрочен.
Когда этот подход не подходит (контрпримеры)
- Нужна двухфакторная аутентификация (можно интегрировать RADIUS/MFA, но EAP‑MSCHAPv2 сам по себе только пароль).
- Политика компании запрещает хранение паролей в конфиге или использование MSCHAPv2 (слабее по сравнению с современными EAP‑методами).
- Требуется масштабируемая аутентификация через LDAP/AD — лучше интегрировать RADIUS/FreeRADIUS.
Альтернативы
- WireGuard: проще и быстрее, но требует управление ключами — лучше для статичных наборов клиентов.
- OpenVPN: гибкий и хорошо совместим, но чаще требует клиентского ПО.
- strongSwan + EAP‑TLS: более надёжная авторизация по сертификатам, без паролей.
Чек‑лист для администратора (роль‑базированно)
Администратор (быстрая проверка):
- DNS A‑запись для vpn.example.com указывает на IP сервера.
- Открыты UDP 500 и 4500, TCP 80/443 для ACME.
- Certbot успешно получил сертификат и dry‑run renew проходит.
- strongSwan запущен: systemctl status strongswan.
- В /etc/strongswan/swanctl/conf.d/ корректные пути к сертификатам.
- Маршрутизация и masquerade настроены.
Пользователь (быстрая инструкция):
- Установить тип соединения IKEv2.
- Сервер и Remote ID — vpn.example.com.
- Ввести логин/пароль, подключиться.
Устранение неполадок — runbook
- Проверить сетевые правила и порты:
$ sudo firewall-cmd --list-all
$ sudo ss -ulpn | grep -E "(500|4500)"- Проверить пересылку пакетов:
$ sysctl net.ipv4.ip_forward- Проверить статус strongSwan и логи:
$ sudo systemctl status strongswan
$ sudo journalctl -u strongswan -r | head -n 200
$ sudo journalctl -f -u strongswan- Проверить валидность сертификатов:
$ sudo openssl x509 -in /etc/letsencrypt/live/vpn.example.com/fullchain.pem -noout -text | grep -E "Not After|Issuer"Если клиент не получает IP‑адрес от пула — проверьте секцию pools в файле конфигурации и логи на предмет ошибок выдачи IP.
Для проблем с аутентификацией EAP — проверьте правильность id/secret в блоке secrets и убедитесь, что eap_id соответствует ожидаемому.
Критерии приёмки
- Клиент IKEv2 успешно устанавливает SA и получает IP из пула.
- Трафик клиента проходит через VPN (проверка по внешнему IP).
- Сертификат сервера отвечает именем vpn.example.com и не просрочен.
- Автообновление сертификатов Certbot прошло успешно в dry‑run.
Совместимость, миграция и заметки
- Клиенты: Windows 10/11, macOS 10.12+, Android 9+, iOS 11+ поддерживают IKEv2 нативно.
- Для массового развёртывания пользователей рассмотрите использование RADIUS (FreeRADIUS) и интеграцию с AD/LDAP.
- Для перехода с OpenVPN на IKEv2 — перенести политику доступа и маршрутизацию, учесть особенности NAT и MTU.
Примеры проверок и тестов приёмки
- Подключение клиента Windows/macOS/Android/iOS и доступ к внешнему ресурсу (curl icanhazip.com) — IP должен быть адресом сети сервера.
- Проверка DNS перезапроса через VPN (nslookup) — использует ли клиент DNS‑сервер из pools.
- Проверка устойчивости: разорвать соединение внешне и убедиться, что DPD и повторное подключение работают.
Итог и рекомендации
Важно регулярно проверять автообновление сертификатов, обновлять strongSwan и систему, а также пересматривать наборы шифров. Для производственных сред рекомендовано хранить учётные данные в защищённых хранилищах и/или интегрировать RADIUS для централизованной аутентификации.
Если вы планируете масштабировать сервис — рассмотрите:
- переход на EAP‑TLS для безпарольной аутентификации;
- интеграцию с RADIUS/MFA;
- использование HSM для приватных ключей.
Если остались вопросы или требуется конфигурация под конкретную топологию сети — опишите вашу сеть (NAT, публичный IP, число пользователей, требования к маршрутизации) в комментариях или запросе, и я помогу адаптировать конфигурацию.
Примечание: приведённые здесь конфигурации примерные. Перед внедрением в продакшн протестируйте на стенде и адаптируйте под правила безопасности вашей организации.
Похожие материалы
Как выключить Samsung Galaxy Note10 и Note10+
Переназначить кнопку Bixby на Samsung
Как удалить HackTool:Win32/Keygen — пошагово
Как исправить Rocket League — ошибка 0
Windows 11‑оболочка для Steam: как установить