FaceTime 能用,Mac 却无法通过 iPhone 拨号
FaceTime 通话成功并不能证明 Mac 上的 iPhone 通话接力正常工作。先检查 VPN 可能拦住的本地路径,再按正确顺序排查。
你可以毫无障碍地从 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 转接通话。如果某篇教程指向你找不到的菜单,先查版本,再判断是不是少了设置。
| Requirement | How it fails when missing |
|---|---|
| Same Wi-Fi network | The iPhone is listed in settings but a call rings nowhere |
| Same Apple Account | The iPhone never appears as a call source |
| Number enabled in FaceTime | FaceTime calls work, the phone line does not appear |
| Calls on Other Devices enabled for this Mac | Incoming calls never arrive, outgoing dialing fails at once |
| macOS allow prompt accepted | Worked 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 在别处时也必须能用,那接力就是错的功能,运营商的问题要排在前面。