Привет, коллеги! Сегодня разберём вопрос, который задаёт каждый второй админ после очередного «импортозамещения» корпоративных сервисов: какой VPN-сервер накатить на Ubuntu 24.04 LTS, чтобы юзеры подключались со своих айфонов, андроидов и винды без установки левых приложений из сомнительных источников?
Спойлер: правильный ответ существует, и он не требует от вас степени PhD в криптографии. Просто нужно понимать, какие протоколы уже вшиты в операционки из коробки, а какие заставят пользователей гуглить «как установить OpenVPN клиент» (спойлер №2: они не будут).
Матрица поддержки VPN-протоколов: что работает нативно
Перед тем как разворачивать инфраструктуру, давайте посмотрим на суровую реальность. Вот таблица, которую я составил после многочасового изучения документации и личного опыта работы с корпоративными VPN:
| VPN Протокол | Windows 10-11 | iOS 18 | Android 16 | macOS 15 |
|---|---|---|---|---|
| IKEv2/IPsec | ✅ Да | ✅ Да | ✅ Да | ✅ Да |
| L2TP/IPsec | ✅ Да | ✅ Да | ✅ Да | ✅ Да |
| PPTP | ⚠️ Устарел | ❌ Удалён в iOS 10 | ⚠️ Устарел | ❌ Удалён |
| SSTP | ✅ Да | ❌ Нет | ❌ Нет | ❌ Нет |
| OpenVPN | ❌ Нужен клиент | ❌ Нужен клиент | ❌ Нужен клиент | ❌ Нужен клиент |
| WireGuard | ❌ Нужен клиент | ❌ Нужен клиент | ❌ Нужен клиент | ❌ Нужен клиент |
Примечание: iOS 18, Android 16 и macOS 15 — это актуальные версии на момент написания статьи. Если ты из будущего, проверь совместимость для своих версий, но общая картина не должна сильно измениться.
Победитель очевиден: IKEv2/IPsec
Как видите, если нужна максимальная совместимость без плясок с бубном — выбор один: IKEv2/IPsec. Это единственный протокол, который работает нативно на всех мажорных платформах. L2TP/IPsec тоже везде есть, но он медленнее и морально устарел (хотя всё ещё юзабельный).
OpenVPN и WireGuard — безусловно крутые ребята с точки зрения технологий, но они требуют установки стороннего софта. А это означает тикеты в поддержку, объяснения бабушкам из бухгалтерии, как установить приложение, и вечные «а у меня не работает». Нам оно надо? Правильно, не надо.
Поднимаем StrongSwan на Ubuntu 24.04
StrongSwan — это opensource-реализация IPsec, которая отлично работает с IKEv2. Проверенная временем, стабильная как швейцарские часы (да, каламбур намеренный), и главное — прекрасно документированная.
Пример 1: Базовая установка StrongSwan
Первым делом обновляем систему и ставим необходимые пакеты:
sudo apt update && sudo apt upgrade -y sudo apt install strongswan strongswan-pki libcharon-extra-plugins libcharon-extauth-plugins libstrongswan-extra-plugins -y
Почему столько пакетов? strongswan-pki нужен для генерации сертификатов, а дополнительные плагины добавляют поддержку EAP-аутентификации, которая критична для мобильных клиентов.
Пример 2: Генерация сертификатов (без этого никуда)
Сертификаты — это святое. Без них IKEv2 работать не будет. Генерируем CA (Certificate Authority), серверный сертификат и клиентские:
# Создаём директорию для сертификатов
mkdir -p ~/vpn-certs && cd ~/vpn-certs
# Генерируем приватный ключ для CA
ipsec pki --gen --type rsa --size 4096 --outform pem > ca-key.pem
# Создаём самоподписанный CA сертификат
ipsec pki --self --ca --lifetime 3650 --in ca-key.pem \
--type rsa --dn "CN=VPN Root CA" --outform pem > ca-cert.pem
# Генерируем ключ для VPN-сервера
ipsec pki --gen --type rsa --size 4096 --outform pem > server-key.pem
# Создаём серверный сертификат (ВАЖНО: замените vpn.example.com на ваш домен или IP)
ipsec pki --pub --in server-key.pem --type rsa | \
ipsec pki --issue --lifetime 1825 --cacert ca-cert.pem \
--cakey ca-key.pem --dn "CN=vpn.example.com" --san vpn.example.com \
--flag serverAuth --flag ikeIntermediate --outform pem > server-cert.pem
# Копируем сертификаты в нужные места
sudo cp ca-cert.pem /etc/ipsec.d/cacerts/
sudo cp server-cert.pem /etc/ipsec.d/certs/
sudo cp server-key.pem /etc/ipsec.d/private/
Pro tip: --san vpn.example.com (Subject Alternative Name) — это обязательно! Современные клиенты без SAN сертификат не примут. Я потратил три часа дебага, пока не вспомнил про эту фичу.
Пример 3: Конфигурация StrongSwan
Теперь магия — настраиваем /etc/ipsec.conf. Бэкапим оригинал и пишем свой конфиг:
sudo mv /etc/ipsec.conf /etc/ipsec.conf.bak sudo nano /etc/ipsec.conf
Вставляем следующую конфигурацию:
config setup
charondebug="ike 1, knl 1, cfg 0"
uniqueids=no
conn ikev2-vpn
auto=add
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
# Настройки шифрования (используем сильные алгоритмы)
ike=aes256-sha256-modp2048,aes256-sha1-modp2048,3des-sha1-modp2048!
esp=aes256-sha256,aes256-sha1,3des-sha1!
# Время жизни соединений
dpdaction=clear
dpddelay=300s
rekey=no
# Левая сторона (сервер)
left=%any
leftid=@vpn.example.com
leftcert=server-cert.pem
leftsendcert=always
leftsubnet=0.0.0.0/0
# Правая сторона (клиенты)
right=%any
rightid=%any
rightauth=eap-mschapv2
rightsourceip=10.10.10.0/24
rightdns=8.8.8.8,8.8.4.4
rightsendcert=never
# EAP аутентификация
eap_identity=%identity
Что тут происходит? rightsourceip=10.10.10.0/24 — это пул адресов для клиентов. rightauth=eap-mschapv2 — аутентификация по логину/паролю (удобно для пользователей). rightdns — DNS-серверы, которые получат клиенты.
Пример 4: Добавление пользователей
Настраиваем файл с креденшалами пользователей:
sudo nano /etc/ipsec.secrets
Добавляем:
# Ключ сервера : RSA "server-key.pem" # Пользователи (формат: username : EAP "password") ivan : EAP "SuperSecretPassword123!" maria : EAP "AnotherStrongPass456@" boss : EAP "ILoveVPN2024#"
Сохраняем и защищаем файл:
sudo chmod 600 /etc/ipsec.secrets
Пример 5: Настройка форвардинга и firewall
Включаем IP forwarding и настраиваем NAT для VPN-трафика:
# Включаем 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
# Определяем сетевой интерфейс (обычно eth0 или ens3)
INTERFACE=$(ip route | grep default | awk '{print $5}')
# Настраиваем UFW
sudo ufw allow 500/udp
sudo ufw allow 4500/udp
sudo ufw allow OpenSSH
# Добавляем правила NAT для UFW
sudo nano /etc/ufw/before.rules
В начало файла /etc/ufw/before.rules (перед строкой *filter) добавляем:
*nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.10.10.0/24 -o eth0 -m policy --pol ipsec --dir out -j ACCEPT -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE COMMIT *mangle :FORWARD ACCEPT [0:0] -A FORWARD -s 10.10.10.0/24 -o eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360 COMMIT
Также в том же файле находим секцию *filter и добавляем:
# Разрешаем форвардинг для VPN -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 и StrongSwan:
sudo ufw disable && sudo ufw enable sudo systemctl restart strongswan-starter sudo systemctl enable strongswan-starter
Проверяем статус:
sudo ipsec status
Если видите что-то вроде «Security Associations (0 up, 0 connecting)» — всё ок, ждём подключений клиентов.
Подключаем клиентов
Windows 10/11
Настройки → Сеть и Интернет → VPN → Добавить VPN-подключение. Тип VPN: IKEv2, адрес сервера: vpn.example.com, тип данных для входа: Имя пользователя и пароль. Вводим креды из ipsec.secrets и коннектимся. Profit!
iOS/iPadOS
Настройки → Основные → VPN и управление устройством → VPN → Добавить конфигурацию VPN. Тип: IKEv2, описание: My VPN, сервер: vpn.example.com, удалённый ID: vpn.example.com, локальный ID: оставить пустым, аутентификация: имя пользователя. Вводим логин/пароль и вуаля — работает.
Android
Настройки → Сеть и Интернет → VPN → добавить VPN. Тип: IKEv2/IPsec PSK или IKEv2/IPsec RSA (в зависимости от версии Android). Адрес сервера, логин, пароль — всё как обычно. Android иногда капризничает с сертификатами, но в 99% случаев подключается без проблем.
macOS
Системные настройки → Сеть → добавить VPN-соединение → тип IKEv2. Заполняем поля аналогично iOS. Apple-устройства любят IKEv2, так что проблем быть не должно.
Траблшутинг: когда всё пошло не так
Проверяем логи StrongSwan:
sudo journalctl -u strongswan-starter -f
Самые частые проблемы:
- Клиент не подключается — проверьте, открыты ли порты 500/udp и 4500/udp, правильно ли указан домен/IP в сертификате и конфиге.
- «No proposal chosen» — несовпадение алгоритмов шифрования. Добавьте в конфиг более слабые алгоритмы (3des, sha1) для совместимости со старыми клиентами.
- Нет интернета через VPN — не настроен NAT или IP forwarding. Перепроверьте правила UFW и sysctl.
- «Certificate validation failed» — клиент не доверяет вашему CA. На Windows/macOS нужно импортировать
ca-cert.pemв хранилище доверенных сертификатов.
А что насчёт L2TP/IPsec?
L2TP — это fallback-вариант. Если по каким-то причинам IKEv2 у вас не взлетел (хотя это маловероятно), можно поднять L2TP/IPsec через xl2tpd. Но честно — в 2025 году L2TP это как приехать на встречу на Жигулях. Работает, но вопросы вызывает.
Конфигурация L2TP сложнее, тормозит сильнее, и вообще это прошлый век. Используйте только если IKEv2 категорически не подходит (а такого в природе почти не бывает).
Альтернативы для гиков (но с оговорками)
WireGuard — это Ferrari среди VPN. Быстрый, современный, с минималистичным кодом. Но требует клиентов. Если ваша аудитория — продвинутые пользователи или IT-отдел, WireGuard рулит. Для бухгалтерии и отдела продаж — nope.
OpenVPN — старый добрый дедушка, который всё ещё в строю. Гибкий, настраиваемый до безумия, но опять же — нужны клиенты. Плюс конфиги OpenVPN — это отдельный вид искусства (или мазохизма, зависит от точки зрения).
Итоговый чеклист
Итак, резюмируем:
- Для максимальной совместимости без клиентов — только IKEv2/IPsec через StrongSwan.
- Генерируем сертификаты правильно (с SAN!), иначе будете отлаживать полночи.
- Настраиваем файрвол и NAT — без этого VPN работать не будет.
- Тестируем на всех платформах — Windows, iOS, Android, macOS.
- Документируем настройки для пользователей — сэкономите себе кучу времени на поддержке.
Главное правило системного администратора: если решение не работает из коробки для пользователя, значит, оно не работает. Период. IKEv2 на Ubuntu 24 с StrongSwan — это exactly то, что работает везде и всегда. Проверено лично, обкатано в бою, одобрено пользователями.
Удачи в настройке! И помните: правильно настроенный VPN — это когда о его существовании пользователи вспоминают только при необходимости подключиться, а не когда «опять всё сломалось».


