Apple Watch 会用 iPhone 的 VPN 连接吗?
手表没有自己的 VPN 设置。它走哪条链路,决定了 iPhone 的隧道是否承载它的流量,而答案随时都在变。
手表没有可以打开的 VPN 设置,这是首先要理解的一点。所有 VPN 配置都在配对的那台 iPhone 上,在描述文件里,或在某个 App 的 Network Extension 里。手表的流量是否真的走那条隧道,取决于它当时用的是哪条链路。仅这一点就解释了大量令人困惑的说法:手机连着 VPN,手表却照常工作,或者反过来。
watchOS 里没有可以指向的 VPN 客户端
watchOS 出厂就没有 VPN 配置界面,所以不存在针对单只手表的隧道可供启用或调试。装在 iPhone 上的描述文件只对 iPhone 生效,手表只能通过两台设备共享的链路继承行为。凡是有人说手表上有 VPN 设置,基本可以认定他描述的是手机屏幕。
这也是 MDM 团队无法像给手机推送那样给手表推送 VPN 配置的原因。
手表真正拥有的是若干种传输方式,并且在它们之间不断切换:连到附近手机的蓝牙、它存有凭据的兼容 Wi-Fi 网络,或带套餐的蜂窝型号上的蜂窝网络。每次切换都会改变由谁承载数据包,而这正是影响你那条隧道的部分。
蓝牙:由手机承载数据包
手机在附近时,手表优先用蓝牙,因为功耗远低于 Wi-Fi 或蜂窝。手表 App 的数据经这条链路发出,到达手机,然后像手机自己发起或转发的其他流量一样,遵循手机的路由与隧道规则。在这种状态下,手机的 VPN 确实在路径上。这就是为什么手表从未自己建立连接,隧道开启时手表 App 仍可能失败。
这种转发并不等于手表加入了隧道。隧道属于手机的网络栈,手表对它没有任何可见性:没有地址分配,没有自己的路由,也没有可读的隧道状态。你不会在隧道里看到手表流量作为独立会话出现。
一个有用的测试是只关掉手机上的蓝牙,再重复那个失败的操作。如果它开始能用,说明路径就是手机转发。
Wi-Fi 与蜂窝:手表离开了隧道
如果蓝牙超出范围或被关闭,手表会尝试它已记住的兼容 Wi-Fi 网络,有服务的蜂窝型号还可能回落到运营商。Apple 的手表连接指南描述了这一顺序,并指出 Wi-Fi 图标表示手表在走 Wi-Fi,而不是在与 iPhone 通信。这些路径上的流量终止于手表,而不是手机。
所以手机的隧道并不延伸到那里。手表自己的连接由 watchOS 用它自己的无线模块和所持凭据建立,手机并不会代为转发。这正是手机上的严格全流量 VPN 工作正常、手表 App 却仍能上网的情形。
反过来抱怨的更常见:手机隧道一建立,手表 App 就失败。
includeAllNetworks 覆盖什么、不覆盖什么
Apple 关于 Network Extension 的路由文档在描述 includeAllNetworks 时,把与配套设备的通信,包括发往 Apple Watch 的流量,列为例外之一。其意图是宽泛的隧道不要切断两台设备之间的本地链路。要严格理解:它保护的是配套通道,而不是手表 App 可能调用的每一个服务。
它也不认证任何特定的 VPN 产品,更没有说明故障发生时手表选的是哪种传输方式。通知迟到自己到达,并不能作为隧道把它丢掉的证据。
这个例外也不会把走自身 Wi-Fi 或蜂窝的手表变成隧道内的客户端。如果你需要这层保证,隧道必须终止在手表流量真正经过的地方,而手机并不在那条路径上。
改配置之前,先读清路径
在动 VPN 配置之前,先记录三件事:手表报告的连接(手机、Wi-Fi 或蜂窝)、手机是否在蓝牙范围内,以及一个明确会失败的操作。然后在路径不变、关闭 VPN 的情况下重复该操作,如果策略允许。只在隧道开启时出现的结果是隧道问题,两种情况都出现的结果则不是。
两次测试都把两台设备放在同一位置,否则你测的是房间,不是隧道。
如果故障在这样对比之后仍然存在,给网络管理员的有用报告应当很窄:这个 App、这个操作、这种传输方式、隧道开与关。关于手表与 VPN 不兼容的笼统说法无法被检验,而且往往只是把强制门户或服务被封锁藏在一句关于无线电的断言背后。