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-соединение и подключиться.
На машине без графического интерфейса настройка немного сложнее, но в целом похожа на настройку 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.
На этом всё. Приятной работы!
Anonymous 2019-09-18 00:56:45 (#)