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

()

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-лента Telegram канал Twitter

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

Новый комментарий

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




© 2006-2018 Вадим Калинников aka MooSE