ipset 安装参考文档(待整理)
ipset 官方文档
ipset 7.1版本链接
使用参考文档
简单的流程
可以用这几条命令概括使用 ipset 和 iptables 进行 IP 封禁的流程
ipset create blacklist hash:net timeout 0 # 创建名为 blacklist 的集合,关键字为 hash:net,允许设置超时时间
iptables -I INPUT -m set --match-set blacklist src -j DROP #将 blacklist 应用于 iptables 生效
ipset -exist add blacklist 4.5.6.7 # 添加成员 4.5.6.7
ipset -exist add blacklist 1.2.3.4 timeout 300 # 添加成员 1.2.3.4 且超时时间为 300 秒
ipset list vader # 查看 vader 集合的内容
注意事项
1.timeout
如果在创建集合是没有指定 timeout,那么之后添加条目也就不支持 timeout 参数,执行 add 会收到报错。想要默认条目不会过期(自动删除),又需要添加某些条目时加上 timeout 参数,可以在创建集合时指定 timeout 为 0。
ipset create luke hash:ip
ipset add luke 5.5.5.5 timeout 100
kernel error received: Unknown error -1 # 得到报错信息
2.exist
如果要重新为某个条目指定 timeout 参数,要使用 -exist 这一选项
ipset -exist add blacklist 1.2.3.4 timeout 300
即使,添加一条新的条目,也可指定 -exist
。
集合大小
hashsize, maxelem 这两个参数分别指定了创建集合时初始的 hash 大小,和最大存储的条目数量。
ipset create yoda hash:ip,port hashsize 4096 maxelem 1000000
ipset add yoda 3.4.5.6,3306
这样创建了名为 yoda 的集合,初始 hash 大小是 4096,如果满了,这个 hash 会自动扩容为之前的两倍。最大能存储的数量是 100000 个。
如果没有指定,hashsize 的默认值是 1024,maxelem 的默认值是 65536。
其他常用命令
ipset del yoda x.x.x.x # 从 yoda 集合中删除内容
ipset list yoda # 查看 yoda 集合内容
ipset list # 查看所有集合的内容
ipset flush yoda # 清空 yoda 集合
ipset flush # 清空所有集合
ipset destroy yoda # 销毁 yoda 集合
ipset destroy # 销毁所有集合
ipset save yoda # 输出 yoda 集合内容到标准输出
ipset save # 输出所有集合内容到标准输出
ipset restore # 根据输入内容恢复集合内容