ipset是iptables的扩展,允许你创建匹配整个地址sets(地址集合)的规则。而不像普通的iptables链是线性的存储和过滤,ip集合存储在带索引的数据结构中,这种集合比较大也可以进行高效的查找。在许多的linux发布中ipset是一个简单的安装包,可以通过linux发行版提供的yum进行安装。
创建黑名单
ipset create blacklist hash:ip timeout 259200 hashsize 4096 maxelem 1000000
查看列表
ipset list blacklist
清空列表
ipset flush blacklist //清空blacklist列表
ipset flush //清空所有列表
删除列表
ipset destroy blacklist //删除blacklist列表
ipset destroy //删除所有列表
列表导入导出
ipset save blacklist -f blacklist.txt #将规则导出为文件
ipset restore -f blacklist.txt #将规则导入ipset
向黑名单添加ip
ipset add blacklist 1.1.1.1
向黑名单添加IP段
ipset add blacklist 172.18.16.0/24
ipset add blacklist 172.18.16.55 nomatch //排除单个IP
ipset add blacklist 172.18.16.0/30 nomatch //排除一个范围
向黑名单添加带端口范围的IP
ipset add blacklist 10.10.10.10:80
ipset add blacklist 10.10.10.10,udp:53
ipset add blacklist 10.10.10.10,tcp:20-25
删除黑名单中的ip/ip段/端口
ipset del blacklist 1.1.1.1
ipset del blacklist 10.10.10.10:80
ipset del blacklist 10.10.10.10,udp:53
添加iptables规则
iptables -I INPUT -m set --match-set blacklist src -j DROP
黑名单用法
iptables -A INPUT -p tcp -m set --match-set blacklist src -m tcp --dport 80 -j DROP
白名单用法
iptables -A INPUT -p tcp -m set --match-set whitelist src -m tcp --dport 3306 -j ACCEPT
iptables 不重启更新规则
#添加规则
iptables -I INPUT 5 -p tcp -m tcp --dport 3001 -j ACCEPT
#重启生效,保存文件
vim /etc/sysconfig/iptables
#删除
iptables -D INPUT -p tcp -m tcp --dport 3001 -j ACCEPT
本文共 245 个字数,平均阅读时长 ≈ 1分钟