为什么 ipset 可以成功添加 ipv4 范围,但添加 ipv6 范围却失败?

为什么 ipset 可以成功添加 ipv4 范围,但添加 ipv6 范围却失败?

使用ipset清理笨重的iptable规则集之间似乎并没有什么不同IPv4IPv6

# ipset create TEST hash:net family inet
# ipset create DEMO hash:net family inet6
# iptables -A INPUT -m set --match-set TEST src -j DROP
# ip6tables -A INPUT -m set --match-set DEMO src -j DROP

然而,添加 IP 范围后,意外的仅 IPv6 范围会发生错误

# ipset add TEST 192.0.2.0-192.0.2.127
# ipset add DEMO 2001:db8::-2001:db8::ffff
ipset v6.34: Syntax error: IP address or IP/cidr must be specified: 2001:db8::-2001:db8::ffff

这是出乎意料的,因为ipset似乎能够解析这些IPv6地址:

# ipset add DEMO 2001:db8::/112
# ipset del DEMO 2001:db8::/112
# ipset add DEMO 2001:db8::ffff/112
# ipset -L DEMO | tail -2
Members:
2001:db8::/112

为什么会ipset接受fromaddr-toaddrIPv4 的范围,但认为同样的语法错误IPv6

答案1

fromaddr-toaddr语法仅支持 IPv4。使用cidr符号添加IPv6范围。

为了互联网通过在条目的 IP 地址部分指定 IPv4 地址范围或网络,可以添加或删除多个条目 -人8 ipset

相关内容