下载页面上有六款 Mac VPN 应用,却没有一款说明你所在单位的网关会接受哪一个。这不是应用商店的缺口,而是交接环节的缺口。SSL VPN是一个产品类别,而不是单一协议,因此两个登录界面相同的网关也可能需要不同的客户端。当有人把一台 Mac 和一个服务器地址交到我手上时,我遵循这样的顺序:先弄清网关使用什么协议,再选择与之匹配的客户端,然后在把工作交给这条隧道之前验证路由和 DNS。

从网关开始,而不是从应用商店开始

该应用程序在您的 Mac 上运行,但必须有其他东西接受连接并授予访问权限:带有运营商的网关、地址、兼容设置以及授权您的方式。免费客户端可以是很好的软件,但仍然不提供这些东西。工作访问、家庭网关和商业互联网出口是三个不同的起点,它们恰好共享一个下载页面。

在安装或更换任何东西之前,请从运行该服务的人那里得到四个答案:

  • 接入方式:浏览器门户、选定的应用程序访问或完整的网络隧道。这决定了您是否需要客户。

  • 网关系列和支持的版本:产品、已启用的服务以及仍支持您的 macOS 版本和 Mac 硬件的客户端版本。

  • 验证:密码加MFA、浏览器登录、设备证书或状态检查。缺乏批准流程的客户端将连接,然后被拒绝。

  • 所有权:受信任的下载或管理源、预期的配置文件以及在其损坏时由谁支持。

所有权是人们跳过的项目。在受管理的 Mac 上,配置文件通常通过组织管理系统到达,并且可以在下次签入时替换手动构建的配置。在寻找第三方应用程序之前,询问您是否需要自己安装任何东西。

SSL VPN 是一个系列标签,而不是一个协议

TLS 可以保护连接,同时其中的产品特定交换处理登录、会话分配和隧道流量。这种内心的交流是客户必须实现的。浏览器到达网关HTTPS登录页面证明证书链和Web服务器;它并不能证明不相关的VPN应用程序可以建立到同一台机器的隧道。

OpenConnect是我所知道的最清晰的说明。它是上游文档列出了不同网关系列的单独协议模式,并将互操作性与官方供应商支持分开。如果每个 SSL VPN 都使用一种协议,那么这些模式就没有必要了。

OpenVPN 配置文件反过来也具有相同的限制:它是 OpenVPN 兼容部署的导入格式。将 TLS 作为构建块共享不会将其变成任意企业网关的配置文件。这就是为什么正常运行的浏览器登录会出现误报:在不存在隧道的情况下,门户访问可能会成功,并且稍后的状态检查仍可能会拒绝出现的隧道。

将客户端与网关所说的内容相匹配

一旦了解了家人的情况,选择范围就会迅速缩小。这是我首先检查的映射,最后一列比任何应用程序评级都更重要。

网关家族客户macOS看什么
IKEv2/IPsec,供应商中立内置 macOS 客户端,具有 .mobileconfig 配置文件服务器身份和可以管理的配置文件
OpenVPN 2.xTunnelblick 或 openvpn 命令行.ovpn 加凭据;客户不提供服务
WireGuard官方WireGuard客户端或wireguard-tools对等配置; wg show 可见性因客户而异
供应商SSL VPN(AnyConnect、Pulse、GlobalProtect、F5、Fortinet)供应商客户端,或带有显式 --protocol 的 OpenConnect不支持的组合、MFA 和姿势检查
仅浏览器门户没有客户应用程序访问不是网络隧道

两行值得警告。内置的 macOS 客户端是真正的 IKEv2 实现,而不是通用的 SSL VPN 客户端:为其设计的服务需要正确的配置文件、预期的服务器身份和凭据,并且在托管计算机上,该配置文件可能会被锁定。 OpenConnect 涵盖了一个二进制文件中的多个供应商协议,但其自己的项目并未声明供应商支持;主机扫描、网关推送的分割隧道规则或特定的 SSO 流可能仅存在于供应商客户端中。

WireGuard 具有相同的形状。服务提供对等点,客户端提供隧道,OpenVPN 配置文件不能替代。一个macOS 问题:App Store 客户端将其隧道保留在内部Network Extension,因此 Homebrew 工具中的 wg show 在接口启动时无法报告任何内容。而是用路线和流量进行验证。

配置,然后按固定顺序进行验证

安装一个客户端和一个配置文件,并记下您所做的更改。连接之前,捕获基线,以便您可以了解隧道发生了什么变化:

scutil --nc list
networksetup -listallnetworkservices
netstat -rn | grep -E "^default|utun"
scutil --dns

连接提供的配置文件并重复相同的命令。对于完整隧道,默认路由应指向 utun 接口;使用分割隧道时,仅应路由内部前缀,并且您的公共出口应该看起来没有变化。 DNS 是通常会损坏的一半:scutil --dns 按照系统使用解析器的顺序列出解析器,位于公共解析器下方的内部解析器会将内部名称发送到错误的服务器。

对于OpenVPN 服务,Tunnelblick 是一个合理的免费客户端,它自己的指南直接说明了缺失的一半:它不提供VPN 服务。双击您获得的.ovpn,让Tunnelblick安装它,然后在依赖之前,请根据您的 macOS 版本检查该版本。

对于供应商网关,我经常从命令行使用 OpenConnect 进行测试:

brew install openconnect
sudo openconnect --protocol=anyconnect --user=you vpn.example.com

该工具打印收到的证书并在信任未知链之前等待;该提示是一项功能,使用 --servercert pin-sha256:... 固定比接受您没有阅读的警告要好。 Ctrl-C 会破坏隧道,因为前台 openconnect 没有终止开关,也没有重新连接逻辑。这对于诊断会话来说很好,但对于日常工作来说却是一个糟糕的默认值。

当没有网关匹配时

有些人到达时遇到了相反的问题:没有接线员、没有地址、没有服务。免费的 Mac 应用程序无法在家庭路由器上创建入站可达性。如果您想在酒店拥有自己的网络,则必须有人在家中运行网关、对其进行修补、发布或解析其地址并决定哪些设备可以访问。

如果您想要不同的互联网出口而不是访问专用网络,请在客户端之前选择服务。独立客户端中的空配置文件列表通常不是损坏的免费订阅;可能没有订阅,也没有附加服务器。也将成本分开:客户许可证、服务计划和自营网关是三种不同的购买。

工作 Mac 添加了一个策略层。免费应用程序即使在连接时也可能出错,因为批准的客户端可能会强制执行设备检查或替代方案所缺乏的身份验证流程。寻求批准的替代方案,而不是在不相关的应用程序之间复制凭据,并且不要将禁用平台保护视为兼容性修复。

远程桌面查看器也是一种不同的产品。它向您显示另一台计算机上的会话;它不会为您的 Mac 本地应用程序提供隧道提供的网络路径。

第一次真正的会议之前的简短清单

以书面形式命名网关系列和访问模式,仅安装与其匹配的客户端,并记录您使用的配置文件。然后用实际流量确认三件事:隧道安装的路由、解析器顺序以及通过名称而不是 IP 到达的一个内部应用程序。

如果出现问题,请一次更改一个变量:客户端、配置文件、身份验证流程。在隧道拒绝启动时加载的门户将 Web 服务器问题与客户端兼容性问题分开。一旦工作服务应答并且公共路径按预期运行,您就拥有了一个命名的、受支持的安排,而不是一堆猜测。

相关文章