為什麼 ipset 增加 ipv4 範圍成功,但加入 ipv6 範圍失敗?

為什麼 ipset 增加 ipv4 範圍成功,但加入 ipv6 範圍失敗?

使用IP集清理笨重的ip表規則集之間似乎沒有那麼不同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

這是出乎意料的,因為IP集似乎能夠解析這些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

為什麼會IP集接受fromaddr-toaddrIPv4 的範圍,但將同樣的事情視為語法錯誤IPv6

答案1

fromaddr-toaddr僅 IPv4 支援該語法。使用cidr符號添加IPv6範圍。

為了內網family one 可以透過在條目的 IP 位址部分指定 IPv4 位址範圍或網路來新增或刪除多個條目 -男人 8 ipset

相關內容