Установка и настройка IKEv2 VPN (Strongswan + Let's Encrypt) на CentOS 8
Важно: используйте собственный домен для сервера (в примерах — vpn.hakase-labs.io) и замените тестовые пароли на сложные перед вводом в продакшен.
Краткий план
- Установка Strongswan и зависимостей
- Получение сертификата Let’s Encrypt (certbot)
- Настройка конфигурации Strongswan (IKEv2, EAP-MSCHAPv2)
- Настройка firewalld: IPSec протоколы, порты, NAT
- Включение IP‑пересылки (port-forwarding)
- Тестирование на macOS и Android
Что понадобится
- Сервер CentOS 8 с root‑доступом
- Доменное имя, указывающее на сервер (A/AAAA запись)
- Открытые 80/443/500/4500 UDP порты (для выдачи сертификата и работы IPSec)
Основные понятия (в одну строку)
- IPSec: набор протоколов для защищённой передачи IP‑пакетов.
- IKEv2: протокол обмена ключами и управления соединением в IPSec.
- EAP‑MSCHAPv2: метод аутентификации по логину/паролю в IKEv2.
- Let’s Encrypt: бесплатный центр сертификации для получения TLS‑сертификатов.
Уровень намерения и варианты использования
Цель руководства — развернуть защищённый корпоративный или личный VPN-сервер для удалённого доступа. Варианты: защита трафика сотрудников, безопасный удалённый доступ к ресурсам, доступ мобильных устройств.
Варианты похожих запросов (ключевые формулировки): установка strongswan centos 8, настроить IKEv2 vpn, strongswan letsencrypt, eap-mschapv2 centos.
Шаг 1 — Установка Strongswan на CentOS 8
Добавьте репозиторий EPEL и установите пакет strongswan:
sudo dnf install epel-releaseЗатем установите strongswan:
sudo dnf install strongswanПодождите, пока пакет будет установлен.

Примечание: в минимальных сборках потребуется установить дополнительные пакеты для поддержки конкретных криптоалгоритмов; dnf сам подтянет зависимости из EPEL.
Шаг 2 — Получение TLS‑сертификата через Let’s Encrypt
Мы используем certbot для получения сертификатов. В примере домен — vpn.hakase-labs.io. Замените его на свой.
Скачайте certbot и сделайте его исполняемым:
wget https://dl.eff.org/certbot-auto -O /usr/local/bin/certbot-auto
chmod +x /usr/local/bin/certbot-autoОткройте HTTP/HTTPS порты в firewalld, чтобы certbot смог пройти проверку HTTP‑01:
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reloadЗапустите certbot в режиме standalone (замените email и домен):
certbot-auto certonly --rsa-key-size 2048 --standalone --agree-tos --no-eff-email --email you@example.com -d vpn.hakase-labs.ioПосле успешного получения сертификатов они окажутся в /etc/letsencrypt/live/vpn.hakase-labs.io/
Скопируйте нужные файлы в каталоги Strongswan:
cp /etc/letsencrypt/live/vpn.hakase-labs.io/fullchain.pem /etc/strongswan/ipsec.d/certs/
cp /etc/letsencrypt/live/vpn.hakase-labs.io/privkey.pem /etc/strongswan/ipsec.d/private/
cp /etc/letsencrypt/live/vpn.hakase-labs.io/chain.pem /etc/strongswan/ipsec.d/cacerts/Проверьте структуру:
tree /etc/strongswan/ipsec.d/
Совет: настроите автоматическое обновление сертификатов (cron/systemd timer) и скрипт, который копирует новые ключи в /etc/strongswan/ipsec.d и перезапускает strongswan при обновлении.
Шаг 3 — Настройка Strongswan
Перейдите в каталог /etc/strongswan и создайте резервную копию дефолтного конфигурационного файла:
cd /etc/strongswan/
mv ipsec.conf ipsec.conf.asliСоздайте новый /etc/strongswan/ipsec.conf (например, через vim) и вставьте следующую конфигурацию (корректируйте домен и диапазон IP клиентов при необходимости):
config setup
uniqueids=never # allow multiple connections per user
charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2, mgr 2"
conn %default
fragmentation=yes
closeaction=restart
rekey=no
dpdaction=clear
keyexchange=ikev2
compress=yes
dpddelay=35s
lifetime=3h
ikelifetime=12h
ike=aes256gcm16-prfsha512-ecp384!
esp=aes256gcm16-ecp384!
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
conn ikev2-pubkey
auto=addЗатем отредактируйте /etc/strongswan/ipsec.secrets и добавьте приватный ключ сервера и EAP‑пользователей (замените имена/пароли):
: RSA "privkey.pem"
hakase : EAP "hakase321@"
tensai : EAP "tensai321@"Сохраните и запустите сервис:
systemctl enable strongswan
systemctl start strongswan
Проверка состояния:
systemctl status strongswan
netstat -plntu
Важно: в production рекомендуется ограничить набор криптографических параметров и регулярно обновлять strongswan для поддержки безопасности.
Шаг 4 — Включение NAT в firewalld
Разрешим протоколы IPSec (ESP, AH) и соответствующие UDP порты, а также включим masquerade для NAT:
firewall-cmd --zone=public --permanent --add-rich-rule='rule protocol value="esp" accept'
firewall-cmd --zone=public --permanent --add-rich-rule='rule protocol value="ah" accept'
firewall-cmd --zone=public --permanent --add-port=500/udp
firewall-cmd --zone=public --permanent --add-port=4500/udp
firewall-cmd --zone=public --permanent --add-service="ipsec"
firewall-cmd --zone=public --permanent --add-masquerade
firewall-cmd --reloadПроверьте настройки:
firewall-cmd --list-all
Шаг 5 — Включение перенаправления портов (IP forwarding)
Отредактируйте /etc/sysctl.conf и включите ip_forward:
vim /etc/sysctl.conf
# добавьте или измените:
net.ipv4.ip_forward = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0Примените изменения:
sysctl -p
systemctl restart strongswan
Шаг 6 — Тестирование подключения
Мы приводим примеры для macOS и Android.
На macOS
- Откройте «Системные настройки» → «Сеть».
- Нажмите «+» и создайте новое подключение VPN:
- Интерфейс: VPN
- Тип VPN: IKEv2
- Имя службы: IKEv2‑vpn

- В полях Server Address и Remote ID укажите домен сервера (например, vpn.hakase-labs.io).
- Нажмите «Настройки аутентификации» и выберите метод Username (EAP).
- Введите имя пользователя и пароль (например, tensai / tensai321@).
- Сохраните и нажмите Connect.

После успешного подключения macOS получит внутренний адрес из диапазона rightsourceip (в примере 10.15.1.x).

На Android
- Установите приложение strongSwan VPN Client из Google Play.
- Создайте профиль IKEv2, укажите адрес сервера и выберите EAP‑MSCHAPv2 (username + password).
- Подключитесь и проверьте, что телефон получил IP из диапазона VPN и имеет доступ к ресурсам, требуемым политикой.

Тесты и критерии приёмки
- Клиент получает IP из диапазона rightsourceip (например, 10.15.1.0/24).
- Туннель поднимается без ошибок в логах charon.
- Трафик клиента NAT’ится и может обращаться к интернету (если требуется).
- Сертификат сервера валиден и доверен клиентом.
Проверьте логи:
journalctl -u strongswan -e
ipsec statusallЧек‑лист администратора (роль: инженер)
- Настроен DNS A-запись для домена VPN.
- Получен и установлен сертификат из Let’s Encrypt.
- В /etc/strongswan/ipsec.conf корректно указан leftcert и правый диапазон IP.
- Пользователи EAP добавлены в ipsec.secrets (пароли безопасно хранятся).
- Firewall открыты порты 80/443/500/4500 и добавлены rich-rule для esp/ah.
- Включено masquerade и net.ipv4.ip_forward=1.
- Настроено автоматическое обновление certbot и перезагрузка strongswan после обновления.
Быстрый план отката / Инцидентный рукоязык
Если после изменений VPN перестал работать:
- Откатите ipsec.conf к резервной копии: mv /etc/strongswan/ipsec.conf.asli /etc/strongswan/ipsec.conf
- Перезапустите службу: systemctl restart strongswan
- Проверяйте логи journalctl -u strongswan -f
- Временно отключите firewall правила, чтобы исключить блокировку портов: firewall-cmd –reload –complete-reload (только для диагностики).
- Если проблема в сертификате, временно используйте самоподписанный сертификат для диагностики и проверьте соединение.
Укрепление безопасности (рекомендации)
- Используйте сильные пароли для EAP-пользователей и MFA там, где возможно.
- Уменьшите набор поддерживаемых шифров (в ipsec.conf) согласно внутреннему регламенту.
- Отключите или ограничьте доступ административных учетных записей к серверу.
- Логи захватывайте централизованно и включите оповещения при неудачных попытках аутентификации.
Альтернативные подходы
- WireGuard — современный, быстрый, проще в конфигурации, но без нативной EAP‑аутентификации.
- OpenVPN — широко совместим, но сложнее конфигурируется для мобильных платформ и может иметь большую задержку.
Когда IPSec/IKEv2 предпочтителен: корпоративные политики, нативная поддержка IKEv2 на iOS/macOS, требования к взаимной аутентификации по сертификатам.
Когда стоит выбрать альтернативу: если нужна простая настройка и минимальный набор зависимостей — рассмотрите WireGuard.
Частые проблемы и способы их устранения
- Проблема: «Подключение не устанавливается» — проверьте логи charon и ipsec, убедитесь, что порты 500/4500 UDP открыты и что NAT-T работает.
- Проблема: «Клиент не получает IP» — проверьте rightsourceip и конфликт с локальной сетью клиента.
- Проблема: «Ошибка сертификата» — убедитесь, что на клиенте доверен CA chain.pem и что leftcert указывает на correct fullchain.pem.
Краткий глоссарий
- left / right: термины strongswan, обозначающие стороны соединения (left — локальный/сервер, right — удалённый/клиент).
- rightsourceip: пул IP, который выдаётся подключаемым клиентам.
- dpd: Dead Peer Detection — обнаружение недоступных пиров.
Совместимость и заметки миграции
- Конфигурация, описанная здесь, применима для CentOS 8 и аналогичных RHEL‑совместимых систем.
- При переходе с IKEv1/ценариев PSK проверьте конфликты с требованием уникальных идентификаторов (rightid, leftid).
- Обратите внимание: macOS/iOS автоматически поддерживают IKEv2 с EAP‑MSCHAPv2; Android использует приложение strongSwan для корректной работы.
Контрольные тесты (acceptance)
- Подключение с macOS: установлено, IP из пула, DNS резолвинг проходит.
- Подключение с Android (strongSwan app): установлено, трафик маршрутизируется и NAT работает.
- Логи сервера не содержат критических ошибок после поднятия туннеля.
Ресурсы и ссылки
- Официальная документация strongSwan: https://wiki.strongswan.org/
- Certbot: https://certbot.eff.org/
Итог: следуя шагам выше, вы получите работающее IKEv2/IPSec VPN на CentOS 8 с TLS‑сертификатом от Let’s Encrypt и аутентификацией по EAP‑MSCHAPv2. Проведите финальный аудит безопасности и настройте автоматическое обновление сертификатов.
Похожие материалы
Herodotus — Android‑троян и защита
Как включить новый Пуск в Windows 11
Панель полей сводной таблицы в Excel — быстрый разбор
Включение нового меню Пуск в Windows 11
Дубликаты Диспетчера задач в Windows 11 — как исправить