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

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

7 min read VPN Обновлено 27 Nov 2025
IKEv2 VPN на strongSwan + Let’s Encrypt (Rocky 9)
IKEv2 VPN на strongSwan + Let’s Encrypt (Rocky 9)

Логотип strongSwan и схематическая диаграмма VPN-соединения

Кому подходит это руководство

Это руководство ориентировано на администраторов и инженеров, которым нужен простой в использовании клиент‑к‑сайту (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

  1. Откройте Параметры → Сеть и Интернет → VPN.
  2. Нажмите «Добавить VPN‑подключение».
  3. В поле “Поставщик VPN” выберите Windows (по умолчанию), название подключения укажите удобное, сервер — vpn.example.com.
  4. Тип VPN — IKEv2. Тип входа — Имя пользователя и пароль.

Конфигурация VPN в Windows для strongSwan

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

Список подключений VPN в Windows

Совет: если Windows не подключается, проверьте журнал Событий и убедитесь, что сертификат сервера валиден и имя совпадает с Server Address.

Шаг 5 — Подключение: macOS

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

Добавление нового сетевого сервиса в macOS

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

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

macOS создаст ярлык в строке меню — оттуда можно быстро подключаться.

Шаг 6 — Подключение: Android

  1. Откройте Настройки → Сеть и Интернет → VPN.
  2. Нажмите + для добавления профиля.
  3. Введите имя, тип — IKEv2/IPSec MSCHAPv2.
  4. Сервер — vpn.example.com, IPSec Identifier — произвольная строка, введите логин/пароль.

Конфигурация strongSwan для Android

Сохраните и подключитесь.

Шаг 7 — Подключение: iOS

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

Настройки VPN в iOS

Нажмите «Готово» и переключите тумблер для подключения.

Краткая шпаргалка для пользователей

  • Сервер: 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

  1. Проверить сетевые правила и порты:
$ sudo firewall-cmd --list-all
$ sudo ss -ulpn | grep -E "(500|4500)"
  1. Проверить пересылку пакетов:
$ sysctl net.ipv4.ip_forward
  1. Проверить статус strongSwan и логи:
$ sudo systemctl status strongswan
$ sudo journalctl -u strongswan -r | head -n 200
$ sudo journalctl -f -u strongswan
  1. Проверить валидность сертификатов:
$ sudo openssl x509 -in /etc/letsencrypt/live/vpn.example.com/fullchain.pem -noout -text | grep -E "Not After|Issuer"
  1. Если клиент не получает IP‑адрес от пула — проверьте секцию pools в файле конфигурации и логи на предмет ошибок выдачи IP.

  2. Для проблем с аутентификацией 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, число пользователей, требования к маршрутизации) в комментариях или запросе, и я помогу адаптировать конфигурацию.

Примечание: приведённые здесь конфигурации примерные. Перед внедрением в продакшн протестируйте на стенде и адаптируйте под правила безопасности вашей организации.


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

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

Как выключить Samsung Galaxy Note10 и Note10+
Смартфоны

Как выключить Samsung Galaxy Note10 и Note10+

Переназначить кнопку Bixby на Samsung
Мобильные устройства

Переназначить кнопку Bixby на Samsung

Как удалить HackTool:Win32/Keygen — пошагово
Кибербезопасность

Как удалить HackTool:Win32/Keygen — пошагово

Как исправить Rocket League — ошибка 0
Игры

Как исправить Rocket League — ошибка 0

Windows 11‑оболочка для Steam: как установить
Руководство

Windows 11‑оболочка для Steam: как установить

Массовое изменение размера в gThumb
Руководство

Массовое изменение размера в gThumb