ConnMan: Как правильно настроить OpenConnect VPN с CSD-Wrapper?

Я хочу получить доступ к своему личному сетевому диску в университете через 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 мне нужно выбрать, чтобы соответствовать верхним спецификациям? При создании нового файла обеспечения с помощью ConnManCMST доступно несколько 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/.config на основе следующей структуры:

 [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/.config ) при перезаписи старого 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 = /")/"  

Этот скрипт будет:

  1. Запустите OpenConnect и выполните OpenConnect аутентификации OpenConnect чтобы получить сертификат сервера ( FINGERPRINT ) и COOKIE
  2. Вставьте свое username пользователя в приглашение пользователя
  3. Вставьте свой password в приглашение пользователя
  4. Вставьте нужную group в приглашение пользователя
  5. Создать новый cookie
  6. Перезапишите старый cookie в /var/lib/connman-vpn/vpnname.config новым cookie

После этого вы можете без проблем подключиться к вашему VPN-хосту. Благодаря этому скрипту удобнее и быстрее воссоздавать новые cookies при необходимости.