juewuy / ShellCrash

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

[Bug] 关于nft_tproxy内核模块报错的问题。 #644

Closed sunshe35 closed 4 months ago

sunshe35 commented 5 months ago

Verify steps

Description

shellclash版本:1.9.1beta8
问题现状: 关于“Tproxy模式”,iptables可以使用,但是切换到nftables就报错,报错内容为: 设备未检测到nft_tproxy内核模块,请尝试其他模式或者安装相关依赖!

硬件相关信息:

root@shellClash:/# lsmod | grep nft_
nft_redir              12288  3
nft_reject_inet        12288  1
nf_reject_ipv6         24576  2 nft_reject_inet,ip6t_REJECT
nft_reject             12288  1 nft_reject_inet
nft_nat                12288  1
nf_reject_ipv4         16384  2 nft_reject_inet,ipt_REJECT
nft_chain_nat          12288  29
nf_nat                 61440  7 nft_nat,xt_nat,nft_redir,nft_chain_nat,iptable_nat,xt_MASQUERADE,xt_REDIRECT
nf_conntrack          196608  8 xt_conntrack,nf_nat,nft_nat,xt_nat,nft_redir,nf_conntrack_netlink,xt_MASQUERADE,xt_REDIRECT
nft_compat             20480  194
nf_tables             348160  1472 nft_compat,nft_nat,nft_reject_inet,nft_redir,nft_chain_nat,nft_reject
nfnetlink              20480  11 nft_compat,nf_conntrack_netlink,nf_tables,ip_set,nfnetlink_log
x_tables               61440  24 ebtables,ip6table_filter,xt_conntrack,ip6table_raw,iptable_filter,nft_compat,xt_multiport,xt_tcpudp,xt_addrtype,xt_nat,xt_comment,xt_set,ip6_tables,xt_TPROXY,ipt_REJECT,iptable_raw,ip_tables,iptable_nat,xt_limit,xt_MASQUERADE,ip6t_REJECT,iptable_mangle,xt_REDIRECT,xt_mark

系统有xt_tproxy模块,未找到nft_tproxy模块。

root@shellClash:/# lsmod | grep tproxy
nf_tproxy_ipv6         16384  1 xt_TPROXY
nf_tproxy_ipv4         16384  1 xt_TPROXY

nfttables的 snat以及dnat可以正常使用。

系统环境是pve的lxc,debian12.

root@shellClash:/# uname -a
Linux shellClash 6.8.4-3-pve #1 SMP PREEMPT_DYNAMIC PMX 6.8.4-3 (2024-05-02T11:55Z) x86_64 GNU/Linux

根据 https://github.com/juewuy/ShellCrash/issues/595
系统已经包含xt_tproxy模块,iptables能正常运行tproxy模式。但是切换到nftables报错,不能运行tproxy模式。
这个是nftables的误报吗?

juewuy commented 5 months ago

@sunshe35 没发现问题,缺少nft_tproxy模块就是用不了nftables的tproxy转发

sunshe35 commented 5 months ago

@sunshe35 没发现问题,缺少nft_tproxy模块就是用不了nftables的tproxy转发

好的,我看了下确实没有nft_tproxy模块,这应该是pve内核缺陷。 我想问下xt_tproxy不行吗?之前你在帖子 https://github.com/juewuy/ShellCrash/issues/595 中说 编译了xt_tproxy或者nft_tproxy模块 ,我理解就是xt_tproxy也可以。
就是想大概学习一下这个事情,感谢。

juewuy commented 5 months ago

@sunshe35 xt是内核转发,nft-tproxy是与xt_tproxy通信,缺一不可

think2011 commented 5 months ago

我用的 Immortalwrt,首次安装进来设置的是 clash内核+tproxy,然后似乎当我切换了Redir模式后,再切换回 tproxy 就出现了 “设备未检测到nft_tproxy内核模块,请尝试其他模式或者安装相关依赖!” 的报错,所以我不得不重新安装


后面再验证了下, lsmod | grep nft_tproxy 确实没有 nft_tproxy模块,奇怪的是之前确实选中了 tproxy 选项

juewuy commented 5 months ago

@think2011 提示了就是没有,用opkg自行安装