连接酒店网络,从“电话”应用拨打一通电话,然后打开浏览器,看它报告的是 VPN 的出口地址而不是酒店的地址:这三个观察看似矛盾,但通常并不矛盾。运营商的 Wi-Fi 通话由移动运营商在你的线路上开通,而 VPN 只是设备所发数据的路由层。把公网 IP 页面当作电话通话的证据来读,是最快把一下午耗在错误设置上的做法。两项服务都不能靠对方的症状来判断,而检查的先后顺序会改变答案。

一条隧道承载所有通话的误区

VPN 一旦连上,直觉会认为手机发出的一切现在都从服务商的服务器出去,语音也不例外。数据确实会走隧道建立的路由,但运营商语音服务默认并不在其中:它由运营商的核心网送达,隧道从不替换那个核心网。“电话”应用里的 Wi-Fi 通话模式是绑定在你签约线路上的服务。消费级 VPN 配置文件既不能开通它,也不能取消它。

在消息或办公应用内拨打的通话是另一种产品。这类应用有自己的账号、自己的服务器和自己的媒体路径,所以那些通话通常走在隧道里,隧道断了它们也会断。在动任何设置之前,先把失败的通话归类为线路级服务还是应用级账号,能消除大部分猜测。

这条线路上真的开通了 Wi-Fi 通话吗?

在问任何 VPN 问题之前,先确认你的运营商和手机支持该功能,并且它已为你正在测试的那条具体线路开启。Apple 的Wi-Fi 通话设置指南介绍了各运营商不同的开启路径,以及线路激活后手机显示的状态。当该状态不存在,或列表中根本没有你的运营商时,该查的就不是 VPN。

接着用一个你能控制的号码拨打一通普通电话,在通话接通时观察状态指示。显示 Wi-Fi 已连接的手机只证明了数据链路是通的;它没有证明是哪张网络承载了音频。永远不要为了看音频如何路由而拨打紧急电话,也永远不要把消息应用内的语音通话当作运营商功能的证据。它们是两种失效方式不同的分行服务,一个说明不了另一个。

如果症状只在 VPN 开启时出现,就保持线路、Wi-Fi 网络和通话目标不变,每次只改一个变量。在被管理的手机上,只有管理员事先同意,移除配置文件的对比测试才正当。

IncludeAllNetworks 与 ExcludeCellularServices 的位置

设备管理配置文件中的 IKEv2 载荷带有两个决定这种分流的键。IncludeAllNetworks是把整台设备的流量(而不只是 VPN 应用恰好捕获的那部分)推进隧道的开关。一旦设置,ExcludeCellularServices就能把可经互联网路由的服务流量从隧道中切出去,而 Wi-Fi 通话正是这类豁免点名的服务之一。运营商直接路由进自己核心网、从不经过公网互联网的流量,无论这两个键怎么写,都留在隧道之外。

键说明的是配置文件能表达什么,而不是你的服务商实际交付了什么。省略了ExcludeCellularServices的配置文件可能把该功能留在隧道内,而不提供可编辑开关的服务商可能让你完全没有任何面向用户的控制。真正说了算的是你安装的那份载荷,你的管理员可以逐字读给你听。

为什么公网 IP 页面追踪不到一通电话

报告 VPN 出口地址的页面,只测量了某一时刻来自某一个应用的一次 HTTP 请求。它对语音通话所用的接口一无所知,而接通了的通话也说明不了隧道对其他流量是否健康。拿其中一个替代另一个,只会得出听起来很确定、实际却错误的结论。

隐私这一侧同样要具体:运营商仍然持有你的签约记录,仍然提供线路服务,所以换一个网页出口并不会让你脱离那个账户。VPN 改写的是它所捕获流量的路径;它不会把一条移动线路搬到另一家运营商。

既保住策略又不乱的诊断顺序

先从线路开始:功能已开启、运营商在列表中、指示符存在、拨通过一通普通电话。然后再看配置文件,问IncludeAllNetworks是否开启、ExcludeCellularServices设成了什么。只有当两者都干净时,隧道本身才值得你关注。

把你真正想要的结果写下来:一项被允许且能用的手机功能,加上隧道已知的作用范围。这个答案能经受运营商更新、新网络或改版配置文件,而对数据包的猜测什么都经受不住。如果你管理配置文件,请在同一份载荷里流量拦截规则旁边读一读语音服务例外,因为两者会相互作用。如果你是用户,运营商的客服渠道和 VPN 服务商的文档化行为,就是值得在工单里引用的两个来源。

相关文章