CHIZI-0618 / box4magisk

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

连接wifi时能正常代理,流量下只有tg app走了代理 #7

Closed cfandora closed 1 year ago

cfandora commented 1 year ago

核心为clash meta,配置如下(已去除节点和规则)

clash.txt

代理方式为TProxy,系统为Android 13

使用流量时也正确检测到了rmnet_data3,但实际使用只有tg app走了代理,chrome甚至也没走代理,请问该如何解决?需要补充哪些信息?

CHIZI-0618 commented 1 year ago

我注意到你提供的配置文件 clash.txt 有以下内容:

redir-port: 7893
tproxy-port: 7894

tun:
  enable: true
  stack: system # or gvisor
  dns-hijack:
    - 'any:53'
  auto-route: true
  auto-detect-interface: true

此时 Clash.Meta 内核的 tun 入站已打开且开启了自动路由(auto-route: true),这会与脚本的 Tproxy 模式路由冲突。

根据已知信息 解决方法为

一. 修改 Clash.Meta 配置

  1. 关闭 Clash.Meta 的 tun 入站,即
tun:
  enable: false
  stack: system # or gvisor
  dns-hijack:
    - 'any:53'
  auto-route: false
  auto-detect-interface: false
  1. tproxy 入站与 dns 监听是必要的,即
tproxy-port: 1536

dns:
  enable: true
  listen: 0.0.0.0:1053

 注意端口值要与 box.config 中的定义一致 https://github.com/CHIZI-0618/box4magisk/blob/603b13a4130923c90830943c27dc36f6702b4c20/box/scripts/box.config#L6-L7

二. 修改 box.config 配置

  1. 使用 Clash 内核 Tproxy 代理即
    bin_name="clash"
    proxy_method="TPROXY"
  2. 重新运行 box 服务与 tproxy 脚本 在任意终端执行以下命令
su
/data/adb/box/scripts/box.service restart
/data/adb/box/scripts/box.tproxy renew

此时即可使用 clash 内核启动透明代理

cfandora commented 1 year ago

感谢告知存在的问题,但照其修改后,在SIM卡流量下除了tg的app,其他依旧没有被代理,最明显的就是chrome打开各种流媒体,在wifi下能根据分流规则正常播放,流量下就全部提示不在此地区提供服务。只有tg app可以正常接收消息和发送消息。请问我这里还需要补充哪些信息来让你帮忙排查?不确定是否和Android 13有关,朋友的Android 11按照你的修改了以后能正常使用。

补充一下现在的clash和box的config

clash.txt box.txt

CHIZI-0618 commented 1 year ago

感谢告知存在的问题,但照其修改后,在SIM卡流量下除了tg的app,其他依旧没有被代理,最明显的就是chrome打开各种流媒体,在wifi下能根据分流规则正常播放,流量下就全部提示不在此地区提供服务。只有tg app可以正常接收消息和发送消息。请问我这里还需要补充哪些信息来让你帮忙排查?不确定是否和Android 13有关,朋友的Android 11按照你的修改了以后能正常使用。

补充一下现在的clash和box的config

clash.txt box.txt

我本人也正在使用 Android 13 设备,是 Redmi K40S EU MIUI 14,没有发现你说的问题。

你的配置看起来没有问题。

根据你的描述一个猜测为,你的 数据网路 会分配 IPv6 地址且系统存在 IPv6 DNS 抢答导致 透明代理 中的 DNS 劫持失败,Clash 内核不能获得域名,最终域名分流失败。上述问题一个可能有效的解决方法为打开系统设置,在数据网络设置中的 APN 接入点设置中关闭 IPv6,并建议使用下面的命令彻底丢弃 IPv6 目标为 53 端口的数据 ip6tables -w 100 -I OUTPUT -p udp --dport 53 -j DROP 或许你也可以尝试 Clash.Meta 的 sniffer 功能。

请问我这里还需要补充哪些信息来让你帮忙排查?

clash 内核的 log 对分析问题有帮助,文件名应该为 /data/adb/box/clash/clash_时间戳.log

cfandora commented 1 year ago

根据大佬的提醒,我去看了一下APN设置,然后发现了原因... 不知道为什么,我的APN被改成了CMWAP,改回CMNET就好了

photo_2023-01-29_21-46-01

感谢大佬不厌其烦的帮忙排查! 不过我还是奇怪为什么tg能通过wap走代理...