一.firewalld中ipset的用途:
1.用途: ipset是ip地址的集合,firewalld使用ipset可以在一条规则中处理多个ip地址,执行效果更高,对ip地址集合的管理也更方便
注意与iptables所用的ipset命令的不同,不要混合使用firewall-cmd的ipset参数与linux平台上的ipset命令,避免引起冲突,firewalld的ipset会记录到/etc/firewalld/ipsets/目录下
二. firewalld中ipset使用:
1.查看ipset类型
[root@sunday ~]# firewall-cmd --get-ipset-types
hash:ip hash:ip,mark hash:ip,port hash:ip,port,ip hash:ip,port,net hash:mac
hash:net hash:net,iface hash:net,net hash:net,port hash:net,port,net
2.新建ipset #–new-ipset=ngx_ip_block 指定新ipset的名字为:ngx_ip_block #–type=hash:ip 指定类型为 hash:ip,这种形式不允许重复而且只有一个ip #–option=family=inet 指定ipv4 #–option=maxelem=ipset 默认可以存储65536个元素,使用maxelem指定数量
[root@sunday ~]# firewall-cmd --permanent --new-ipset=ngx_ip_block --type=hash:ip
firewall-cmd --permanent --new-ipset=ngx_ip_block --type=hash:net --option=family=inet --option=hashsize=4096 --option=maxelem=100000
3.在ipset中添加ip
[root@sunday ~]# firewall-cmd --permanent --ipset=ngx_ip_block --add-entry=171.8.173.138
4.从ipset中删除ip
[root@sunday ~]# firewall-cmd --permanent --ipset=ngx_ip_block --remove-entry=171.8.173.138
5.Firewalld引用ipset规则
方法1. 添加到drop区域
[root@sunday ~]#firewall-cmd --permanent --zone=drop --add-source=ipset:ngx_ip_block
[root@sunday ~]# firewall-cmd --reload
方法2.使用rich-rule
[root@sunday ~]# firewall-cmd --permanent --zone=public --add-rich-rule 'rule family="ipv4" source ipset="ngx_ip_block" drop'
[root@sunday ~]# firewall-cmd --reload
6.列出一个set下的所有entry
[root@sunday ~]# firewall-cmd --permanent --ipset=ngx_ip_block --get-entries
171.8.173.138
7.删除一个ipset
[root@sunday ~]# firewall-cmd --permanent --delete-ipset=ngx_ip_block
8.打印一个set的内容:
[root@sunday ~]# firewall-cmd --permanent --info-ipset=ngx_ip_block
ngx_ip_block
type: hash:ip
options:
entries: 171.8.173.138
9.判断一个ip是否存在于set中?
[root@sunday ~]# firewall-cmd --permanent --ipset=ngx_ip_block --query-entry=1.1.1.1
no
[root@sunday ~]# firewall-cmd --permanent --ipset=ngx_ip_block --query-entry=171.8.173.138
yes
10.列出所有的ipsets
[root@sunday ~]# firewall-cmd --permanent --get-ipsets
ngx_ip_block
11.打印一个set的文件路径:
[root@sunday ~]# firewall-cmd --permanent --path-ipset=ngx_ip_block
/etc/firewalld/ipsets/ngx_ip_block.xml
因为使用了hash类型,当ip重复时firewall-cmd会提示重复:
[root@sunday ~]# firewall-cmd --permanent --new-ipset=ngx_ip_block --type=hash:ip
[root@sunday ~]# firewall-cmd --permanent --ipset=ngx_ip_block --add-entry=171.8.173.138
[root@sunday ~]# firewall-cmd --permanent --ipset=ngx_ip_block --add-entry=171.8.173.138
Warning: ALREADY_ENABLED: 171.8.173.138
三. 添加IP白名单
将信任ip加入到trusted区域,防止自己被挡在门外
[root@sunday zones]# firewall-cmd --permanent --zone=trusted --add-source=171.8.173.138
[root@sunday zones]# firewall-cmd --reload