这篇排障记录针对一个难定位的问题:MIUI 手机通过软路由连接 VOXI Wi‑Fi Calling 时,ePDG 的 UDP 500 只有上行、没有下行,反复改 APN、换卡槽或刷机仍无法激活。作者最终把关键变量收敛到代理节点对 UDP 500 的转发能力,并给出可观察、可回退的验证流程。

适用环境与症状

作者的成功环境是小米 11、国际版 MIUI 14.0.7、VOXI SIM、OpenClash TUN 模式和英国出口节点。失败时,日志里 epdg.epc.mnc015.mcc234.pub.3gppnetwork.org:500 只能看到上传流量,没有返回流量。

这不是通用结论。原帖只在一套手机、SIM 和网络环境中完成验证,也没有对不同 MIUI、HyperOS、运营商账户状态或不同节点做系统化对照。复现前应先确认相关操作符合运营商条款及当地规则。

排障顺序

1. 先证明请求确实进入代理

手机开启飞行模式,关闭移动数据,只连接软路由提供的 Wi‑Fi。OpenClash 使用 TUN 混合模式,并检查防火墙是否把 UDP 500 自动绕过代理。若域名处于 Fake-IP 模式,将 pub.3gppnetwork.org 加入 Fake-IP 排除列表,使 ePDG 域名按预期解析和分流。

2. 验证节点能力

把 ePDG 域名的 UDP 500 指向英国节点;可同时为 UDP 4500保留一条同类规则,但作者在这次 VOXI 流量中主要观察到 500 端口。关键不是“英国 IP”这个标签,而是节点和上游网络是否真的允许双向转发该 UDP 端口。

作者换用 AWS EC2 伦敦节点后,在规则模式下不必全局代理也能拉起服务。这一步说明此前最大的变量是节点,而不是反复修改 APN。

3. 在手机端重新触发注册

作者每次重启后会把虚拟定位设到伦敦,再交换 SIM 所在卡槽以触发新的 Wi‑Fi Calling 注册请求。在这台设备上,不换卡槽时可能一直没有新请求;但这属于设备相关经验,不能视为所有安卓手机的必需步骤。

如何判断成功

不要只看状态栏图标。应同时检查 OpenClash 连接日志:目标主机应为对应的 ePDG 域名,网络类型为 UDP,目的端口为 500,并且 upload 与 download 都出现非零数据。作者还通过拨打英国 123 报时电话进行功能验证。

若日志完全没有请求,优先回到手机端触发流程;若只有上行没有下行,优先更换支持 UDP 500 的节点;若双向流量存在但仍未注册,再检查系统版本、SIM 卡槽、账户开通状态和运营商侧限制。

失败项、限制与回退

作者曾尝试关闭查找设备、重置 APN、反复换卡槽、刷国际版 MIUI、全局代理和调整 Fake-IP,但这些操作并不能单独证明因果关系。真正有证据支撑的判断,是可用英国节点带来了 UDP 500 双向流量并成功注册。

需要回退时,删除新增的 OpenClash 分流规则,恢复原有 Fake-IP 列表和防火墙策略,关闭虚拟定位并把 SIM 放回原卡槽。刷机具有较高风险且并非本文能够证明的必要条件,不应把它作为第一步。

可复用的工程经验是:先用网络日志把问题分为“没有发包、只有单向、双向但注册失败”三类,再逐层改变变量;一次只改一个环节,才能避免把偶然成功误判为固定方案。

原作者:Cigma(兮格玛)
原帖:https://linux.do/t/topic/2762654