一.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类型
1 | [root@sunday ~]# firewall-cmd --get-ipset-types |
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指定数量
1 | [root@sunday ~]# firewall-cmd --permanent --new-ipset=ngx_ip_block --type=hash:ip |
3.在ipset中添加ip
1 | [root@sunday ~]# firewall-cmd --permanent --ipset=ngx_ip_block --add-entry=171.8.173.138 |
4.从ipset中删除ip
1 | [root@sunday ~]# firewall-cmd --permanent --ipset=ngx_ip_block --remove-entry=171.8.173.138 |
5.Firewalld引用ipset规则
方法1. 添加到drop区域1
2[root@sunday ~]
[root@sunday ~]
方法2.使用rich-rule1
2[root@sunday ~]
[root@sunday ~]
6.列出一个set下的所有entry
1 | [root@sunday ~]# firewall-cmd --permanent --ipset=ngx_ip_block --get-entries |
7.删除一个ipset
1 | [root@sunday ~] |
8.打印一个set的内容:
1 | [root@sunday ~] |
9.判断一个ip是否存在于set中?
1 | [root@sunday ~]# firewall-cmd --permanent --ipset=ngx_ip_block --query-entry=1.1.1.1 |
10.列出所有的ipsets
1 | [root@sunday ~] |
11.打印一个set的文件路径:1
2[root@sunday ~]# firewall-cmd --permanent --path-ipset=ngx_ip_block
/etc/firewalld/ipsets/ngx_ip_block.xml
因为使用了hash类型,当ip重复时firewall-cmd会提示重复:1
2
3
4[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区域,防止自己被挡在门外
1 | [root@sunday zones] |