web-dev-qa-db-ja.com

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

ipsetがIPv4のfromaddr-toaddr範囲を受け入れるのに、同じことをIPv6の構文エラーと見なすのはなぜですか?

1
anx

fromaddr-toaddr構文はIPv4でのみサポートされます。 cidr表記を使用して、IPv6範囲を追加します。

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

1
anx