你可以毫无障碍地从 Mac 发起 FaceTime 语音通话,然后用同一台 Mac 拨一个水管工的号码,却什么反应也没有。通常的解读是网络没问题,是别的无关环节坏了。这个解读本身就是误解,而它之所以流行,多半是因为 FaceTime 看上去像一次公平的测试。

其实不是。FaceTime 语音和电话接力是两条独立的通道,要求也各不相同,其中一条能穿过的隧道,另一条穿不过去。

VPN 也不是默认的嫌疑人。下面的顺序会在你改动任何其他设置之前,先排除这两种假设。

FaceTime 能通,几乎说明不了什么

FaceTime 语音只负责与可达的对方协商出一条连接。只要两端能交换数据包,这类流量就能穿过互联网,包括全隧道的 VPN。电话接力则不出楼。Mac 是请附近的一台 iPhone 用它自己的蜂窝线路去拨号,这个请求是本地完成的。

所以一次成功的 FaceTime 通话只证明 Mac 有可用的互联网,并能连到 Apple 的服务。它完全没说明 Mac 能不能看见就在旁边的那台 iPhone。两台设备可以共用一个 SSID,却互相看不见。

整个误解就浓缩成一句:凡是离开这栋楼的通话,都测不到本地链路。

接力路径到底要求什么

Apple 清单上的每一条都是硬性要求,而不是可选项。两台设备在同一个 Wi-Fi 网络、都登录同一个 Apple 账户、都在 FaceTime 中登录并启用电话号码,还要为你想用的那台 Mac 打开「在其他设备上通话」。Apple 的iPhone 通话指南是当前措辞的出处。

在较新的 iPhone 上,开关位于「设置」、「App」、「电话」、「在其他设备上通话」,你的 Mac 必须出现在那份列表里且处于启用状态。Mac 第一次要用这条线路时,macOS 会问是否允许从那台 iPhone 通话。这个提示只要被关掉一次,功能就会安静地坏着,因为不会再有人来问。

Mac 这一侧取决于系统版本。较新的 macOS 自带「电话」App,旧版本则经 FaceTime 转接通话。如果某篇教程指向你找不到的菜单,先查版本,再判断是不是少了设置。

RequirementHow it fails when missing
Same Wi-Fi networkThe iPhone is listed in settings but a call rings nowhere
Same Apple AccountThe iPhone never appears as a call source
Number enabled in FaceTimeFaceTime calls work, the phone line does not appear
Calls on Other Devices enabled for this MacIncoming calls never arrive, outgoing dialing fails at once
macOS allow prompt acceptedWorked once after setup, then stopped without an error

VPN 真正会干扰的地方

VPN 客户端可以用三种不同的方式打断接力,而只有第一种有文档记载。被记载的情形是配置阻止了本地组网:macOS 会警告这种 VPN 可能干扰连续互通功能,而接力正是一项连续互通功能。第二种是全隧道,它把 Mac 用来找到 iPhone 的那部分流量也一并抓走,于是本地请求被送往一个根本用不上它的网关。第三种是客户端把自家的过滤或断网开关应用到每个接口,而不只是隧道。

只承载公司子网的分流隧道通常不会动本地路径。这就是同一台 Mac 在某个 VPN 配置下能通、换一个就失败的原因,而两个配置之间的差别才是有用的线索。

对「对比能证明什么」要严格。关掉 VPN 能通、开着就失败,这只说明存在相互作用,不是诊断。它没有指出被拦的是哪个协议、端口或接口,仅凭这一点去编造路由,只会让下一次测试白做。

三种常被算在 VPN 头上的故障

Wi-Fi 通话。这是 iPhone 上的运营商功能,Mac 并不会继承。它让手机通过 Wi-Fi 使用运营商的服务,并非每家运营商都提供,而且当 iPhone 关机、超出范围,或处在会拦截运营商端点的网络上时,它毫无用处。如果你真正的需求是 iPhone 留在家里时也能打电话,那从一开始就测错了机制。

网络隔离。访客网络、接入点上的客户端隔离,以及彼此独立的 VLAN,产生的正是接力的那种症状:同一个 SSID、互相看不见,而且根本没有 VPN 参与。如果楼里的 Wi-Fi 隔离客户端,Mac 上任何设置都改变不了结果。

Handoff。连续互通(Handoff)是在设备之间接续一项活动。它不会给 Mac 一条蜂窝线路,也不是替代性测试。看到 Handoff 图标出现确实说明两台设备能互相找到,这一点值得知道,但离证明通话路由可用还差得远。

一套能留下证据的测试顺序

从已知状态开始:iPhone 解锁并放在旁边,两台设备连同一个 Wi-Fi,Mac 上的 VPN 断开。拨出一通、接进一通。两个方向都要测,因为它们失败的原因不同。拨出取决于 Mac 能否够到那条线路,接进则取决于 iPhone 是否把那台 Mac 当作有效目标。

用你实际在用的配置重连 VPN,其他一概不动,把两通电话都重做一遍。两通都还正常,说明 VPN 不是你的变量,就别再调它。两通都坏了,就记下配置名、客户端版本,以及本地流量是否被排除,然后把这三点交给配置的负责人。

如果只有一个方向失败,先看 iPhone 的通话设置,再怀疑隧道。不对称的失败绝大多数是每台设备上的开关,而不是路由问题,看出这一点能省下一个下午。

升级之前该确认什么

按顺序过这五项,并把每项的答案写下来:同一个 Wi-Fi 网络、同一个 Apple 账户、FaceTime 中已启用电话号码、「在其他设备上通话」里已启用这台 Mac、macOS 的允许提示已被接受。任何你确认不了的项目,都是免费的候选原因。

然后再决定你要优化什么。如果通话只需要在你办公桌前能用,把本地流量从 VPN 配置里排除通常就够了,也不削弱隧道的意义。如果 iPhone 在别处时也必须能用,那接力就是错的功能,运营商的问题要排在前面。

相关文章