我想从家里通过VPN访问我在大学的个人网络驱动器。在过去,我一直在使用NetworkManager
来实现这个功能,这是非常好的。然而,最近我搬到了ConnMan
,我不知道如何在那里设置它。
多亏了GAD3R,我发现有一个图形输入掩码可以用来在ConnMan
's CMST
接口中建立VPN连接。
来自NetworkManager
的先前(成功运行的) VPN配置如下所示:
[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=
然而,来自NetworkManager
的这一成功运行的VPN配置使用的是来自思科的所谓CSD-wrapper
。
ConnMan
现在面临的挑战是:当创建必要的OpenConnect配置文件时,我必须选择哪个版本的OpenConnect才能符合更高的规范?当通过ConnMan
-CMST
创建新的供应文件时,有几个OpenConnect
-options可用:
Provider OpenConnect
OpenConnect.ServerCert
OpenConnect.CACert
OpenConnect.ClientCert
OpenConnect.MTU
OpenConnect.Cookie
OpenConnect.VPNHost
我必须选择哪一个来匹配NetworkManager
配置的先前配置?我需要提到一些特殊的东西才能将CSD-Wrapper
文件包含在ConnMan
中吗?
发布于 2018-08-23 14:38:43
感谢来自GAD3R的评论和Connman
开发人员邮件列表,一位朋友想出了如何建立VPN连接的方法。虽然仍然有一个小错误存在,我们得到它的大部分工作。
1.初始情况
必须在客户端计算机上安装以下软件包,您希望从那里访问主机服务器:
connman
connman-vpn
cmst
openconnect
此外,脚本csd-wrapper.sh
在客户端/home
-directory中运行,并使用计算机的几个身份验证文件创建了目录/home/.cisco
。
2.通过使用 OpenConnect
生成必要的VPN身份验证信息
在第二步中,您必须执行OpenConnect
身份验证请求以获得服务器证书(FINGERPRINT
)和Connman
将用于连接到VPN的COOKIE
。该信息将通过使用OpenConnect
包创建,该包稍后将在终端中显示服务器证书和cookie。我们在终端中通过运行
$ sudo openconnect --csd-wrapper=/home/user/.cisco/csd-wrapper.sh --authenticate --user
之后,这个命令将显示四个变量:POST
、COOKIE
、HOST
和FINGERPRINT
。在此,指纹(从sha256:...
开始)充当服务器证书,而COOKIE
则是它听起来的样子。
3.为 Connman
创建VPN配置文件
与NetworkManager
不同,Connman
为每个VPN连接使用所谓的VPN配置文件,从那里获取关于如何连接到VPN主机的信息。因此,在第三步中,必须将先前生成的身份验证数据粘贴到这个Connman
将用来连接到服务器的VPN供应文件中。为此,我们根据以下结构创建文件/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连接列在Connman (CMST
) GUI的骑手D40
中。标记它,点击“连接”,几秒钟后VPN-连接到您的VPN-主机将建立。现在,您可以轻松地访问您选择的文件管理器中的VPN-主机。
5. Eyesore:生成的cookie只有效几个小时
几个小时后,您以前成功运行的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
,并在覆盖旧cookie的同时将其粘贴到您的VPN供应文件(/var/lib/connman-vpn/.config
)中。然后重新启动Connman
,您的虚拟专用网将在接下来的几个小时内再次正常工作。
重要:
NetworkManager
似乎可以自己推动新COOKIE
的重新创建,而Connman
需要将新的cookie
添加到其VPN配置文件中。可能Connman
缺少某种接口来单独启动OpenConnect
_-命令。
6.使新曲奇的娱乐变得更舒适一些&
您可以使用bash脚本来生成新的cookie并覆盖旧的cookie。只需将以下文本复制到*.sh
-file中,使其可执行并运行。新的cookie将在正确的位置自动放置到/var/lib/connman-vpn/vpnname.config
中。然后重新启动Connman
,该虚拟专用网将再次正常工作。
#!/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
身份验证请求以获得服务器证书(FINGERPRINT
)和COOKIE
username
插入用户提示符password
插入用户提示符group
插入用户提示符中cookie
cookie
覆盖/var/lib/connman-vpn/vpnname.config
中的旧cookie
之后,您可以重新连接到您的VPN主机,没有任何问题。由于有了这个脚本,在必要时重新创建新的cookies
更加舒适和快捷。
https://unix.stackexchange.com/questions/449174
复制相似问题