juewuy / ShellCrash

Run sing-box/mihomo as client in shell
8.92k stars 1.48k forks source link

[Bug] 未加载 `xt_TPROXY` 模块导致 `iptables: No chain/target/match by that name.` #774

Closed abcfy2 closed 1 month ago

abcfy2 commented 1 month ago

Verify steps

Description

书接上文: #763 #758

这个问题在经过几天的排查之后,终于排查清楚了。

原因是新版本并未加载 xt_TPROXY 模块,导致iptables在添加TPROXY规则链的时候报错: iptables: No chain/target/match by that name.

stable version会加载这个模块: https://github.com/juewuy/ShellCrash/blob/0511b379eb16b32a2dfae3b86e27945731075107/scripts/start.sh#L967-L977

但是现在版本似乎移除了modprobe命令,没有加载模块?而且在设置TPROXY模式还会报错:

设备未检测到iptables-mod-tproxy模块,请尝试其他模式或者安装相关依赖!

而在 1.9.0 是没有这个问题的。通过手动修改配置文件强行指定TPROXY,然后手工加载 xt_TPROXY 模块之后,再次运行clash,问题解决:

modprobe xt_TPROXY
./start.sh start
# Working

附上 AX5400 的 TPROXY 模块名:

# modprobe -l | grep -i tproxy
kernel/net/netfilter/xt_TPROXY.ko

因为我这边只有TPROXY模式可以同时支持ipv4和ipv6,默认的redir因为没有ip6tables REDIR模块好像,不能设置ip6tables的规则,而且不支持QUIC(http3)协议。tun模式压根没法用,完全不通。所以只有TPROXY是完全work的

juewuy commented 1 month ago

@abcfy2 最新开发版已经加了

abcfy2 commented 1 month ago

多谢,原来已经定位到了啊。那我静等发布就好。谢谢啦。

juewuy commented 1 month ago

@abcfy2 你可以测试一下,我没有华硕设备,包括下载大师启动功能我也没办法测试

abcfy2 commented 1 month ago

已测,目前已经正常啦