После обновления домашней машины с Debian 10 (Buster) на Debian 11 (Bullseye) методом In-Place Upgrade, можно обнаружить, что клиентское ПО SSTP VPN, установленное и работающее ранее в Debian 10 больше не работает в Debian 11. В общем-то в этом нет ничего удивительного, так как в ходе выполнения обновления старые пакеты SSTP клиента могут быть удалены из системы, как несовместимые с основной пакетной базой новой версии ОС. В этой заметке мы рассмотрим один из вариантов того, как можно вернуть утраченный функционал SSTP клиента в Debian Bullseye.
Ссылку на исходные коды проекта SSTP клиента для Linux можно найти, например, на сайте проекта - sstp-client.sourceforge.net. Однако их самостоятельная сборка под определённый дистрибутив Linux классическим методом "configure/make/make install" занятие не очень интересное и "модное". В окружении Debian гораздо интересней собрать готовые deb-пакеты, которые можно будет в дальнейшем неоднократно использовать на других системах, оперируя пакетным менеджером APT.
Для систем Ubuntu (и производных от Ubuntu) можно использовать готовые пакеты, предоставляемые автором проекта Eivind Naess в его Personal Packages Archive (PPA). В случае с Debian, ранее мне удалось использовать эти же пакеты и они без особых проблем устанавливаюсь и работали в Debian 10. Однако после обновления до Debian 11 последние актуальные версии пакетов в этом PPA в моём случае не заработали. И основной причиной этого стало то, что в Debian 11 по умолчанию используется более новая версия пакета "ppp" (2.4.9), чем та, что требуется для актуальных пакетов из PPA (2.4.7).
Вообще, если "пошуршать" в поисковом индексе Google, то можно найти частные репозитории, где уже есть готовые собранные deb-пакеты, например, здесь. Но использование пакетов из таких частных репозиториев всегда несёт дополнительные риски. К тому же, как говорится, мы не ищем лёгких путей, и поэтому попробуем самостоятельно собрать нужные нам deb-пакеты в собственном системном окружении.
Перед сборкой deb-пакетов, нам потребуется "дебианизировать" исходные коды. Учитывая то, что задача эта хоть и вполне подъёмная, но и не совсем тривиальная, мы можем воспользоваться готовыми файлами дебианизации, которые уже были подготовлены ранее для сборки пакетов под Ubuntu.
Сборку пакетов, исходя из лучших практик, правильней выполнять на специально отведённой для это чистой системе Debian (без работающих продуктивных сервисов). В нашем же случае всё будет выполняться в рамках домашней машины, экспериментировать в рамкой которой в обще-то не особо и страшно.
Подготовка сборочной среды
Устанавливаем на время сборки пакеты, необходимые для обеспечения общей сборочной среды:
# apt-get install build-essential devscripts fakeroot
Так как в нашем случае, на системе используется графическая среда Gnome 3.38, поставляемая в составе c Debian 11, то помимо сборки пакетов самого SSTP клиента, нам может понадобиться сборка пакетов расширения графического интерфейса Network Manager.
Устанавливаем пакеты, необходимые для возможности сборки SSTP клиента:
# apt-get install ppp-dev libevent-dev libssl-dev
Устанавливаем пакеты, необходимые для возможности сборки пакетов расширения Network Manager:
# apt-get install intltool libnm-dev libnma-dev libsecret-1-dev libgtk-3-dev libglib2.0-dev
Собираем пакеты SSTP клиента
Создаём временный каталог, переходим в него и скачиваем в этот каталог актуальные исходные файлы sstp-client с файлами дебианизации:
# mkdir /tmp/sstp-client-build # cd /tmp/sstp-client-build # wget https://launchpad.net/~eivnaes/+archive/ubuntu/network-manager-sstp/+sourcefiles/sstp-client/1.0.15-0ubuntu2/sstp-client_1.0.15-0ubuntu2.dsc # wget https://launchpad.net/~eivnaes/+archive/ubuntu/network-manager-sstp/+sourcefiles/sstp-client/1.0.15-0ubuntu2/sstp-client_1.0.15-0ubuntu2.debian.tar.xz # wget https://launchpad.net/~eivnaes/+archive/ubuntu/network-manager-sstp/+sourcefiles/sstp-client/1.0.15-0ubuntu2/sstp-client_1.0.15.orig.tar.gz # ls -l -rw-r--r-- 1 root root 3312 авг 24 19:35 sstp-client_1.0.15-0ubuntu2.debian.tar.xz -rw-r--r-- 1 root root 1837 авг 24 19:35 sstp-client_1.0.15-0ubuntu2.dsc -rw-r--r-- 1 root root 477830 авг 24 19:35 sstp-client_1.0.15.orig.tar.gz
В текущем каталоге запускаем команду распаковки исходных текстов (.orig.tar.gz) и внедрения файлов дебианизации (.debian.tar.xz) с помощью файла *.dsc
# dpkg-source -x /tmp/sstp-client-build/sstp-client_1.0.15-0ubuntu2.dsc
Перед сборкой можем добавить запись в debian/changelog о новом релизе пакета, немного подняв версию пакета. Для этого переходим в подготовленный подкаталог с уже дебианизированными исходниками (./sstp-client-1.0.15) и выполняем команду добавления информации в changelog:
# cd /tmp/sstp-client-build/sstp-client-1.0.15/ # debchange -v 1.0.15-0.2
В открывшемся текстовом редакторе пишем какой-нибудь комментарий о версии и, при желании, указываем информацию о сборщике пакета (желтым подчёркнуты изменения в changelog, которые были внесены в нашем случае):
Сохраняем изменения в файле и закрываем его.
Теперь можем приступить к сборке deb-пакетов. Выполняем в текущем каталоге команду сборки:
# dpkg-buildpackage -rfakeroot
Проверяем результат сборки, перейдя на подкаталог уровнем выше, где должны появится готовые deb-пакеты.
# cd /tmp/sstp-client-build/ # ls -la *.deb -rw-r--r-- 1 root root 5968 сен 20 19:04 libsstp-api-0_1.0.15-0.2_amd64.deb -rw-r--r-- 1 root root 4632 сен 20 19:04 libsstp-api-0-dbgsym_1.0.15-0.2_amd64.deb -rw-r--r-- 1 root root 5412 сен 20 19:04 libsstp-api-0-dev_1.0.15-0.2_amd64.deb -rw-r--r-- 1 root root 42856 сен 20 19:04 sstp-client_1.0.15-0.2_amd64.deb -rw-r--r-- 1 root root 114688 сен 20 19:04 sstp-client-dbgsym_1.0.15-0.2_amd64.deb
Из собранных deb-пакетов нам потребуется установить лишь 3 пакета:
# apt install ./libsstp-api-0_1.0.15-0.2_amd64.deb # apt install ./sstp-client_1.0.15-0.2_amd64.deb # apt install ./libsstp-api-0-dev_1.0.15-0.2_amd64.deb
Первые 2 пакета нужны для работы SSTP клиента, как такового. Третий пакет потребуется нам лишь время, для последующей сборки пакетов для Network Manager.
Собираем пакеты интеграции в Network Manager
Создаём временный каталог, переходим в него и скачиваем исходные файлы network-manager-sstp с файлами дебианизации:
# mkdir /tmp/sstp-client-nm-build # cd /tmp/sstp-client-nm-build # wget https://launchpad.net/~eivnaes/+archive/ubuntu/network-manager-sstp/+sourcefiles/network-manager-sstp/1.2.6-0ubuntu5/network-manager-sstp_1.2.6-0ubuntu5.dsc # wget https://launchpad.net/~eivnaes/+archive/ubuntu/network-manager-sstp/+sourcefiles/network-manager-sstp/1.2.6-0ubuntu5/network-manager-sstp_1.2.6-0ubuntu5.debian.tar.xz # wget https://launchpad.net/~eivnaes/+archive/ubuntu/network-manager-sstp/+sourcefiles/network-manager-sstp/1.2.6-0ubuntu5/network-manager-sstp_1.2.6.orig.tar.bz2 # ls -l -rw-r--r-- 1 root root 4952 авг 25 19:37 network-manager-sstp_1.2.6-0ubuntu5.debian.tar.xz -rw-r--r-- 1 root root 2138 авг 25 19:37 network-manager-sstp_1.2.6-0ubuntu5.dsc -rw-r--r-- 1 root root 450813 авг 25 19:37 network-manager-sstp_1.2.6.orig.tar.bz2
В текущем каталоге запускаем команду распаковки исходных текстов (.orig.tar.bz2) и внедрения файлов дебианизации (.debian.tar.xz) с помощью файла *.dsc:
# dpkg-source -x /tmp/sstp-client-nm-build/network-manager-sstp_1.2.6-0ubuntu5.dsc
Перед сборкой можем добавить запись в debian/changelog о новом релизе пакета. Для этого переходим в подготовленный подкаталог с уже дебианизированными исходниками (./network-manager-sstp-1.2.6) и выполняем команду добавления информации в changelog:
# cd /tmp/sstp-client-nm-build/network-manager-sstp-1.2.6/ # debchange -v 1.2.6-0.2
В открывшемся текстовом редакторе пишем комментарий о версии и указываем информацию о сборщике пакета:
Сохраняем изменения в файле и закрываем его.
Выполняем сборку пакетов в текущем каталоге:
# dpkg-buildpackage -rfakeroot
Проверяем результат сборки, перейдя на подкаталог уровнем выше, где должны появится готовые deb-пакеты:
# cd /tmp/sstp-client-nm-build # ls -l *.deb -rw-r--r-- 1 root root 112016 сен 20 19:32 network-manager-sstp_1.2.6-0.2_amd64.deb -rw-r--r-- 1 root root 79120 сен 20 19:32 network-manager-sstp-dbgsym_1.2.6-0.2_amd64.deb -rw-r--r-- 1 root root 28744 сен 20 19:32 network-manager-sstp-gnome_1.2.6-0.2_amd64.deb -rw-r--r-- 1 root root 56276 сен 20 19:32 network-manager-sstp-gnome-dbgsym_1.2.6-0.2_amd64.deb
Устанавливаем 2 пакета, которые потребуются для возможности управления настройками SSTP клиента из графического интерфейса Network Manager:
# apt install ./network-manager-sstp_1.2.6-0.2_amd64.deb # apt install ./network-manager-sstp-gnome_1.2.6-0.2_amd64.deb
Проверка результата
В результате предыдущих действий мы имеем в системе 5 установленных пакетов:
# dpkg -l | grep sstp ii libsstp-api-0 1.0.15-0.2 amd64 Connect to a Microsoft Windows 2008 server using SSTP VPN ii libsstp-api-0-dev 1.0.15-0.2 amd64 Connect to a Microsoft Windows 2008 server using SSTP VPN ii network-manager-sstp 1.2.6-0.2 amd64 network management framework (SSTP plugin core) ii network-manager-sstp-gnome 1.2.6-0.2 amd64 network management framework (SSTP plugin GNOME GUI) ii sstp-client 1.0.15-0.2 amd64 Connect to a Microsoft Windows 2008 server using SSTP VPN
Уже сейчас функциональность SSTP клиента должна стать нам доступной и работать. Можем настроить VPN-подключение по протоколу SSTP в графической среде Gnome.
Очистка после сборки
После сборки и установки, пакет libsstp-api-0-dev нам больше уже не нужен, так как он требовался исключительно для сборки других пакетов. Его можем удалить:
# apt remove libsstp-api-0-dev
Также можем удалить все пакеты, которые мы ранее устанавливали для обеспечения сборочной среды (второй командой удаляем все неиспользуемые более пакеты-зависимости):
# apt remove build-essential devscripts fakeroot ppp-dev libevent-dev libssl-dev intltool libnm-dev libnma-dev libsecret-1-dev libgtk-3-dev libglib2.0-dev # apt autoremove
При желании сохраняем в отдельное место все собранные deb-пакеты, а затем удаляем временные каталоги сборки со всем содержимым:
# mkdir /home/petya/MyFiles/sstp-client_packages/ # cp /tmp/sstp-client-*/*.deb /home/petya/MyFiles/sstp-client_packages/ # cd .. # rm -R /tmp/sstp-client-*
Любители "мануальной терапии", закрывающие глаза на ранее упомянутые риски использования частных источников, и желающие забрать уже готовые (и проверенные в работе) файлы deb-пакетов под Debian 11.0 64-bits могут заглянуть сюда.
dpkg-source -x /tmp/sstp-client-build/sstp-client_1.0.15-0ubuntu2.dsc
dpkg-source: ошибка: не удалось прочитать /tmp/sstp-client-build/sstp-client_1.0.15-0ubuntu2.dsc: No such file or directory
Подскажите, как обойти?
Что значит "обойти" ? Команда сообщает об отсутствии файла *.dsc
Спасибо за инструкцию. Работает! Получилось через облако Keenetic с помощью sstp добраться до локальной сети за серым ip адресом и добраться до серверов там с помощью ssh соединения. Раньше можно было это делать только с помощью своего VPN сервера.
Даже более того. Собрать deb пакеты из новой версии - 1.0.16-0ubuntu3
Хоть доступа напрямую к ним и нет )
Колоссально! Браво.
На сегодня 01.04.2023 Wget обновить пути:
wget https://launchpad.net/debian/+archive/primary/+sourcefiles/sstp-client/1.0.18-1/sstp-client_1.0.18-1.debian.tar.xz
wget https://launchpad.net/debian/+archive/primary/+sourcefiles/sstp-client/1.0.18-1/sstp-client_1.0.18-1.dsc
wget https://launchpad.net/debian/+archive/primary/+sourcefiles/sstp-client/1.0.18-1/sstp-client_1.0.18.orig.tar.bz2