ipset が ipv4 範囲の追加には成功するのに、ipv6 範囲の追加には失敗するのはなぜですか?

ipset が ipv4 範囲の追加には成功するのに、ipv6 範囲の追加には失敗するのはなぜですか?

使用ipsetかさばったものを片付けるiptableルールセットはそれほど違いはないようですIPv4そしてIPv6:

# 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

なぜipsetIPv4の範囲は受け入れるfromaddr-toaddrが、同じことを構文エラーとみなすIPv6?

答え1

この構文はfromaddr-toaddrIPv4でのみサポートされています。cidrIPv6範囲。

のためにネットファミリーでは、エントリのIPアドレス部分にIPv4アドレスの範囲またはネットワークを指定することにより、複数のエントリを追加または削除できます。男8ipset

関連情報