Closed swbchangle closed 5 years ago
你好,麻烦你在路由器上运行下 iptables -m set -h
命令,贴一下结果是什么。
因为需要依赖 ipset 来实现分流,如果确实你路由器的 iptables 不支持 ipset 扩展,那就没法使用此工具了。
你好@gxfxyz 感谢回复
iptables -m set -h
set match options:
[!] --match-set name flags
'name' is the set name from to match,
'flags' are the comma separated list of
'src' and 'dst' specifications.
感觉我的iptables 支持 ipset扩展
iptables -j REDIRECT -h
REDIRECT target options:
--to-port**s** <port>[-<port>]
Port (range) to map to.
[--random]
我注意到,我路由器上需要--to-ports 而不是 --to-port,但是不管哪个都是一样的返回。去掉-m set --match-set chn dst命令可以成功,iptables -t nat -nL也能查到。
能不能告诉我 你的ipset, iptables 和 kernel 版本,谢谢
我搜到一个相关帖: http://koolshare.cn/thread-70648-1-1.html
你这种情况似乎是因为你的路由器没有默认加载 ipset 相关模块 xt_set 造成的,你可以运行 modprobe -l |grep xt_set
命令查看下加载情况,以下是我的路由器上的输出结果:
$ modprobe -l |grep xt_set
kernel/net/netfilter/xt_set.ko
如果没有输出则说明还未加载,可以运行 modprobe xt_set
命令来加载试试。
然后再执行 iptables -t nat -A PREROUTING -p tcp -m set --match-set chn dst -j REDIRECT --to-port 1080
看看还会不会报错。
如果确实是这个原因造成的,你可以先手动把 modprobe xt_set
命令添加到 /jffs/scripts/services-start
启动脚本的前部,让路由器启动时自动加载 xt_set 模块。
我之后再更新下脚本,加入自动判断和加载此模块的功能。
也放上我的路由器信息供你参考:
admin@R6300V2-7236:/tmp/home/root# modprobe -l | grep xt_ kernel/net/netfilter/xt_comment.ko kernel/net/netfilter/xt_quota.ko kernel/net/netfilter/xt_NFQUEUE.ko kernel/net/netfilter/xt_hashlimit.ko kernel/net/netfilter/xt_length.ko kernel/net/netfilter/xt_socket.ko kernel/net/netfilter/xt_geoip.ko kernel/net/netfilter/xt_set.ko kernel/net/netfilter/xt_TPROXY.ko kernel/net/netfilter/xt_condition.ko kernel/net/netfilter/xt_dscp.ko 实在不行,我要换dd-wrt了, kernel版本高
咦,看你 modprobe -l | grep xt_
的结果是已经加载了 xt_set.ko 模块了,按道理应该是支持 ipset 的,还是报 No chain/target/match by that name
的错吗?
是的,还是报错。
已经刷好了dd-wrt, 还没试 linux kernel 4.4 ipset v6.34 iptables v1.4.21
dd-wrt 没有xt_set.ko.
未能确认这个问题的根源,暂时关闭此 issue。
应该是我的梅林固件 kernel版本太低。 KernelNewbies: Linux_2_6_39
dd-wrt上安装新版ipset iptables 载入xt_set后,执行
iptables -t nat -A PREROUTING -p tcp -m set --match-set chn dst -j REDIRECT --to-port 1080
成功
执行
iptables -t nat -A PREROUTING -p tcp -m set --match-set chn dst -j REDIRECT --to-port 1080
错误:iptables: No chain/target/match by that name.
我用的是改版梅林固件 380.70_0-X7.9 路由器:netgear R6300v2 iptables:1.4.14 ipset: 6.32 kernel: 2.6.36
http://ipset.netfilter.org/iptables-extensions.man.html