iptables 无法加载 ipset 匹配

iptables 无法加载 ipset 匹配

我尝试添加一些规则,但一直失败。

这是这样的规则:

ipset create FABEDGE-PEER-CIDR hash:net

iptables -t nat -N FABEDGE-NAT-OUTGOING
iptables -t nat -A POSTROUTING -j FABEDGE-NAT-OUTGOING
iptables -t nat -A FABEDGE-NAT-OUTGOING -s 192.168.3.0/24 -m set --match-set FABEDGE-PEER-CIDR dst -j RETURN

结果如下:

++ iptables -t nat -N FABEDGE-NAT-OUTGOING
iptables: Chain already exists.
++ iptables -t nat -A POSTROUTING -j FABEDGE-NAT-OUTGOING
++ iptables -t nat -A FABEDGE-NAT-OUTGOING -s 192.168.3.0/24 -m set --match-set 
FABEDGE-PEER-CIDR dst -j RETURN
iptables: No chain/target/match by that name.

每次这条线

iptables -t nat -A FABEDGE-NAT-OUTGOING -s 192.168.3.0/24 -m set --match-set FABEDGE-PEER-CIDR dst -j RETURN

失败并显示消息:“iptables:没有该名称的链/目标/匹配。”

我用谷歌搜索了这条消息,似乎 iptables 无法加载 ipset 匹配,我检查了文件“/proc/net/ip_tables_matches”,内容如下:

cat /proc/net/ip_tables_matches
conntrack
conntrack
conntrack
addrtype
udplite
udp
tcp
addrtype
icmp

该文件中应该至少有一个“集合”。有些文章提到 iptables 会根据需要加载 match 模块。

我使用lsmod | grep ip并发现 ip_set 模块已加载:

 lsmod | grep ip
iptable_raw             2525  0
ip_set_hash_net        33113  1
ip_set                 44480  1 ip_set_hash_net

我真的不知道该怎么办,一点线索也没有。

欢迎任何帮助,提前致谢。

我应该知道我的 iptables 是 v1.6.1,我的内核是 4.9.253-tegra,并且这个内核是定制的。

答案1

看来这个自编译内核缺少一些 IPv6 模块,在我的供应商提供另一个内核后,问题就消失了。

相关内容