跳转到内容

VoWiFi 为什么在意你从哪里连进来

VoWiFi 是 nSIM 经互联网替卡连到运营商。手机在家里连 Wi-Fi 通话时,很少遇到「从哪里连进来」的问题,因为手机和卡通常在同一个国家。nSIM 常被用来管理境外的卡,这时来源地址就成了 VoWiFi 能不能建起来的关键。这一页讲为什么,以及 nSIM 怎么处理。

VoWiFi 先要和运营商的 ePDG 建一条加密隧道。ePDG 是运营商专为 Wi-Fi 通话设的接入网关。运营商在两处关心你在哪里:

  • 来源地址:不少运营商的 ePDG 只接受本国或指定地区的连接。从境外地址去连,隧道建不起来,或者建起来后注册被拒。
  • 声明的所在国家:注册和打电话时,终端要向运营商报告自己所在的国家。声明的国家与实际来源地址对不上,运营商可能拒绝服务。

所以一张英国的卡,最稳妥的做法是从一个落地在英国的地址连回英国的运营商。nSIM 管这个地址叫出口,提供出口的代理服务器叫节点。节点由你自己购买或搭建。

具体哪家运营商在意、在意到什么程度,因运营商、套餐和所在地而异。

nSIM 判断一个节点在哪个国家,不看节点名字,也不看国旗。它经这个节点访问一个公开的地理位置查询服务,按实际出口 IP 判断。名字写着「德国」而实际从美国出去的节点,会被归到美国。

原因就是上面那条:nSIM 按节点所在的国家向运营商声明位置。用错的国家去声明,比不建隧道更难排查。

节点还必须能转发 UDP,VoWiFi 的隧道跑在 UDP 上。所以只能转发 TCP 的 HTTP 代理不能当节点。

nSIM 为每张卡选出口,按三层规则,上层覆盖下层:

  1. 卡:只对这一张卡生效。按卡保存,卡换设备、切 eSIM Profile 都不变。
  2. 国家:对归属这个国家的所有卡生效。
  3. 默认:用卡所属国家的那组节点,自动挑健康的一个,并尽量一直用同一个。

每一层可以选:用本国的节点组、借用别国的节点组、固定某一个节点,或者「直连」。直连就是不经节点,从 nSIM 主机自己的网络出去。

这里的「卡所属国家」,指承载这张卡通话业务的运营商所在的国家,通常就是卡的国家。少数批发或转售的卡,会按承载运营商的国家算。

借用别国节点时,向运营商声明的国家也随之变成那个国家。选「直连」时,声明的仍是卡的国家,来源地址却是主机所在地。所以直连只适合两种情况:卡和主机在同一个国家,或者你确认这家运营商不在意来源。

即使卡和主机在同一个国家,默认规则仍会去找本国的节点,不会自动改成直连。这时要把这张卡或这个国家的出口明确设为「直连」。

找不到可用出口时,nSIM 不会建立 VoWiFi。它也不会悄悄改成直连、换一个国家,或者打开射频改走蜂窝网络。下面几种都算没有出口:

  • 卡所属国家,或借用的国家,没有能用的节点。
  • 固定的节点被删除、停用了,或者还没测出它在哪个国家。
  • 认不出这张卡属于哪个国家。

这三种退路各有代价:悄悄直连,会用错的来源去声明国家;悄悄换国家,声明会变;打开射频,境外卡就开始漫游。所以 nSIM 选择不建,并在设备页和「代理」页写明原因,指给你去导入节点或改出口。射频保持关着,你配好出口后,nSIM 会自动开始建立。

组里有节点、只是都不太健康时,nSIM 仍会选一个去试。

改出口不会打断正在进行的连接

Section titled “改出口不会打断正在进行的连接”

改了某张卡或某个国家的出口,正在运行的 VoWiFi 不会断。界面会提示这张卡「需重新连接」,你点了才按新出口重建。重建时要短暂断开,期间打不进电话、收不到短信。新出口不可用时,nSIM 会拒绝重连,旧的连接保持不动。