Подключение к SSTP-серверу из под Linux

Вы используете AdBlock. Этот сайт существует за счёт доходов от рекламы. Мы будем благодарны если вы отключите AdBlock на страницах нашего сайта.

()

SSTP (Secure Socket Tunneling Protocol) это VPN протокол, использующий PPP поверх HTTPS. Впервые представлен в Windows Server 2008. В альтернативных операционных системах SSTP формально не поддерживается, однако на SourceForge есть проект реализации Linux клиента для SSTP. О нём и пойдёт речь далее.

Начиная с этого абзаца должна была идти инструкция по компиляции из исходных текстов, но автор проекта кроме собственно SSTP-клиента развивает так же модуль для NetworkManager и предоставляет PPA-репозиторий для Ubuntu с актуальными версиями обоих проектов. В итоге установка сводится к следующим командам:

sudo add-apt-repository ppa:eivnaes/network-manager-sstp
sudo apt update
sudo apt install sstp-client network-manager-sstp

На машине без графического интерфейса модуль для NetworkManager устанавливать не обязательно. На машине с графическим интерфейсом остаётся только штатными средствами NetworkManager создать SSTP-соединение и подключиться.

Окно настройки SSTP-соединения в KDE Network Manager

На машине без графического интерфейса настройка немного сложнее, но в целом похожа на настройку PPTP-соединения. Допустим нам надо соединиться с сервером "sstp.example.com", используя логин "bsimpson" и пароль "K4rambA".

Для начала придумаем имя соединению. Например "sstpcon1". Следующим шагом нужно добавить в файл "/etc/ppp/chap-secrets" строку:

bsimpson sstpcon1 K4rambA *

После этого создаём файл "/etc/ppp/peers/sstpcon1" следующего содержания:

# Команда запуска sstpc. За детальным описанием параметров стоит обратиться к документации.
# Здесь же отметим только самое важное:
# --cert-warn - не является обязательным, но нужен если сервер использует самоподписанный сертификат
# --save-server-route - не обязателен, но нужен если вы хотите завернуть весь трафик в тоннель
pty             "sstpc --cert-warn --save-server-route --ipparam sstpcon1 --nolaunchpppd sstp.example.com"

# Будем менять шлюз по умолчанию (заворачивать весь траффик в тоннель)
defaultroute
replacedefaultroute

# Будем использовать DNS-сервера, предложенные SSTP-сервером
usepeerdns

# Логин на сервере
name            bsimpson

# Явно указываем тип авторизации MS CHAP v2
require-mschap-v2
refuse-pap
refuse-eap
refuse-chap
refuse-mschap

# Имя соединения для поиска пароля в файле chap-secrets
remotename      sstpcon1

# Прочие параметры (см. man pppd)
ipparam         sstpcon1
plugin          sstp-pppd-plugin.so
sstp-sock       /var/run/sstpc/sstpc-sstpcon1
noauth
lock
nobsdcomp
nodeflate

После этого соединение можно поднять командой:

pon sstpcon1

Если возникли какие-то проблемы то стоит запустить соединение в режиме отладки командой:

pon sstpcon1 debug dump logfd 2 nodetach

И дальше анализировать полученную информацию. Разорвать соединение можно командой:

poff sstpcon1

Если необходимо проверять подлинность сервера с помощью сертификата то необходимо передать sstpc параметр "--ca-cert", а если необходимо использование прокси-сервера то его можно указать с помощью параметра "--proxy". Все подробности в документации SSTP Client.

На этом всё. Приятной работы!

Ключевые слова: sstp, pppd, vpn, networkmanager network manager.

Подписаться на обновления: RSS-лента Канал в TamTam Telegram канал Канал в ICQ

Комментарии:

Anonymous 2019-09-18 00:56:45 (#)

sstpc --user user --password password --tls-ext sstp.testserver.com noauth вполне достаточно

Anonymous 2021-11-08 16:06:46 (#)

Всем доброго дня!
Наконец настала необходимость поднять на Linux-машинке sstp-клиент, для связи с кинетиком на даче, который является сетеобразующим для системы видеонаблюдения.
Делал по инструкции в данной статье, на бунте и дебиане, но не поднимается сессия. Никак!
Соединение сбрасывается, вывод такой:
using channel 1
Using interface ppp0
Connect: ppp0 <--> /dev/pts/1
sent [LCP ConfReq id=0x1 <mru 1492> <asyncmap 0x0> <magic 0x78cb3e35> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <mru 1492> <asyncmap 0x0> <magic 0x78cb3e35> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <mru 1492> <asyncmap 0x0> <magic 0x78cb3e35> <pcomp> <accomp>]
Modem hangup
Connection terminated.
Script sstpc --cert-warn --save-server-route --ipparam myconnection --log-level 5 --nolaunchpppd xxxxxx.keenetic.xxxx finished (pid 679), status = 0xff

Как только не изгалялся, подсовывал в командную строку разные параметры, добавлял, удалял и т.п.
Поднять соединение получается только по способу автора предыдущего комментария:
sstpc --user user --password password --tls-ext sstp.testserver.com noauth &

Подскажите, чяднт? :)

Anonymous 2021-11-08 16:11:53 (#)

В дополнение:
Вроде получилось поднять соединение заменив в конфиге параметр name на user, и докинув в командную строку --tls-ext.

Anonymous 2021-11-26 07:30:56 (#)

Спасибо за статью! А как задать маршруты при подключении, если мы не используем defaultroute.

Anonymous 2021-12-12 18:19:16 (#)

>>Спасибо за статью! А как задать маршруты при подключении, если мы не используем defaultroute.
[ipv4]
dns-search=
ignore-auto-dns=true
ignore-auto-routes=true
method=auto
never-default=true
route1=ip_connect.xxx.xxx.xxx/32,ip_gateway.xxx.xxx.xxx,104
я свои настройки показал, замените на то что Вам надо
у меня прокинуто к одной машине внутри сети, а уже через неё делаю что нужно. Вам, возможно надо роут в сеть а не к конкретной машине

namratha seo 2022-09-09 20:01:09 (#)

thanks for sharing the info..

Konstantin Alexeev 2022-09-11 18:20:49 (#)

Благодарю за статью, долго искал вменяемый мануал ;)

Anonymous 2023-03-29 23:38:34 (#)

Спасибо. Работает!

Anonymous 2024-05-15 15:37:25 (#)

А где именно нужно добавлять эти настройки?
[ipv4]
dns-search=
ignore-auto-dns=true
ignore-auto-routes=true
method=auto
never-default=true
route1=ip_connect.xxx.xxx.xxx/32,ip_gateway.xxx.xxx.xxx,104
Новый комментарий

Жирный текстКурсивный текстПодчёркнутый текстЗачёркнутый текстПрограммный кодСсылкаИзображение




© 2006-2025 Вадим Калинников aka MooSE
Политика конфиденциальности