我尝试添加一些规则,但一直失败。
这是这样的规则:
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 模块,在我的供应商提供另一个内核后,问题就消失了。