firewalld是CentOS7起默认的防火墙前端工具,相比iptables更加语义华,也有更好的性能。顺便提一句,CentOS 8起,firewalld默认的后端改成nftables,iptables可以说是正式退休了。
本文介绍firewalld常用的命令。
firewalld管理
安装firewalld:yum install firewalld
查看版本:firewall-cmd --version
查看运行状态:
firewall-cmd --state # 输出running 或者 not running
# 或者用systemctl查看
systemctl status firewalld
# 输出
firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2020-03-09 21:45:32 CST; 2s ago
Docs: man:firewalld(1)
启动firewalld:systemctl start firewalld
重启firewalld:systemctl restart firewalld
停止firewalld:systemctl stop firewalld
设置开机启动:systemctl enable firewalld
禁止开机启动:systemctl disable firewalld
firewalld规则管理
查询
查看放行端口:firewall-cmd --list-ports
列出所有服务:firewall-cmd --get-services
查看放行服务:firewall-cmd --list-services
查看放行协议:firewall-cmd --list-protocols
查看放行ip:firewall-cmd --list-sources
查看富规则:firewall-cmd --list-rich-rules
更改
新增服务: firewall-cmd --add-service=服务名,例如http,https
删除服务:firewall-cmd --remove-service=服务名
新增端口:firewall-cmd --add-port=1234/tcp
删除端口:firewall-cmd --remove-port=1234/tcp
新增ip:firewall-cmd --add-source=123.123.123.123/32
删除ip:firewall-cmd --remove-source=123.123.123.123/32
添加富规则:firewall-cmd –add-rich-rule=“rule family=”ipv4” source address=”10.10.16.2” port protocol=”tcp” port=”22” accept”
删除富规则:firewall-cmd –remove-rich-rule=“rule family=”ipv4” source address=”10.10.16.2” port protocol=”tcp” port=”22” accept”
开启转发:firewall-cmd --add-masquerade
关闭转发:firewall-cmd --remove=masquerade
注意:上述更改命令临时生效,要想永久生效,需要添加 --permanent
参数,然后重新加载配置:firewall-cmd --reload