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

Установка и настройка IKEv2 VPN (Strongswan + Let's Encrypt) на CentOS 8

6 min read VPN Обновлено 29 Oct 2025
Strongswan IKEv2 VPN на CentOS 8
Strongswan IKEv2 VPN на 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

Подождите, пока пакет будет установлен.

Установка Strongswan на CentOS 8

Примечание: в минимальных сборках потребуется установить дополнительные пакеты для поддержки конкретных криптоалгоритмов; 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/

Сертификаты для Strongswan

Совет: настроите автоматическое обновление сертификатов (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

Запуск демона Strongswan

Проверка состояния:

systemctl status strongswan
netstat -plntu

Strongswan успешно запущен

Важно: в 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

Конфигурация firewall

Шаг 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

Включение IP forwarding

Шаг 6 — Тестирование подключения

Мы приводим примеры для macOS и Android.

На macOS

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

Конфигурация VPN на macOS

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

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

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

Подключение на macOS

На Android

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

Настройка VPN на Android


Тесты и критерии приёмки

  • Клиент получает 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 перестал работать:

  1. Откатите ipsec.conf к резервной копии: mv /etc/strongswan/ipsec.conf.asli /etc/strongswan/ipsec.conf
  2. Перезапустите службу: systemctl restart strongswan
  3. Проверяйте логи journalctl -u strongswan -f
  4. Временно отключите firewall правила, чтобы исключить блокировку портов: firewall-cmd –reload –complete-reload (только для диагностики).
  5. Если проблема в сертификате, временно используйте самоподписанный сертификат для диагностики и проверьте соединение.

Укрепление безопасности (рекомендации)

  • Используйте сильные пароли для 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 работает.
  • Логи сервера не содержат критических ошибок после поднятия туннеля.

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


Итог: следуя шагам выше, вы получите работающее IKEv2/IPSec VPN на CentOS 8 с TLS‑сертификатом от Let’s Encrypt и аутентификацией по EAP‑MSCHAPv2. Проведите финальный аудит безопасности и настройте автоматическое обновление сертификатов.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

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

Herodotus — Android‑троян и защита
Кибербезопасность

Herodotus — Android‑троян и защита

Как включить новый Пуск в Windows 11
Windows

Как включить новый Пуск в Windows 11

Панель полей сводной таблицы в Excel — быстрый разбор
Excel

Панель полей сводной таблицы в Excel — быстрый разбор

Включение нового меню Пуск в Windows 11
Windows

Включение нового меню Пуск в Windows 11

Дубликаты Диспетчера задач в Windows 11 — как исправить
Windows

Дубликаты Диспетчера задач в Windows 11 — как исправить

Как посмотреть историю просмотров Reels в Instagram
Социальные сети

Как посмотреть историю просмотров Reels в Instagram