我们可以一条一条的设置firewalld防火墙的rich rule,但是,当需要管理的ip数量过多时,一条一条的设置不但麻烦,而且查看起来也是密密麻麻,眼花缭乱。
下面是通过firewalld的ipset模块,进行批量ip的防火墙规则配置,所有命令都已通过实际运行。
如需其它firewalld配置命令,参考:
第 9 章 使用和配置 firewalld Red Hat Enterprise Linux 8 | Red Hat Customer Portal
第 5 章 使用防火墙 Red Hat Enterprise Linux 7 | Red Hat Customer Portal
// 启动防火墙
systemctl start firewalld;
// 关闭防火墙
systemctl stop firewalld;
// 重启防火墙(重新加载防火墙配置)
systemctl restart firewalld;
firewall-cmd --reload;
// 防火墙运行状态查看
firewall-cmd --state
systemctl status firewalld;
// 防火墙配置查看
firewall-cmd --list-all
// 创建ipset条目
firewall-cmd --permanent --new-ipset=icsp_ip --type=hash:ip
// 将文件中的ip数据加载进ipset
firewall-cmd --permanent --ipset=myset --add-entries-from-file=/opt/ip/all_ip.txt
// 将ipset添加进防火墙rich rule
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source ipset="myset" port port="2222" protocol="tcp" accept'
firewall-cmd --reload
firewall-cmd --list-all
// 删除防火墙rich rule
firewall-cmd --permanent --zone=public --remove-rich-rule='rule family="ipv4" source ipset="myset" port port="2222" protocol="tcp" accept'
firewall-cmd --reload
// 列举出firewalld里的ipset条目
firewall-cmd --permanent --get-ipsets
// 查看ipset条目包含的ip
firewall-cmd --permanent --info-ipset=myset
firewall-cmd --permanent --ipset=myset --get-entries
// 清除从文件中读取的ip数据
firewall-cmd --permanent --ipset=myset --remove-entries-from-file=/opt/ip/all_ip.txt
// 删除ipset条目
firewall-cmd --permanent --delete-ipset=myset