我用ipset
它来包含和匹配一组 IPv4,效果很好!我尝试对 IPv6 地址执行相同操作,但运行出现错误。
我有一个IPv6.cidr
包含 IPv6 地址和子网掩码的文件:
2A03:C2C0::/32
2A03:C6C0::/32
...
我想要阻止任何符合此列表的 IPv6。
当我运行该脚本时:
sudo ipset -N v6 hash:ip family inet6 -exist
sudo ipset -F v6
for net in `cat IPv6.cidr`
do
sudo ipset -A v6 $net
done
ipset 返回错误:
ipset v7.5: Syntax error: plain IP address must be supplied: 2A03:C2C0::/32
看来这ipset
对 IPv6 子网掩码不起作用。
还有其他支持IPv6的设置模块吗?
答案1
您使用了错误的集合类型。哈希:ip是针对“IP 主机地址”(或网络,但仅具有固定前缀长度)。您没有主机地址,您有网络,可能具有不同的前缀长度。因此,您想使用哈希:净值:
$ ipset create foo hash:net family inet6
$ ipset add foo 2A03:C2C0::/32
$ ipset test foo 2A03:C2C0::123
2a03:c2c0::123 is in set foo.