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

w читает /var/run/utmp, чтобы узнать, кто вошел в систему и откуда он вошел. Записи utmp обновляются, когда пользователь входит или выходит из системы.

Если нет DNS или /etc/hosts записи для IP во время входа пользователя, то поле имени хоста в utmp остается пустым в процессе входа (sshd в данном случае).

Когда вы вышли из системы и вошли снова после добавления записи /etc/hosts, sshd выполнил поиск по IP и на этот раз нашел имя хоста, поэтому смог добавить правильные данные в поле hostname в utmp.

смотрите man 5 utmp для подробностей о формате файла /var/run/utmp

3
28.08.2018, 18:33
1 ответ

Благодаря комментарию от GAD3R иConnmanсписку рассылки разработчиков друг выяснил, как настроить VPN-подключение. Хотя все еще существует небольшая ошибка, в основном она работает.


1. Исходная ситуация

Следующие пакеты должны быть установлены на вашем клиентском компьютере, откуда вы хотите получить доступ к хост-серверу:

  • connman
  • connman-vpn
  • cmst
  • openconnect

Кроме того, скрипт csd-wrapper.shбыл запущен в каталоге ваших клиентов/home-и создал каталог /home/.ciscoс несколькими файлами аутентификации вашей машины.


2. Создание необходимой информации для аутентификации VPN с помощьюOpenConnect

На втором этапе необходимо выполнить запрос аутентификации OpenConnect, чтобы получить сертификат сервера(FINGERPRINTCOOKIE, который Connmanбудет использовать для подключения к VPN. Эта информация будет создана с использованием пакета OpenConnect, который позже отображает сертификат сервера и файл cookie в терминале. Мы генерируем эту информацию в терминале, запустив

$ sudo openconnect --csd-wrapper=/home/user/.cisco/csd-wrapper.sh --authenticate --user <username> <hostname>

После этого эта команда отобразит четыре переменные :POST, COOKIE, HOSTи FINGERPRINT. Таким образом, отпечаток (, начинающийся с sha256:...), действует как сертификат сервера, а COOKIEзвучит так.


3. Создание файла настройки VPN дляConnman

В отличие от NetworkManagerConnmanиспользует так называемые файлы подготовки VPN для каждого VPN-подключения, откуда берет информацию о том, как подключиться к хосту VPN. Поэтому на третьем этапе ранее сгенерированные данные аутентификации должны быть вставлены в этот файл настройки VPN, который Connmanбудет использоваться для подключения к серверу. Для этого мы создаем файл /var/lib/connman-vpn/<connection-name>.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 = <VPN host IP address>
Domain = <VPN host domain>
OpenConnect.ServerCert = <paste the output of FINGERPRINT from the previous openconnect command>
OpenConnect.Cookie = <paste the output of COOKIE from the previous openconnect command>

Затем сохраните и закройте файл.


4.Перезагрузите компьютер и проверьте VPN-подключение

.

Перезагрузите систему, и вы увидите созданное VPN-подключение в списке во вкладке VPNграфического интерфейса Connman System Tray (CMST). Отметьте его, нажмите «подключиться», и через несколько секунд будет установлено соединение VPN -с вашим хостом VPN -. Теперь вы можете легко получить доступ к узлу VPN -в любом файловом менеджере по вашему выбору.


5. Моча в глазах :Сгенерированный файл cookie действителен только в течение нескольких часов

Через несколько часов ваше ранее успешно работающее VPN-подключение -больше не будет работать. При проверке /var/log/syslogподход к подключению будет жаловаться на неудачную проверку сертификата сервера:

Aug 24 00:14:51 <hostname> connmand[444]: ipconfig state 2 ipconfig method 1
Aug 24 00:14:51 <hostname> connmand[444]: vpn0 {create} index 23 type 65534 <NONE>
Aug 24 00:14:51 <hostname> connmand[444]: vpn0 {update} flags 4240 <DOWN>
Aug 24 00:14:51 <hostname> connmand[444]: vpn0 {newlink} index 23 address 00:00:00:00:00:00 mtu 1500
Aug 24 00:14:51 <hostname> connmand[444]: vpn0 {newlink} index 23 operstate 2 <DOWN>
Aug 24 00:14:51 <hostname> connman-vpnd[365]: vpn0 {create} index 23 type 65534 <NONE>
Aug 24 00:14:51 <hostname> connman-vpnd[365]: vpn0 {update} flags 4240 <DOWN>
Aug 24 00:14:51 <hostname> connman-vpnd[365]: vpn0 {newlink} index 23 operstate 2 <DOWN>
Aug 24 00:14:51 <hostname> connmand[444]: ipconfig state 2 ipconfig method 1
Aug 24 00:14:51 <hostname> openconnect[4476]: Connected to <VPN server IP>:443
Aug 24 00:14:51 <hostname> openconnect[4476]: SSL negotiation with <VPN server IP>
Aug 24 00:14:51 <hostname> openconnect[4476]: Server certificate verify failed: signer not found
Aug 24 00:14:51 <hostname> openconnect[4476]: Connected to HTTPS on <VPN server IP>
Aug 24 00:14:51 <hostname> openconnect[4476]: Got inappropriate HTTP CONNECT response: HTTP/1.1 401 Unauthorized
Aug 24 00:14:51 <hostname> connmand[444]: vpn0 {dellink} index 23 operstate 2 <DOWN>
Aug 24 00:14:51 <hostname> connmand[444]: (null) {remove} index 23
Aug 24 00:14:51 <hostname> connman-vpnd[365]: vpn0 {dellink} index 23 operstate 2 <DOWN>
Aug 24 00:14:51 <hostname> connman-vpnd[365]: vpn0 {remove} index 23
Aug 24 00:14:51 <hostname> connmand[444]: ipconfig state 7 ipconfig method 1
Aug 24 00:14:51 <hostname> connmand[444]: ipconfig state 6 ipconfig method 1

Таким образом, начальная аутентификация-COOKIEизменилась, поэтому ранее сгенерированный файл cookie больше недействителен. Поэтому вам придется повторять описанную выше процедуру все несколько часов, чтобы создать новый COOKIEи вставить этот новый файл в ваш файл настройки VPN (/var/lib/connman-vpn/<yourvpnname>.config), перезаписывая старый файл cookie. После этого перезапустите Connman, и ваш VPN снова будет отлично работать в течение следующих нескольких часов.

Важно:

Судя по всему, NetworkManagerможет сам воссоздать новый COOKIE, в то время как Connmanнужно загрузить новый cookieв свой файл настройки VPN. Вероятно, Connmanне хватает какого-то интерфейса для запуска командыOpenConnect-самостоятельно.


6. Обходной путь для более удобного воссоздания нового файла cookie

Вы можете использовать сценарий bash -, чтобы создать новый файл cookie и перезаписать старый. Просто скопируйте следующий текст в файл *.sh-, сделайте его исполняемым и запустите. Новый файл cookie будет автоматически помещен в /var/lib/connman-vpn/vpnname.configв правильном месте. После этого перезапустите Connman, и VPN снова будет работать нормально.

#!/bin/bash

sed -i "s/^OpenConnect.Cookie =.*$/$( echo '<YOUR-VPN-PASSWORD>' | openconnect --csd-wrapper=/home/user/.cisco/csd-wrapper.sh --authenticate --user=<USERNAME> --authgroup="<YOURGROUP>" --passwd-on-stdin <VPN-HOST-DOMAIN> | grep 'COOKIE=' | sed "s/COOKIE='//; s/'//g; s/^/OpenConnect.Cookie = /")/" <EXTERNAL-FILENAME>

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

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

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

3
27.01.2020, 21:25

Теги

Похожие вопросы