Я хочу получить доступ к своему личному сетевому диску в университете через VPN из дома. В прошлом я использовал NetworkManager
для этого, что работало совершенно нормально. Однако недавно я переехал в ConnMan
и не очень хорошо знаю, как его настроить.
Благодаря GAD3R я понял, что есть графическая маска ввода, доступная для настройки VPN-соединения в CMST
интерфейсе ConnMan
.
Предыдущая (успешно работающая) конфигурация VPN от NetworkManager
выглядела так:
[openconnect] Description=My Company Host=vpngw2-out.net.provider.com CACert=(null) Protocol=anyconnect Proxy= CSDEnable=1 CSDWrapper=/home/user/.cisco/csd-wrapper.sh UserCertificate=(null) PrivateKey=(null) FSID=0 StokenSource=disabled StokenString=
Однако эта успешно работающая конфигурация VPN от NetworkManager
использовала так называемую CSD-wrapper
от Cisco.
Задача в ConnMan
теперь заключается в следующем: при создании необходимого файла обеспечения VPN какой вариант OpenConnect мне нужно выбрать, чтобы соответствовать верхним спецификациям? При создании нового файла обеспечения с помощью ConnMan
– CMST
доступно несколько OpenConnect
OpenConnect:
Provider OpenConnect
OpenConnect.ServerCert
OpenConnect.CACert
OpenConnect.ClientCert
OpenConnect.MTU
OpenConnect.Cookie
OpenConnect.VPNHost
Какой из них выбрать, чтобы он соответствовал предыдущей конфигурации конфигурации NetworkManager
? Нужно ли упоминать что-то особенное, чтобы включить файл CSD-Wrapper
в ConnMan
?
Благодаря комментарию от GAD3R и Connman
рассылки разработчиков Connman
, друг выяснил, как настроить VPN-соединение. Несмотря на то, что существует небольшая ошибка, в основном она работает.
1. Исходная ситуация
Следующие пакеты должны быть установлены на вашем клиентском компьютере, откуда вы хотите получить доступ к хост-серверу:
connman
connman-vpn
cmst
openconnect
Кроме того, скрипт csd-wrapper.sh
был запущен в вашем директории /home/.cisco
/home
и создал каталог /home/.cisco
с несколькими файлами аутентификации вашего компьютера.
2. Генерирование необходимой информации для аутентификации VPN с помощью OpenConnect
На втором этапе вы должны выполнить OpenConnect
аутентификации OpenConnect
чтобы получить сертификат сервера ( FINGERPRINT
) и COOKIE
которые Connman
будет использовать для подключения к VPN. Эта информация будет создана с OpenConnect
пакета OpenConnect
, который позже отображает сертификат сервера и cookie в терминале. Мы генерируем эту информацию в терминале, запустив
$ sudo openconnect --csd-wrapper=/home/user/.cisco/csd-wrapper.sh --authenticate --user
После этого эта команда отобразит четыре переменные: POST
, COOKIE
, HOST
и FINGERPRINT
. Таким образом, отпечаток пальца (начиная с sha256:...
) действует как сертификат сервера, в то время как COOKIE
звучит так.
3. Создание файла обеспечения VPN для Connman
В отличие от NetworkManager
Connman
использует так называемые файлы обеспечения VPN для каждого VPN-подключения, откуда он берет информацию о том, как подключиться к VPN-хосту. Поэтому на третьем этапе ранее сгенерированные данные аутентификации должны быть вставлены в этот файл обеспечения VPN, который Connman
будет использовать для подключения к серверу. Для этого мы создаем файл /var/lib/connman-vpn/
на основе следующей структуры:
[global] Name = VPN name, for example "My Company VPN" (without quotes) [provider_openconnect] Type = OpenConnect Name = VPN Provider name, for example "My Company Cisco VPN" (without quotes) Host = Domain = OpenConnect.ServerCert = OpenConnect.Cookie =
После этого сохраните и закройте файл.
4. Перезагрузите компьютер и проверьте соединение VPN
Перезагрузите вашу систему, и вы увидите, что ваше созданное VPN-соединение указано в графическом интерфейсе VPN
-интерфейса Connman System Tray ( CMST
). Отметьте его, нажмите «подключиться» и через несколько секунд будет установлено VPN-соединение с вашим VPN-хостом. Теперь вы можете легко получить доступ к VPN-хосту в файловом менеджере по вашему выбору.
5. Eyesore: сгенерированное печенье действительно только в течение нескольких часов
Через несколько часов ваше ранее успешно работающее VPN-соединение больше не будет работать. При проверке /var/log/syslog
подход к подключению будет жаловаться на неудачную проверку сертификата сервера:
Aug 24 00:14:51 connmand[444]: ipconfig state 2 ipconfig method 1 Aug 24 00:14:51 connmand[444]: vpn0 {create} index 23 type 65534 Aug 24 00:14:51 connmand[444]: vpn0 {update} flags 4240 Aug 24 00:14:51 connmand[444]: vpn0 {newlink} index 23 address 00:00:00:00:00:00 mtu 1500 Aug 24 00:14:51 connmand[444]: vpn0 {newlink} index 23 operstate 2 Aug 24 00:14:51 connman-vpnd[365]: vpn0 {create} index 23 type 65534 Aug 24 00:14:51 connman-vpnd[365]: vpn0 {update} flags 4240 Aug 24 00:14:51 connman-vpnd[365]: vpn0 {newlink} index 23 operstate 2 Aug 24 00:14:51 connmand[444]: ipconfig state 2 ipconfig method 1 Aug 24 00:14:51 openconnect[4476]: Connected to :443 Aug 24 00:14:51 openconnect[4476]: SSL negotiation with Aug 24 00:14:51 openconnect[4476]: Server certificate verify failed: signer not found Aug 24 00:14:51 openconnect[4476]: Connected to HTTPS on Aug 24 00:14:51 openconnect[4476]: Got inappropriate HTTP CONNECT response: HTTP/1.1 401 Unauthorized Aug 24 00:14:51 connmand[444]: vpn0 {dellink} index 23 operstate 2 Aug 24 00:14:51 connmand[444]: (null) {remove} index 23 Aug 24 00:14:51 connman-vpnd[365]: vpn0 {dellink} index 23 operstate 2 Aug 24 00:14:51 connman-vpnd[365]: vpn0 {remove} index 23 Aug 24 00:14:51 connmand[444]: ipconfig state 7 ipconfig method 1 Aug 24 00:14:51 connmand[444]: ipconfig state 6 ipconfig method 1
Таким образом, первоначальная аутентификация COOKIE
изменилась, поэтому ранее созданный файл cookie больше не действителен. Поэтому вы должны повторить процедуру верхнего уровня все несколько часов, чтобы создать новый COOKIE
и вставить этот новый в ваш файл обеспечения VPN ( /var/lib/connman-vpn/
) при перезаписи старого cookie. После этого перезапустите Connman
и ваш VPN снова заработает в течение следующих нескольких часов.
Важный:
Кажется, что NetworkManager
может подтолкнуть воссоздание нового COOKIE
самому, в то время как Connman
нужно вписать новый cookie
в свой файл обеспечения VPN. Вероятно, Connman
не хватает какого-то интерфейса для запуска OpenConnect
OpenConnect самостоятельно.
6. Обходной путь, чтобы сделать воссоздание нового cookie более удобным
Вы можете использовать bash-скрипт для генерации нового куки и перезаписи старого. Просто скопируйте следующий текст в *.sh
файл, сделайте его исполняемым и запустите его. Новый файл cookie будет автоматически помещен в /var/lib/connman-vpn/vpnname.config
в нужной позиции. После этого перезапустите Connman
и VPN снова будет работать нормально.
#!/bin/bash sed -i "s/^OpenConnect.Cookie =.*$/$( echo '' | openconnect --csd-wrapper=/home/user/.cisco/csd-wrapper.sh --authenticate --user= --authgroup="" --passwd-on-stdin | grep 'COOKIE=' | sed "s/COOKIE='//; s/'//g; s/^/OpenConnect.Cookie = /")/"
Этот скрипт будет:
OpenConnect
аутентификации OpenConnect
чтобы получить сертификат сервера ( FINGERPRINT
) и COOKIE
username
пользователя в приглашение пользователя password
в приглашение пользователя group
в приглашение пользователя cookie
cookie
в /var/lib/connman-vpn/vpnname.config
новым cookie
После этого вы можете без проблем подключиться к вашему VPN-хосту. Благодаря этому скрипту удобнее и быстрее воссоздавать новые cookies
при необходимости.