我已经在 Ubuntu 16.04 LTS 上使用 Openconnect 成功连接到我的 VPN 一段时间了,使用以下选项调用 Juniper 支持并设置 SOCKS5 隧道
(请注意,真正的 VPN URL 已被替换为 vpn.company.com)
openconnect --juniper
--script-tun --script "/usr/bin/ocproxy -D 11080"
--cafile=/etc/ssl/certs/vpn1.company.com.der
https://vpn.company.com
午餐后重新启动后,我无法再重新连接,而是收到了以下以错误结尾的记录:
WARNING: Juniper Network Connect support is experimental.
It will probably be superseded by Junos Pulse support.
GET https://vpn.company.com/
Attempting to connect to server XXX.XXX.XXX.XXX:443
SSL negotiation with vpn.company.com
Connected to HTTPS on vpn.company.com
Got HTTP response: HTTP/1.1 302 Found
GET https://vpn.company.com/dana-na/auth/url_default/welcome.cgi
SSL negotiation with vpn.company.com
Connected to HTTPS on vpn.company.com
frmLogin
GET https://vpn.company.com/dana-na/auth/url_default/welcome.cgi
SSL negotiation with vpn.company.com
Connected to HTTPS on vpn.company.com
frmLogin
Failed to obtain WebVPN cookie
网络支持团队并未意识到他们的 Juniper VPN 存在任何问题,但我突然甚至没有看到密码提示。
答案1
解决方案是手动升级 Openconnect。
通过apt-get install --upgrade-only openconnect
,我确认我已经使用的是最新版本(7.06-2build2)
我下载了最新版本(7.08)和手动构建。由于该vpnc-scripts
软件包将 vpnc-script 放在与默认位置不同的位置,因此我需要提供该信息configure
。我也不介意缺少 DTLS 支持,因此告诉它只使用我当前的 openssl 版本:
./configure --with-vpnc-script=/usr/share/vpnc-scripts/vpnc-script --without-openssl-version-check
以及添加一些构建所需的缺失包-就我而言libxml2
,,libxml2-dev
和pkg-config
。
最后,由于 Xenial 软件包使用了 GnuTLS,但我的构建使用的是 OpenSSL,因此它无法将证书文件读取为 .der 并得到一个Failed to open CA file
。通过将其转换为 .pem(OpenSSL 默认值)解决了此问题:
openssl x509 -in /etc/ssl/certs/vpn1.company.com.der -inform der
-out /etc/ssl/certs/vpn1.company.com.pem -outform pem
我怀疑 VPN 服务器端发生了变化,开始发送“登录前消息”,现在7.08 版支持。