- Home »

Настройка VPN сервера IKEv2 с StrongSwan на Ubuntu 24
Сегодня поговорим о том, как поднять VPN-сервер на базе IKEv2 с помощью StrongSwan на Ubuntu 24. Это одна из самых эффективных и безопасных связок для создания VPN-туннелей. StrongSwan — это open-source IPsec-демон, который отлично работает с протоколом IKEv2, обеспечивая высокую скорость соединения и автоматическое переподключение при смене сети.
Если вы админите серверы и хотите получить производительный VPN для команды или личного использования, то IKEv2 + StrongSwan — это выбор профессионалов. Протокол изначально создавался для мобильных устройств, поэтому он отлично справляется с нестабильными соединениями и быстро восстанавливает связь.
Почему именно IKEv2 и StrongSwan?
IKEv2 (Internet Key Exchange version 2) — это современный протокол для установки IPsec-соединений. В отличие от OpenVPN, который работает в userspace, IKEv2 использует встроенную в ядро поддержку IPsec, что дает серьезный прирост производительности.
StrongSwan — де-факто стандарт для IPsec на Linux. Проект активно развивается с 2005 года и поддерживает все современные криптографические алгоритмы. Главные преимущества:
- Высокая производительность благодаря работе в kernel space
- Автоматическое переподключение при смене сети (MOBIKE)
- Нативная поддержка в iOS, macOS, Windows 10/11
- Возможность использования сертификатов для аутентификации
- Поддержка EAP-методов аутентификации
Сравнение с другими VPN-решениями
Параметр | IKEv2/StrongSwan | OpenVPN | WireGuard |
---|---|---|---|
Производительность | Высокая (kernel space) | Средняя (userspace) | Очень высокая |
Стабильность соединения | Отличная (MOBIKE) | Хорошая | Хорошая |
Нативная поддержка клиентов | Да (iOS, macOS, Windows) | Нет | Частично |
Сложность настройки | Средняя | Простая | Простая |
Обход блокировок | Средний | Отличный | Плохой |
Подготовка сервера
Для начала нам понадобится VPS с Ubuntu 24.04. Рекомендую взять сервер с минимум 1GB RAM и 1 CPU core. Если планируете много одновременных подключений, то лучше заказать VPS помощнее или даже выделенный сервер.
Обновляем систему и устанавливаем необходимые пакеты:
sudo apt update && sudo apt upgrade -y
sudo apt install strongswan strongswan-pki libcharon-extra-plugins libcharon-extauth-plugins libstrongswan-extra-plugins -y
sudo apt install certbot -y
Включаем IP forwarding для маршрутизации трафика:
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
echo 'net.ipv6.conf.all.forwarding=1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
Создание PKI инфраструктуры
Одна из крутых фич IKEv2 — возможность использовать сертификаты для аутентификации. Это намного безопаснее PSK (Pre-Shared Key) и позволяет легко управлять доступом пользователей.
Создаем структуру каталогов для сертификатов:
mkdir -p ~/pki/{cacerts,certs,private}
chmod 700 ~/pki
Генерируем корневой сертификат CA:
cd ~/pki
ipsec pki --gen --type rsa --size 4096 --outform pem > private/ca-key.pem
ipsec pki --self --ca --lifetime 3652 --in private/ca-key.pem --type rsa \
--dn "CN=VPN Root CA" --outform pem > cacerts/ca-cert.pem
Генерируем сертификат для сервера (замените your-server.com на ваш домен или IP):
ipsec pki --gen --type rsa --size 4096 --outform pem > private/server-key.pem
ipsec pki --pub --in private/server-key.pem --type rsa | \
ipsec pki --issue --lifetime 1825 --cacert cacerts/ca-cert.pem \
--cakey private/ca-key.pem --dn "CN=your-server.com" \
--san your-server.com --flag serverAuth --flag ikeIntermediate \
--outform pem > certs/server-cert.pem
Копируем сертификаты в системную директорию:
sudo cp ~/pki/cacerts/ca-cert.pem /etc/ipsec.d/cacerts/
sudo cp ~/pki/certs/server-cert.pem /etc/ipsec.d/certs/
sudo cp ~/pki/private/server-key.pem /etc/ipsec.d/private/
sudo chown root:root /etc/ipsec.d/private/server-key.pem
sudo chmod 600 /etc/ipsec.d/private/server-key.pem
Настройка StrongSwan
Теперь настраиваем основную конфигурацию StrongSwan. Создаем файл /etc/ipsec.conf
:
sudo tee /etc/ipsec.conf > /dev/null <
Создаем файл с секретами для пользователей /etc/ipsec.secrets
:
sudo tee /etc/ipsec.secrets > /dev/null <
Устанавливаем правильные права доступа:
sudo chmod 600 /etc/ipsec.secrets
Настройка файрвола
Настраиваем UFW для работы с VPN. Сначала разрешаем необходимые порты:
sudo ufw allow OpenSSH
sudo ufw allow 500/udp
sudo ufw allow 4500/udp
Редактируем файл /etc/ufw/before.rules
и добавляем правила NAT в начало файла (после комментариев):
sudo tee -a /etc/ufw/before.rules > /dev/null <
Также нужно отредактировать /etc/ufw/before.rules
и добавить правила для ESP и AH протоколов перед строкой # drop INVALID packets
:
# allow all on loopback
-A ufw-before-input -i lo -j ACCEPT
-A ufw-before-output -o lo -j ACCEPT
# allow ESP traffic
-A ufw-before-input -p esp -j ACCEPT
# allow AH traffic
-A ufw-before-input -p ah -j ACCEPT
# allow IPsec traffic
-A ufw-before-input -p udp --dport 500 -j ACCEPT
-A ufw-before-input -p udp --dport 4500 -j ACCEPT
# allow forwarding for trusted network
-A ufw-before-forward -s 10.10.10.0/24 -j ACCEPT
-A ufw-before-forward -d 10.10.10.0/24 -j ACCEPT
Включаем UFW:
sudo ufw enable
sudo ufw reload
Запуск и тестирование
Запускаем StrongSwan и добавляем в автозагрузку:
sudo systemctl enable strongswan-starter
sudo systemctl start strongswan-starter
sudo systemctl status strongswan-starter
Проверяем конфигурацию:
sudo ipsec verify
Если все настроено правильно, вы должны увидеть что-то вроде:
Checking your system to see if IPsec got installed and started correctly:
Version check and ipsec on-path [OK]
Libreswan 4.x IPsec on Ubuntu 24.04 [OK]
Checking for IPsec support in kernel [OK]
...
Перезагружаем IPsec:
sudo ipsec reload
sudo ipsec status
Создание сертификатов для клиентов
Для каждого клиента можно создать отдельный сертификат. Это более безопасно чем EAP-аутентификация:
cd ~/pki
ipsec pki --gen --type rsa --size 4096 --outform pem > private/client-key.pem
ipsec pki --pub --in private/client-key.pem --type rsa | \
ipsec pki --issue --lifetime 1825 --cacert cacerts/ca-cert.pem \
--cakey private/ca-key.pem --dn "CN=client@your-server.com" \
--san client@your-server.com --flag clientAuth --outform pem > certs/client-cert.pem
Для удобства можно создать PKCS#12 файл для импорта в клиентские приложения:
openssl pkcs12 -export -inkey private/client-key.pem -in certs/client-cert.pem -name "client@your-server.com" -certfile cacerts/ca-cert.pem -caname "VPN Root CA" -out client.p12
Настройка клиентов
iOS/macOS:
- Установите сертификат CA через Safari или AirDrop
- В настройках VPN выберите IKEv2
- Введите адрес сервера и данные для аутентификации
Windows 10/11:
- Импортируйте сертификат CA в “Доверенные корневые центры сертификации”
- Создайте VPN-подключение типа IKEv2
- Используйте EAP-аутентификацию
Android:
- Используйте strongSwan приложение из Google Play
- Импортируйте сертификат CA и настройте профиль
Мониторинг и отладка
Для мониторинга состояния VPN-соединений используйте:
# Просмотр активных соединений
sudo ipsec status
# Просмотр логов
sudo journalctl -u strongswan-starter -f
# Перезагрузка конфигурации
sudo ipsec reload
# Принудительное завершение всех соединений
sudo ipsec down ikev2-vpn
Для отладки увеличьте уровень логирования в /etc/ipsec.conf
:
config setup
charondebug="ike 2, knl 2, cfg 2, net 2, asn 2, enc 2, lib 2, esp 2, tls 2, tnc 2, imc 2, imv 2, pts 2"
Автоматизация и скрипты
Создаем скрипт для автоматического добавления пользователей:
#!/bin/bash
# add_vpn_user.sh
USERNAME=$1
PASSWORD=$2
if [ -z "$USERNAME" ] || [ -z "$PASSWORD" ]; then
echo "Usage: $0 "
exit 1
fi
# Добавляем пользователя в secrets
echo "$USERNAME : EAP \"$PASSWORD\"" | sudo tee -a /etc/ipsec.secrets
# Перезагружаем конфигурацию
sudo ipsec reload
echo "User $USERNAME added successfully"
Скрипт для мониторинга активных соединений:
#!/bin/bash
# vpn_monitor.sh
while true; do
clear
echo "=== VPN Connections Status ==="
echo "Date: $(date)"
echo
# Активные соединения
sudo ipsec status | grep -E "(ESTABLISHED|INSTALLED)"
# Статистика использования
echo
echo "=== Traffic Statistics ==="
sudo ipsec statusall | grep -A2 -B2 "bytes"
sleep 30
done
Оптимизация производительности
Для повышения производительности на высоконагруженных серверах:
# Увеличиваем лимиты в /etc/security/limits.conf
echo "* soft nofile 65535" | sudo tee -a /etc/security/limits.conf
echo "* hard nofile 65535" | sudo tee -a /etc/security/limits.conf
# Оптимизируем сетевые параметры
sudo tee -a /etc/sysctl.conf > /dev/null <
Безопасность и best practices
Несколько важных рекомендаций по безопасности:
- Используйте сильные пароли или лучше сертификаты для аутентификации
- Регулярно обновляйте систему и StrongSwan
- Настройте fail2ban для защиты от брутфорса
- Используйте отдельные сертификаты для каждого клиента
- Настройте ротацию логов
Установка и настройка fail2ban:
sudo apt install fail2ban -y
# Создаем jail для StrongSwan
sudo tee /etc/fail2ban/jail.local > /dev/null <
Интеграция с другими системами
StrongSwan можно интегрировать с различными системами аутентификации:
- LDAP/Active Directory — для корпоративных сред
- RADIUS — для интеграции с существующими AAA-системами
- SQL базы данных — для динамического управления пользователями
Пример интеграции с MySQL:
sudo apt install libcharon-extra-plugins -y
# В /etc/strongswan.d/charon/sql.conf
sql {
database = mysql://strongswan:password@localhost/strongswan
load = yes
}
Интересные факты и нестандартные применения
StrongSwan может использоваться не только для remote access VPN, но и для:
- Site-to-Site VPN — соединение офисов
- Container networking — защищенные соединения между Docker контейнерами
- IoT security — защита коммуникаций IoT устройств
- Cloud interconnect — соединение с AWS VPC, Azure VNet
Любопытно, что StrongSwan поддерживает даже экзотические алгоритмы шифрования, включая российские ГОСТ алгоритмы (при наличии соответствующих плагинов).
Заключение и рекомендации
IKEv2 с StrongSwan — это надежное, производительное и безопасное решение для VPN. Оно особенно подходит для случаев, когда нужна стабильная работа на мобильных устройствах и высокая производительность.
Рекомендую использовать когда:
- Нужна максимальная совместимость с нативными клиентами
- Важна стабильность соединения при смене сетей
- Требуется высокая производительность
- Планируется корпоративное использование
Не рекомендую если:
- Нужен обход блокировок (лучше использовать OpenVPN с обфускацией)
- Требуется максимальная простота настройки (WireGuard проще)
- Работаете в странах с агрессивным DPI
StrongSwan продолжает активно развиваться, и сообщество регулярно выпускает обновления. Следите за новостями на официальном сайте https://strongswan.org и не забывайте обновлять систему.
Удачи в настройке! Если что-то пошло не так — внимательно изучите логи, обычно там есть вся необходимая информация для диагностики проблем.
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.