С помощью 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 принять fromaddr-toaddr
диапазонов для IPv4, но считайте то же самое синтаксической ошибкой для IPv6?
В fromaddr-toaddr
синтаксис поддерживается только для IPv4. Использовать cidr
обозначение для добавления IPv6 диапазоны.
Для инет family можно добавить или удалить несколько записей, указав диапазон или сеть адресов IPv4 в части IP-адреса записи - человек 8 ipset