Что такое SSTP и почему он актуален для Ubuntu
SSTP (Secure Socket Tunneling Protocol) — протокол VPN, разработанный Microsoft как более безопасная альтернатива PPTP. Его ключевая особенность — использование TLS-туннеля поверх стандартного HTTPS-порта 443. Это позволяет соединению маскироваться под обычный веб-трафик, что особенно полезно в сетях с жёсткими межсетевыми экранами, где блокируются другие VPN-протоколы (OpenVPN, WireGuard, IPsec).
Для Ubuntu SSTP интересен тем, что официальная поддержка протокола на серверной стороне в Linux исторически ограничена. Однако с помощью клиента sstp-client и серверного решения SoftEther можно организовать полноценное SSTP-соединение. SSTP обеспечивает шифрование данных и аутентификацию, что делает его пригодным для безопасного удалённого доступа к корпоративным ресурсам или для обхода цензуры в странах с ограничениями на VPN-трафик.
Важно понимать, что SSTP не является универсальным решением: он менее гибок, чем OpenVPN, и его производительность может быть ниже из-за двойной инкапсуляции (TLS поверх TCP). Тем не менее, для сценариев, где требуется гарантированный доступ через прокси или файрволы, SSTP остаётся востребованным.
Установка SSTP-клиента на Ubuntu
Для подключения к SSTP-серверу на Ubuntu используется пакет sstp-client. Установка выполняется из официальных репозиториев:
sudo apt update
sudo apt install sstp-clientПакет включает в себя утилиту sstp-client, которая позволяет устанавливать соединение из командной строки. Для пользователей, предпочитающих графический интерфейс, существует расширение Network Manager — network-manager-sstp-gnome. Его можно установить аналогично:
sudo apt install network-manager-sstp-gnomeПосле установки расширения SSTP появляется в списке типов VPN-подключений в настройках сети Ubuntu. Это удобно для тех, кто не хочет работать с терминалом. Однако для автоматизации или тонкой настройки чаще используют командную строку.
Перед установкой убедитесь, что система обновлена, чтобы избежать конфликтов версий. Если пакет не найден, возможно, потребуется включить репозиторий universe.
Настройка SSTP-клиента через конфигурационный файл
Основной способ настройки sstp-client — использование конфигурационного файла. Обычно он располагается в /etc/sstp/sstp.conf. Создайте его с правами root:
sudo nano /etc/sstp/sstp.confМинимальный пример конфигурации для подключения к серверу с адресом 192.168.1.1:
[global]
server = 192.168.1.1
port = 443
username = your_username
password = your_password
[client]
type = external
compression = no
link = 0.0.0.0 0.0.0.0Здесь server — адрес SSTP-сервера, port — порт (по умолчанию 443), username и password — учётные данные для аутентификации. Параметр compression = no отключает сжатие, что может быть полезно для совместимости. Секция [client] задаёт параметры локального интерфейса.
После сохранения файла подключение выполняется командой:
sudo sstp-client -c /etc/sstp/sstp.confПроцесс останется в фоне, создавая виртуальный интерфейс ppp0. Для проверки соединения используйте ip addr show ppp0 или ping до удалённого ресурса. Чтобы разорвать соединение, завершите процесс sstp-client (например, sudo pkill sstp-client).
Настройка SSTP через Network Manager (GUI)
Для пользователей, предпочитающих графический интерфейс, Ubuntu предоставляет интеграцию SSTP через Network Manager. После установки пакета network-manager-sstp-gnome выполните следующие шаги:
- Откройте «Настройки» → «Сеть».
- Нажмите «+» рядом с разделом VPN.
- Выберите тип подключения «Туннельный протокол типа точка-точка (SSTP)».
- Заполните поля: «Имя» (например, VPN-SSTP), «Шлюз» (адрес сервера), «Имя пользователя» и «Пароль».
- Нажмите «Дополнительно» (Advanced).
- В настройках аутентификации снимите флажок с метода MSCHAP, оставив только MSCHAPv2.
- Отключите шифрование MPPE, если сервер его не поддерживает.
- Сохраните настройки и подключитесь, выбрав созданное VPN-соединение в списке сетей.
Этот метод удобен для разовых подключений и не требует редактирования текстовых файлов. Однако он менее гибок для автоматизации и может не поддерживать все опции, доступные в конфигурационном файле.
Создание SSTP-сервера на Ubuntu с помощью SoftEther
Если вам нужно организовать собственный SSTP-сервер на Ubuntu, одно из немногих решений — SoftEther VPN Server. Это свободное кроссплатформенное ПО с открытым исходным кодом, поддерживающее несколько протоколов, включая SSTP. SoftEther распространяется в виде исходного кода, поэтому требуется компиляция.
Установите необходимые зависимости:
sudo apt update
sudo apt install wget make gcc binutilsЗагрузите последнюю стабильную версию с официального сайта или GitHub. Например, для версии 4.44-9807-rtm:
wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.44-9807-rtm/softether-vpnserver-v4.44-9807-rtm-2025.04.16-linux-x64-64bit.tar.gzРаспакуйте архив и перейдите в каталог:
tar xzvf softether-vpnserver-*.tar.gz
cd vpnserverЗапустите сборку:
makeПри ошибках установите недостающие пакеты и повторите. После успешной компиляции переместите каталог в /usr/local и настройте права:
sudo mv vpnserver /usr/local/
sudo chmod -R 600 /usr/local/vpnserver/*
sudo chmod 700 /usr/local/vpnserver/vpnserver
sudo chmod 700 /usr/local/vpnserver/vpncmdТеперь SoftEther готов к настройке.
Настройка systemd для автоматического запуска SoftEther
Чтобы SoftEther запускался автоматически при загрузке системы, создайте unit-файл systemd. Откройте файл /usr/lib/systemd/system/softether.service:
sudo nano /usr/lib/systemd/system/softether.serviceВставьте следующее содержимое:
[Unit]
Description=SoftEther VPN Server
After=network.target auditd.service
ConditionPathExists=!/usr/local/vpnserver/do_not_run
[Service]
Type=forking
WorkingDirectory=/usr/local/vpnserver
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop
KillMode=process
Restart=on-failure
# Hardening
PrivateTmp=yes
ProtectHome=yes
ProtectSystem=full
ReadOnlyDirectories=/
ReadWriteDirectories=-/usr/local/vpnserver
[Install]
WantedBy=multi-user.targetПримечание: директива CapabilityBoundingSet может вызывать проблемы с запуском, поэтому её лучше закомментировать, как показано в примере. После создания файла выполните:
sudo systemctl daemon-reload
sudo systemctl enable softether
sudo systemctl start softetherПроверьте статус службы:
systemctl status softetherЕсли служба активна, SoftEther работает. В случае ошибок проверьте журнал journalctl -u softether для диагностики.
Первичная настройка SoftEther: пароль, хаб, SecureNAT
После запуска SoftEther необходимо выполнить начальную настройку через консольную утилиту vpncmd. Запустите её в режиме администратора:
/usr/local/vpnserver/vpncmd /SERVERПри запросе адреса оставьте поле пустым (локальный сервер). Затем задайте пароль администратора командой ServerPasswordSet. Это критически важно для безопасности.
Создайте виртуальный хаб для SSTP-подключений:
HubCreate mysstphubСистема попросит задать пароль хаба. Убедитесь, что нет лишних хабов, командой HubList. При необходимости удалите хаб по умолчанию DEFAULT командой HubDelete.
Перейдите в созданный хаб:
Hub mysstphubВключите SecureNAT для обеспечения сетевого доступа клиентам:
SecureNatEnableSecureNAT предоставляет встроенный DHCP и NAT, что упрощает настройку без создания мостов. Теперь хаб готов к добавлению пользователей.
Создание пользователя и настройка TLS-сертификата
Для подключения клиентов создайте учётную запись в виртуальном хабе. В консоли vpncmd выполните:
UserCreate username
UserPasswordSet usernameВведите пароль пользователя дважды. Эти данные будут использоваться клиентом для аутентификации.
SSTP требует TLS-сертификат. Для тестовых целей можно сгенерировать самоподписанный сертификат средствами SoftEther. В консоли хаба выполните:
MakeCert2048 /CN=your_server_ip /O= /OU= /C= /ST= /L=Укажите серийный номер (например, 000), срок действия в днях (например, 7300), имена файлов сертификата и ключа (например, myserver.cer и myserver.key).
Сохраните сертификат на сервере:
ServerCertGet ~/myserver.cerЭтот файл понадобится для установки на клиентские устройства. Для production-сервера рекомендуется использовать сертификат от доверенного центра сертификации, выданный на доменное имя, чтобы избежать предупреждений безопасности у клиентов.
Проверка конфигурации и подключение клиента
После настройки сервера проверьте его состояние командой StatusGet в консоли хаба. Убедитесь, что хаб активен и SecureNAT работает.
Для тестового подключения с Ubuntu используйте sstp-client с конфигурационным файлом, как описано ранее. Укажите адрес сервера, порт 443, имя пользователя и пароль. Если используется самоподписанный сертификат, клиент может потребовать его установки в доверенные. В sstp-client это делается через параметр --ca-cert или добавлением сертификата в системное хранилище.
Пример команды с указанием сертификата:
sudo sstp-client --ca-cert ~/myserver.cer -c /etc/sstp/sstp.confПосле подключения проверьте маршрутизацию: ip route должен показывать маршрут через ppp0. Если соединение не устанавливается, проверьте журналы journalctl -u sstp-client и настройки файрвола (порт 443 должен быть открыт).
Типичные проблемы и их решение
При настройке SSTP на Ubuntu могут возникнуть следующие проблемы:
- Служба SoftEther не запускается: проверьте права на файлы в
/usr/local/vpnserver, убедитесь, чтоvpnserverисполняемый. Также проверьте SELinux (для RHEL-подобных систем) — при необходимости выполнитеchcon -Rv -u system_u -t bin_t /usr/local/vpnserver/vpnserver. - Ошибка аутентификации MSCHAP: на клиенте отключите MSCHAP и оставьте только MSCHAPv2, как указано в настройках Network Manager.
- Проблемы с MPPE: если сервер не поддерживает MPPE, отключите его в настройках клиента.
- Соединение устанавливается, но нет доступа в интернет: проверьте SecureNAT и маршрутизацию на сервере. Убедитесь, что IP-пересылка включена (
sysctl net.ipv4.ip_forward=1). - Самоподписанный сертификат не принимается: добавьте сертификат в доверенные на клиенте или используйте сертификат от CA.
Для диагностики используйте vpncmd /TOOLS /CMD check для проверки окружения SoftEther. Также полезно смотреть системные журналы: journalctl -xe.
Вопросы и ответы
Чем SSTP отличается от OpenVPN на Ubuntu?
SSTP использует TLS-туннель через порт 443, что позволяет маскировать трафик под HTTPS и обходить большинство файрволов. OpenVPN также может работать через 443, но требует настройки и менее устойчив к глубокой инспекции пакетов. SSTP исторически связан с Windows, но на Ubuntu доступен через sstp-client. OpenVPN более гибок в настройке и поддерживает UDP, что даёт лучшую производительность. Выбор зависит от сценария: SSTP предпочтителен для сетей с жёсткими ограничениями, OpenVPN — для универсального использования.
Как установить SSTP-клиент на Ubuntu?
Установите пакет sstp-client командой sudo apt install sstp-client. Для графического интерфейса также доступен network-manager-sstp-gnome. После установки можно настроить подключение через конфигурационный файл /etc/sstp/sstp.conf или через Network Manager.
Можно ли использовать SSTP на Ubuntu без командной строки?
Да, для этого установите network-manager-sstp-gnome и используйте графический интерфейс Network Manager. В настройках сети добавьте новое VPN-подключение типа SSTP, укажите шлюз, имя пользователя и пароль. Дополнительно настройте методы аутентификации (MSCHAPv2) и отключите MPPE при необходимости.
Как настроить SSTP-сервер на Ubuntu?
Для создания SSTP-сервера используйте SoftEther VPN Server. Установите зависимости (wget, make, gcc, binutils), скачайте исходный код, скомпилируйте и установите. Затем настройте systemd-службу, создайте виртуальный хаб, включите SecureNAT, добавьте пользователя и сгенерируйте TLS-сертификат. Подробная инструкция приведена в соответствующих разделах статьи.
Какие порты нужно открыть для SSTP?
SSTP использует TCP-порт 443 (HTTPS). Убедитесь, что этот порт открыт на сервере и доступен извне. Также может потребоваться открыть порт для административного интерфейса SoftEther (по умолчанию 443, но можно изменить). Для клиента исходящие соединения на 443 обычно разрешены.
Что делать, если SSTP-подключение не устанавливается?
Проверьте следующее: 1) Сервер запущен и порт 443 открыт. 2) Учётные данные верны. 3) На клиенте отключён MSCHAP и MPPE, если сервер их не поддерживает. 4) Сертификат сервера доверенный (для самоподписанного добавьте его в доверенные). 5) Проверьте журналы journalctl -u sstp-client и journalctl -u softether для диагностики.
Безопасен ли SSTP для использования в России?
SSTP использует TLS-шифрование, что обеспечивает конфиденциальность данных. Однако в России действуют законы о регулировании VPN-сервисов, и использование VPN для обхода блокировок может быть ограничено. Рекомендуется ознакомиться с местным законодательством. С технической точки зрения SSTP надёжен, но его трафик может быть обнаружен по характерным паттернам, хотя и маскируется под HTTPS.