三星/安卓使用透明代理模块(Surfing)无法拨打电话的解决方案
0. 引
相信各位折腾root情况下透明代理模块时,都可能会遇到一个非常棘手的问题:
手机网络数据一切正常,但无法拨打或接听电话,短信收发也出现异常
第一反应可能是信号问题,但通常会发现信号是满格的。这其实是一个由代理软件和系统底层VoLTE服务冲突导致的典型问题。
1. 问题分析
现在的HD通话是这样实现的
在LTE/NR网络下,通话和短信并非通过传统电路,而是依赖于
IMS服务,我们熟知的VoLTE就是其最常见的应用
IMS服务本身也是通过IP数据包与运营商的核心网络进行通信的。而Surfing这类透明代理模块,为了实现全局代理,其默认的TUN 模式会在系统层面创建一个虚拟网卡,强制接管设备上几乎所有的网络流量。
当VoLTE/IMS的信令流量也被这个虚拟网卡接管后,这些对延迟和路由极为敏感的数据包被错误地进行了代理、重定向或分流,就会导致IMS服务注册失败或频繁掉线使电话无法正常拨打
不是信号问题,而是VoLTE信令被透明代理劫持了
2. 解决方案
本质上就是让通话相关的核心服务流量,绕过透明代理,直接与运营商网络通信
注意缩进!
yaml对缩进有非常非常极端的要求,少一个空格多一个空格都会导致整个炸锅,敢多space他就敢跟你爆了
2.1 方案一 Samsung用户优先尝试
这是最简单直接的方法,让代理排除受影响的App
需要排除的包名列表 (主要针对三星 OneUI):
1 | com.qti.qcc # 高通IMS/VoLTE 调度核心 |
(注:非三星手机可根据自身情况,尝试排除 com.android.imsservice 等原生IMS服务包名)
2.1.1 操作流程(以surfing为例)
- 使用 MT管理器 等工具,打开 Clash 配置文件,路径通常为:
/data/adb/modules/box4magisk/config.yaml。 - 找到
tun:->exclude-package:部分(约是137~146行) - 取消这些包名前面的
#注释,如下图所示 - 保存配置文件,然后重启
此方法对大部分三星手机有效。如果操作后问题依旧,或者您的手机并非三星也遇到了类似问题,请直接尝试方案二
2.2 方案二:切换至 Tproxy
如果方案一无效,或者您想追求一个更稳定、更彻底的解决方案,那么将代理模式从 TUN 切换到 Tproxy 是最佳选择,这绝对是最通用的方案
2.2.1 为什么是Tproxy?
TUN模式是应用层逻辑,可以当作全盘接管,排除法有时不够彻底,不严谨的话,可以理解为VPN那种全盘接管Tproxy模式配合iptables在更底层的内核层面工作,可以实现更精确的流量控制。模块通常会预设好规则,从一开始就绕过系统内部和运营商的通信流量,只代理用户App的流量,从根源上避免了冲突- 更何况,Surfing用的是Mihomo内核,真想玩TUN建议使用sing-box,后者在TUN做的优化更好,可以说是代理业界天花板
2.2.2 具体操作
修改Clash配置文件,启用Tproxy监听
- 打开
/data/adb/modules/box4magisk/config.yaml。 - 关闭TUN
1
2
3tun:
enable: false #把这里改成false
# ... 其他设置保持不变 - 启用Tproxy 在TUN和DNS模块中间增加以下内容
1
2
3tproxy:
enable: true
port: 1536 # 注意:此端口号必须与 tproxy-port 和模块脚本使用的端口一致,Surfing默认1536,视你的配置跟随变动,端口在文件顶部的`tproxy-port` - 重启
3. 结
本篇主要是提供具体的解决方案,关于这部分的代理知识后续可以单独分篇来讲(又挖坑)
- 标题: 三星/安卓使用透明代理模块(Surfing)无法拨打电话的解决方案
- 作者: Chongxi
- 创建于 : 2025-11-08 00:10:04
- 更新于 : 2026-01-03 03:01:44
- 链接: https://blog.chongxi.us/2025/11/07/SurfingIssueOnSamsung/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。