CHIZI-0618 / box4magisk

Use sing-box, clash, v2ray, xray tunnel proxy on Android devices.
GNU General Public License v3.0
1.12k stars 113 forks source link

手机开启 Xray TPROXY 后 VoLTE 不可用 #38

Closed snoolee closed 11 months ago

snoolee commented 11 months ago

模块开启后可正常透明代理,但 VoLTE 无法使用(无论 WiFi 或移动数据下)。 由于运营商默认使用 VoLTE,所以导致使用模块时,手机无法拨打/接听电话。

使用 box 的默认配置,仅修改了 bin_name。 使用的 xray 配置也大同小异,仅修改了一些路由和DNS分流规则。 日志中没看到异常,搜索网上也没发现相关资料。

目前尝试了以下方法,问题依然存在:

  1. 设置 xray 路由为全部直连( freedom 出站);
  2. 设置 box 的 proxy_mode 为白名单模式(不代理任何应用);
  3. 将移动网络添加至 ignore_out_list(仅代理 WLAN 和热点)。 只有将 proxy_mode 设为 core 时 VoLTE 才正常,但也没法透明代理了。

除此之外模块非常方便好用,如果能解决该问题的话不胜感谢。

CHIZI-0618 commented 11 months ago

使用 blacklist 模式,尝试修改 box.tproxy https://github.com/CHIZI-0618/box4magisk/blob/7da5731372b4542987cc8528626961d092270ee8/box/scripts/box.tproxy#L31

改为 uid_list=(1001)

使用 box.tproxy renew 重载透明代理,查看是否解决问题

snoolee commented 11 months ago

还是不行,透明代理一开 VoLTE 就失联了。 只能关闭后,再开关飞行模式恢复。

# adb shell su -c "sed -i 's/uid_list=(/uid_list=(1001/' /data/adb/box/scripts/box.tproxy"
# adb shell su -c "cat /data/adb/box/scripts/box.tproxy | grep uid_list="
uid_list=(1001)
# adb shell su -c "/data/adb/box/scripts/box.tproxy renew"
[Warn]: cleaning up ip(6)tables transparent proxy rules.
[Warn]: clean up ip(6)tables transparent proxy rules done.
[Info]: use TPROXY:TCP+UDP.
[Info]: creating ip(6)tables transparent proxy rules.
[Info]: wlan0 swlan0 rndis0 transparent proxy.
[Info]: proxy mode: blacklist,  no transparent proxy.
[Info]: create iptables transparent proxy rules done.
[Warn]: disable IPv6.
snoolee commented 11 months ago

找到解决方法了,需要:

  1. 在 box.config 里开启 IPv6
  2. 在 box.tproxy 里的 uid=() 中添加 uid=("1000" "1001" "10108")

额外添加的这两个 UID 分别是系统 ims 服务和电话应用的 UID。 其他手机的值可能不一样,建议在 package 列表里搜 ims,或者 phone、dialer 相关的应用。 把这些应用的 UID 都加到作者发的那一行代码里,最后开启 IPv6 就可以了。

VoLTE 具体涉及的应用应该还有别的,通过 UID 统一排除暂时可行,以后有时间再测试吧。

siyue666 commented 11 months ago

找到解决方法了,需要:

1. 在 box.config 里开启 IPv6

2. 在 box.tproxy 里的 uid=() 中添加
   uid=("1000" "1001" "10108")

额外添加的这两个 UID 分别是系统 ims 服务和电话应用的 UID。 其他手机的值可能不一样,建议在 package 列表里搜 ims,或者 phone、dialer 相关的应用。 把这些应用的 UID 都加到作者发的那一行代码里,最后开启 IPv6 就可以了。

VoLTE 具体涉及的应用应该还有别的,通过 UID 统一排除暂时可行,以后有时间再测试吧。

感谢,我是volte一直跳,间断性没网,开启ipv6就好了

TeaWu commented 2 weeks ago

找到解决方法了,需要:

  1. 在 box.config 里开启 IPv6
  2. 在 box.tproxy 里的 uid=() 中添加 uid=("1000" "1001" "10108")

额外添加的这两个 UID 分别是系统 ims 服务和电话应用的 UID。 其他手机的值可能不一样,建议在 package 列表里搜 ims,或者 phone、dialer 相关的应用。 把这些应用的 UID 都加到作者发的那一行代码里,最后开启 IPv6 就可以了。

VoLTE 具体涉及的应用应该还有别的,通过 UID 统一排除暂时可行,以后有时间再测试吧。

请问为什么要开启ipv6才可以啊