MAATRIX / Блог / SoftEther VPN на Debian 12: пошаговая установка

SoftEther VPN на Debian 12: пошаговая установка

MAATRIX

SoftEther — один из немногих VPN-серверов, который умеет одновременно говорить на нескольких протоколах: L2TP/IPsec, OpenVPN-совместимый режим, SSTP и собственный протокол SoftEther поверх HTTPS. В Debian 12 его нет в штатных репозиториях, поэтому единственный надёжный способ поставить актуальную версию — собрать из исходников. Ниже — пошаговая установка на чистый Debian 12 с настройкой Virtual Hub, пользователей и автозапуска через systemd.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Что такое SoftEther и когда он оправдан

SoftEther VPN — открытый проект (изначально университетская разработка, сейчас поддерживается сообществом и частично SoftEther Corporation), который реализует полноценный VPN-сервер с несколькими протоколами в одном демоне. В отличие от WireGuard или классического OpenVPN, где на сервере крутится один протокол, здесь один процесс vpnserver одновременно слушает L2TP/IPsec, SSTP, OpenVPN-клон и собственный протокол SoftEther, который умеет маскироваться под обычный HTTPS-трафик.

Практический смысл такой многопротокольности — совместимость с нативными клиентами. iPhone, Android и Windows умеют подключаться по L2TP/IPsec без установки дополнительного софта, а для более гибких сценариев есть отдельный клиент SoftEther с поддержкой UDP-акселерации. Если вам нужен один протокол под конкретную задачу и максимальная простота — присмотритесь к WireGuard или OpenVPN: они проще в аудите и стабильнее в эксплуатации. SoftEther оправдан, когда нужна гибкость по протоколам на одном сервере или встроенная маскировка трафика под HTTPS.

Подготовка сервера перед установкой

Перед сборкой обновите систему и поставьте инструменты, необходимые для компиляции. Если сервер только что развёрнут, сначала стоит пройтись по базовой защите — SSH-ключи, отключение входа под root, минимальный набор портов — как описано в материале про первичную настройку Debian 12.

apt update && apt upgrade -y
apt install -y build-essential libssl-dev libreadline-dev \
    libncurses5-dev zlib1g-dev wget tar git

Проверьте, что ядро отдаёт форвардинг пакетов — без него VPN-сервер не сможет маршрутизировать трафик клиентов:

sysctl net.ipv4.ip_forward

Если возвращается 0, включите форвардинг постоянно:

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p

Арендуйте сервер под свои задачи!

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Установка SoftEther VPN Server на Debian 12

Официальные релизы публикуются на GitHub в репозитории SoftEtherVPN/SoftEtherVPN_Stable. Версию и имя архива стоит уточнить на странице релизов перед скачиванием — они меняются, а жёстко прописанная в мануале ссылка быстро устаревает.

cd /usr/local/src
wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/<версия>/softether-vpnserver-<версия>-linux-x64-64bit.tar.gz
tar xzf softether-vpnserver-*.tar.gz
cd vpnserver
make

Сборка запросит согласие с лицензией (дважды нажмите 1, затем Enter). После успешной компиляции перенесите бинарники в постоянное место и выставьте права — сам проект настаивает на 700 для исполняемых файлов и 600 для ключей, иначе сервер откажется стартовать:

cd ..
mv vpnserver /usr/local/vpnserver
chmod 600 /usr/local/vpnserver/*.key /usr/local/vpnserver/*.crt 2>/dev/null
chmod 700 /usr/local/vpnserver/vpnserver /usr/local/vpnserver/vpncmd

Проверьте, что сервер вообще запускается:

/usr/local/vpnserver/vpnserver start
/usr/local/vpnserver/vpnserver check

Команда check должна показать Check.sh completed. All checks are passed — если чего-то не хватает (обычно OpenSSL или libreadline), она укажет прямо на это.

Автозапуск через systemd

Ручной запуск не переживёт перезагрузку, поэтому сразу оформите юнит:

cat > /etc/systemd/system/vpnserver.service <<'EOF'
[Unit]
Description=SoftEther VPN Server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable --now vpnserver
systemctl status vpnserver

Дальше сервер должен подниматься сам после reboot. Логи процесса можно смотреть двумя способами: через journalctl -u vpnserver (события systemd) и напрямую в /usr/local/vpnserver/security_log/ — там SoftEther пишет подробный протокол по каждому подключению.

Настройка Virtual Hub и пользователей через vpncmd

Вся конфигурация SoftEther делается через консольную утилиту vpncmd, которая подключается к локальному серверу и выполняет команды. Сначала задайте пароль администратора — по умолчанию его нет, и это первое, что нужно закрыть:

/usr/local/vpnserver/vpncmd localhost /SERVER

В интерактивной консоли:

ServerPasswordSet
HubCreate MyHub

ServerPasswordSet запросит новый административный пароль. HubCreate создаёт виртуальный концентратор — логическую сеть, к которой будут подключаться клиенты; на одном сервере их может быть несколько с разной изоляцией. Дальше переключитесь на созданный хаб и настройте пользователя:

Hub MyHub
UserCreate vpnuser /GROUP:none /REALNAME:none /NOTE:none
UserPasswordSet vpnuser

Если клиентам не нужен выход в интернет через сервер, а достаточно доступа к внутренней сети — используйте SecureNatEnable, встроенный NAT и DHCP-сервер SoftEther, без ручной настройки iptables:

SecureNatEnable

Для совместимости с нативными L2TP-клиентами (iPhone, Android, Windows «из коробки») включите IPsec-сервер с общим ключом (pre-shared key):

IPsecEnable /L2TP:yes /L2TPRAW:no /ETHERIP:no /PSK:ВашОбщийКлюч /DEFAULTHUB:MyHub

Общий ключ (PSK) и логин/пароль пользователя — это всё, что понадобится встроенному VPN-клиенту телефона или ноутбука для подключения без установки стороннего софта.

Firewall, порты и типичные ошибки конфигурации

SoftEther слушает сразу несколько портов, и если сервер стоит за firewall (в том числе облачным — Security Group у провайдера), нужно открыть их все. Разбор портов удобно свести в таблицу:

ПортПротоколНазначение
500/udpIKEСогласование IPsec для L2TP
4500/udpNAT-TIPsec поверх NAT
1701/udpL2TPТуннель L2TP (обычно инкапсулируется в IPsec)
443/tcpHTTPSРодной протокол SoftEther, также SSTP
992/tcpАдминистративный доступ vpncmd (можно закрыть извне)
5555/tcpАльтернативный порт SoftEther-протокола

Если у вас настроен nftables или iptables вручную, порядок действий и логика цепочек подробно разобраны в материале про настройку firewall на Debian 12 — принципы там применимы к любому сервису, включая SoftEther.

Частая ошибка — сервер поднялся, порты открыты, а клиент всё равно не подключается по L2TP/IPsec. В девяти случаях из десяти дело в одном из трёх факторов:

  • Клиент сам за NAT. У Windows есть известная особенность: IPsec NAT-T по умолчанию отключён для клиентов за NAT. Нужно править реестр (AssumeUDPEncapsulationContextOnSendRule в HKLM\SYSTEM\CurrentControlSet\Services\PolicyAgent) и выставить значение 2.
  • Провайдер блокирует UDP 500/4500. Некоторые мобильные и домашние сети режут IKE-трафик. В этом случае остаётся либо родной протокол SoftEther поверх TCP 443 (он не блокируется наравне с обычным HTTPS), либо переход на другой протокол.
  • PSK не совпадает. SoftEther не всегда явно указывает на это в логе клиента — на сервере ошибка будет видна в security_log, на клиенте иногда просто «истекло время ожидания».

Арендуйте сервер под свои задачи!

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.

Частые вопросы

Можно ли поставить SoftEther из apt на Debian 12?

Нет, в официальных репозиториях Debian пакета SoftEther нет. Работоспособный вариант — сборка из исходников, как описано выше, либо готовый бинарный релиз с GitHub (если он собран под вашу архитектуру).

SoftEther и OpenVPN на одном сервере — это конфликт?

Штатный OpenVPN-демон и встроенный в SoftEther OpenVPN-клон слушают разные порты по умолчанию, поэтому конфликта нет, если явно не назначить им одинаковый порт. Но держать два разных VPN-стека на одной машине усложняет диагностику — обычно выбирают что-то одно.

Нужен ли отдельный сертификат для HTTPS-режима SoftEther?

Сервер генерирует самоподписанный сертификат при первом запуске. Для продакшена его стоит заменить на сертификат от Let's Encrypt через ServerCertSet в vpncmd, иначе клиенты будут видеть предупреждение о недоверенном сертификате.

Как понять, что сервер реально работает, а не просто запущен процесс?

Проверьте, что нужные порты слушаются: ss -tulnp | grep vpnserver, и посмотрите security_log на предмет успешных SessionEstablished при тестовом подключении клиента.

SoftEther тяжелее по нагрузке, чем WireGuard?

Да, заметно. Многопротокольность и обработка в userspace дают накладные расходы, которых нет у WireGuard в ядре. Для одного-двух устройств разница не критична, для десятков активных туннелей — уже ощутима.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →