再下载一个客户端之前,先看看操作系统已经实现了什么,因为答案往往足以让你完全跳过安装程序。Windows、macOS 和 ChromeOS 各自附带一份固定而简短的隧道协议清单,网关只要会说其中一种,就不需要额外的驱动、服务或更新路径。决定这件事的不是手册上的厂商名。决定它的是协议、端点如何认证,以及它期望哪个地址。

问协议,而不是问产品名

产品名几乎说明不了线路上跑的是什么。同一块牌子下的两台网关可能要求完全不同的隧道,一台接受内置客户端,另一台则除了自家门户什么都不认。两位管理员描述同一台设备却各执一词,可能都对,因为他们说的是不同层次。真正决定要不要装驱动的,是底下那条隧道。

向管网关的人问三件事:用哪种隧道协议、哪种认证方式、客户端必须接受哪个地址和 DNS 后缀。按名字要协议;如果对方只回产品名,就解释为什么你需要的是协议。这三个答案在下载任何软件之前就把客户端的问题定下来了。

产品名之所以在那么多工单里活下来,是有原因的。用户看到的是门户 URL,而隧道在正常工作时是看不见的。把协议写进交接备注只花一行字,却能为后来的人消除歧义。

内置清单停在哪里

原生清单很短,而它的边界比内容更重要。基于 IPsec 的 L2TP如果只用预共享密钥,就不会说 SSTP,这个差别决定了选哪个客户端。表格按隧道而不是按厂商排列,所以你可以直接查网关报出的协议。

TunnelWindowsmacOSChromeOSLinux
PPTPbuilt inremoved in 10.12nopackage
L2TP over IPsec, pre-shared keybuilt inbuilt inbuilt inpackage
L2TP over IPsec, certificatebuilt inbuilt inbuilt inpackage
SSTPbuilt innonopackage
IKEv2built inbuilt innopackage
Cisco IPsec with XAuthnobuilt innopackage
OpenVPNnonobuilt inpackage

对着网关的要求读表格,而不是对着手册。如果答案是带预共享密钥的 L2TP over IPsec,前三类平台不装任何东西就能连。如果答案是 OpenVPN,在装任何东西之前只有 ChromeOS 被覆盖。哪个内置列里都没有的协议,才是要装东西了的诚实信号。

Linux 是最抗拒一概而论的一列。它的协议支持存在于发行版选择打包的守护进程和插件里,所以最小镜像在你补上之前可能一种都不支持,而两个桌面相同的发行版也可能不一样。

从命令行创建配置文件

图形面板写下的所有内容都保存在你能访问的地方,这正是内置配置文件可以自动化的原因。Windows 把 VPN 条目放在.pbk文件里,位于用户配置文件下以及ProgramData下,而rasphone能列出并编辑网络列表不显示的条目。当机器由脚本预置、没人会去点向导时,这一点很重要。它也解释了配置文件如何能在从不现身托盘的情况下存在。

rasdial
rasdial "VpnName" alice
rasdial "VpnName" /disconnect

手工编辑.pbk文件是可行的,同时也是把它弄坏最快的方式,所以让工具拥有格式。macOS 把服务放在系统配置里,而networksetup按服务名来处理它们;有几个标志要的是地址而不是主机名,所以先把端点解析出来,再保存客户端真正会用的值。这个区别在自动化时会咬人:用地址能跑的脚本换成名字就可能失败,而报错看起来像网关坏了,而不是参数被拒。

networksetup -listallnetworkservices
networksetup -getinfo "ServiceName"
networksetup -setmanualwithdhcprouter "ServiceName" 198.51.100.20

服务名是本地化的,用户也能改,所以把Wi-Fi写死的脚本,在第一条设成别的语言的机器上就会坏。从列表命令里读出名字再传下去,别靠猜。

没有专有客户端也能用证书

有些部署只需要客户端证书,别的都不专有,这正是接受驱动之前值得一试的中间情形。把证书放进平台存储是受支持的;这和把厂商根证书一丢、指望客户端自己找到,不是同一件事。前者是有意放置,后者是附带一张支持工单的猜测。

真正让人栽跟头的是客户端读的是哪个存储。用户存储里的证书,对配置为使用机器存储的客户端是不可见的,而你收到的提示会说证书缺失,而不是说它放错了位置。下结论说证书有问题之前,两个存储都查一遍。把能用的配置用的是哪一个记下来,因为机器重建时,那条笔记比证书活得久。

Windows 明确区分这两个存储,macOS 则把登录钥匙串与系统钥匙串分开。名字不同,但失败方式一模一样:一张客户端从来不看一眼的有效证书。

什么会逼你装客户端

有些网关把客户端绑到私有证书存储、终端状态代理,或操作系统根本做不到的登录交换上。基于 Check Point、Cisco 或 Fortinet 硬件的部署常常落到这里,在这些场景里内置客户端不是捷径。第三方替代品可能连得上,却仍然违反策略,所以这是安全决定而不是便利决定。按策略装上该装的,并在安装程序版本旁记下理由。

那份记录才是人们会跳过、却能为下一任管理员省下一周的部分:协议、认证方式、地址族和必需后缀,外加每个不得不加进去的二进制文件的一行理由。把它放在安装备注所在的地方,而不是聊天线程里。两行文档就能免掉一次重复调查。

相关文章