我不太熟悉 VPN,而且使用 连接到 VPN 服务时遇到了困难OpenConnect
。
我购买的 VPN 服务使用Cisco AnyConnect
,我无法在 Linux 上使用,但该OpenConnect
应用程序应该可以做同样的事情。我已OpenConnect
为其安装了 GUI。
在其他操作系统(例如 Android)上,VPN 服务只需让我将Cisco AnyConnect
客户端链接到 XML 文件,AnyConnect
然后使用该文件连接到服务器即可。除了提供此 XML 文件外,客户端软件中无需进行任何其他配置,这让我认为此 XML 文件包含连接到所有这些 VPN 服务器所需的所有信息 - 无需配置复选框、无需下载证书等。
一旦我提供了 XML 文件,AnyConnect
就会生成 VPN 服务器列表,我会选择一个,然后在随后的弹出框中填写我的用户名和密码,就这样。
<AnyConnectProfile xmlns="http://schemas.xmlsoap.org/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.xmlsoap.org/encoding/ AnyConnectProfile.xsd">
<ClientInitialization>
<UseStartBeforeLogon UserControllable="false">false</UseStartBeforeLogon>
<StrictCertificateTrust>false</StrictCertificateTrust>
<RestrictPreferenceCaching>false</RestrictPreferenceCaching>
<RestrictTunnelProtocols>IPSec</RestrictTunnelProtocols>
<BypassDownloader>true</BypassDownloader>
<WindowsVPNEstablishment>AllowRemoteUsers</WindowsVPNEstablishment>
<CertEnrollmentPin>pinAllowed</CertEnrollmentPin>
<CertificateMatch>
<KeyUsage>
<MatchKey>Digital_Signature</MatchKey>
</KeyUsage>
<ExtendedKeyUsage>
<ExtendedMatchKey>ClientAuth</ExtendedMatchKey>
</ExtendedKeyUsage>
</CertificateMatch>
<BackupServerList>
<HostAddress>localhost</HostAddress>
</BackupServerList>
</ClientInitialization>
<ServerList>
<HostEntry>
<HostName>server 1</HostName>
<HostAddress>japan.examplevpn.com</HostAddress>
</HostEntry>
<HostEntry>
<HostName>server 2</HostName>
<HostAddress>amsterdam.examplevpn.com</HostAddress>
</HostEntry>
</ServerList>
</AnyConnectProfile>
OpenConnect
在 Linux 上似乎没有任何规定可以导入 XML 文件。
OpenConnect
根据 XML 文件的内容,我需要做什么来配置每个连接?
答案1
您应该将 xml 转换为 base 64 编码 config.xml | tr -d '\n' > config.xml.base64
然后在 /etc/NetworkManager/system-connections/ 中使用编辑器手动打开连接
您的 xml 配置文件应作为 base64 值保存在 [vpn-secrets] 配置部分中:
[vpn-secrets] xmlconfig=
答案2
这不是您想要的答案,但不幸的是,OpenConnect 无法原生支持任何有用的 XML 文件。它只能从中读取主机名和用户组,但不能读取其他内容。
源代码清楚地表明:https://github.com/openconnect/openconnect/blob/master/xml.c
实际上,这意味着你最多可以这样做:
<openconnect>
<ServerList>
<HostEntry>
<HostName>vpn.example.com</HostName>
<HostAddress>vpn.example.com</HostAddress>
<UserGroup>test123</UserGroup>
</HostEntry>
</ServerList>
</openconnect>