已停用的 VPN 客户端:先确认网关协议
Cisco VPN Client、Junos Pulse、SonicWall GVC 和 Shrew Soft 已不再受支持。选择后继客户端前,先确认网关使用的协议。
多年前就已停止支持的 VPN 客户端安装包仍能运行,仍会要求配置文件,然后完成一次从不放行任何数据包的登录。机器是新的,凭据也是对的,可网关仍是公司十年前采购的那台设备。更换客户端是正确做法,但前提是先弄清这台网关对外发布的是哪种协议。本文涉及的四个退役客户端说的并不是同一种协议。
为什么品牌名说明不了协议
同一类设备可以终结多种远程接入协议,包装上的营销名称完全不能说明你的账户用的是哪一种。Cisco 设备曾同时承载带 XAuth 的 IPsec 和 SSL VPN 的 AnyConnect;SonicWall 设备在 IPsec 上提供 Global VPN Client,在 SSL VPN 上提供 NetExtender;Juniper 部署可能对外提供 Network Connect 或更新的 Pulse 协议。装一个看起来最现代的后继产品只是猜测。猜错的结果要么连不上,要么认证进一个不承载任何流量的会话。
浏览器能打开门户页面,只能证明某个 Web 服务在应答,不能证明某个特定客户端能和它协商成功。请把这两件事当成两回事。
问网关说的是哪种协议
缩小范围最省钱的办法是先读端点返回什么,然后在试客户端时明确指定协议。这两步都不会改动服务器上的任何东西。
curl -sS -I https://vpn.example.com/ | head -n 5
openconnect --protocol=anyconnect vpn.example.com响应头和登录路径能看出该地址上是否存在 SSL VPN 门户,这指向 AnyConnect、NetExtender 或 Pulse,而不是 IPsec 客户端。openconnect 把协议选择放在命令行上,所以失败时报出的是协议而不是产品;部署是 Juniper 时换成 --protocol=npulse。遇到第一个索要你并未获得的凭据的提示就停下,因为能用的隧道同样需要已批准的账户。把协议和路径写进变更工单,留给下一台机器。
权衡四种替代方案
四条路几乎覆盖所有情况,而且彼此不能互换。组织拥有网关并愿意授权时,厂商后继产品是受支持的路径。OpenConnect 是实用的开源客户端,因为只要你说出协议名,它就能和 AnyConnect、Network Connect 与 Pulse 通信,而不是靠猜。
strongSwan 面向允许第三方客户端的组织处理 IPsec 加 XAuth 的情况,并且完全绕开已废弃的 Cisco IPsec 代码。Shrew Soft 客户端仍能读取 Cisco 配置文件,也能在某些 Windows 版本上运行,但它的最后一次发布是 2013 年。在安排出受支持路径之前,把它当作过渡方案。
在修复与更换之间做决定
有些故障是本地问题:缺少库、虚拟网卡过旧,或安装程序需要厂商的修复选项。只要客户端仍受支持,这些值得试一次,因为只花几分钟。当二进制已不受支持、故障又随操作系统升级而来时,算法就变了,因为这些客户端写成之后,驱动签名和内核扩展的规则已经改过。连上了但隧道计数器显示零个已建立会话的客户端,通常已经超出可修复范围,而不是差一次重装。
旧客户端只保留到导出配置为止,然后卸掉。两个 VPN 客户端争抢同一批路由,产生的症状和哪一个都不像。
把顺序写进工单:由所有者给出协议和获批客户端;能装就装受支持的后继产品;装不上就在单台机器上试一个开源客户端;两者都不行就安排受支持的接入路径。这个顺序能让下一个人不再去下载又一个退役二进制。