Какой VPN сервер установить на Ubuntu для нативного подключения

Какой VPN сервер установить на Ubuntu 24 для нативного подключения

Привет, коллеги! Сегодня разберём вопрос, который задаёт каждый второй админ после очередного «импортозамещения» корпоративных сервисов: какой 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 — это отдельный вид искусства (или мазохизма, зависит от точки зрения).

Итоговый чеклист

Итак, резюмируем:

  1. Для максимальной совместимости без клиентов — только IKEv2/IPsec через StrongSwan.
  2. Генерируем сертификаты правильно (с SAN!), иначе будете отлаживать полночи.
  3. Настраиваем файрвол и NAT — без этого VPN работать не будет.
  4. Тестируем на всех платформах — Windows, iOS, Android, macOS.
  5. Документируем настройки для пользователей — сэкономите себе кучу времени на поддержке.

Главное правило системного администратора: если решение не работает из коробки для пользователя, значит, оно не работает. Период. IKEv2 на Ubuntu 24 с StrongSwan — это exactly то, что работает везде и всегда. Проверено лично, обкатано в бою, одобрено пользователями.

Удачи в настройке! И помните: правильно настроенный VPN — это когда о его существовании пользователи вспоминают только при необходимости подключиться, а не когда «опять всё сломалось».

over_dude
Author: over_dude

Поделитесь:

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх