首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ConnMan:如何正确设置OpenConnect VPN?

ConnMan:如何正确设置OpenConnect VPN?
EN

Unix & Linux用户
提问于 2018-06-11 18:07:39
回答 1查看 10.1K关注 0票数 3

我想从家里通过VPN访问我在大学的个人网络驱动器。在过去,我一直在使用NetworkManager来实现这个功能,这是非常好的。然而,最近我搬到了ConnMan,我不知道如何在那里设置它。

多亏了GAD3R,我发现有一个图形输入掩码可以用来在ConnMan's CMST接口中建立VPN连接。

来自NetworkManager的先前(成功运行的) VPN配置如下所示:

代码语言:javascript
运行
复制
[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中吗?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 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。我们在终端中通过运行

代码语言:javascript
运行
复制
$ sudo openconnect --csd-wrapper=/home/user/.cisco/csd-wrapper.sh --authenticate --user  

之后,这个命令将显示四个变量:POSTCOOKIEHOSTFINGERPRINT。在此,指纹(从sha256:...开始)充当服务器证书,而COOKIE则是它听起来的样子。

3.为 Connman创建VPN配置文件

NetworkManager不同,Connman为每个VPN连接使用所谓的VPN配置文件,从那里获取关于如何连接到VPN主机的信息。因此,在第三步中,必须将先前生成的身份验证数据粘贴到这个Connman将用来连接到服务器的VPN供应文件中。为此,我们根据以下结构创建文件/var/lib/connman-vpn/.config

代码语言:javascript
运行
复制
[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时,连接方法会抱怨服务器证书验证失败:

代码语言:javascript
运行
复制
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,该虚拟专用网将再次正常工作。

代码语言:javascript
运行
复制
#!/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身份验证请求以获得服务器证书(FINGERPRINT)和COOKIE
  2. username插入用户提示符
  3. password插入用户提示符
  4. 将所需的group插入用户提示符中
  5. 生成一个新的cookie
  6. 用新的cookie覆盖/var/lib/connman-vpn/vpnname.config中的旧cookie

之后,您可以重新连接到您的VPN主机,没有任何问题。由于有了这个脚本,在必要时重新创建新的cookies更加舒适和快捷。

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/449174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档