概念

firewalld是iptables的前端控制器,用于实现持久的网络流量控制。
firewalld使用区域和服务,而不是链式规则,由于是动态管理规则集,允许更新规则但不破坏现有链接。

firewalld拥有以下级别的区域,默认是public:
drop 丢弃所有进入的包
block 拒绝所有外部发起的连接,允许内部发起的连接
public 允许指定的连接进入
external 一般用于路由转发
dmz 允许受限制的连接进入
work 允许信任的计算机被限制的进入连接
home 家庭网络,仅仅接收经过选择的连接
internal 内部网络,仅仅接收经过选择的连接
trusted 信任所有连接

命令

日常启动/停止/永久启动|关闭命令

systemctl start firewalld
systemctl stop firewalld
systemctl enable firewalld
systemctl disable firewalld

检查服务状态

firewall-cmd --state
systemctl status firewalld

重新加载配置

firewall-cmd --reload

重新加载配置并重启服务

firewall-cmd --complete-reload

永久保存规则

firewall-cmd 规则 --permanent
不加--permanent参数时reload会清除当前新增规则

寻找默认区域

firewall-cmd --get-default-zone

修改默认区域

firewall-cmd --set-default-zone=internal

查看网络接口使用区域

firewall-cmd --get-active-zones

查看区域配置

firewall-cmd --zone=区域 --list-all

查看所有区域配置

firewall-cmd --list-all-zones

查看默认可用服务

firewall-cmd --get-services

启用/禁用服务

firewall-cmd --zone=区域 <--add-service|--remove-service>=服务名

查看开放端口/服务

firewall-cmd --zone=区域 <--list-ports|--list-services>

允许/拒绝端口/协议

firewall-cmd --zone=区域 <--add-port|--remove-port>=<端口|端口1-端口2>/协议

增加/修改/删除区域中的网卡

firewall-cmd --zone=区域 <--add-interface|--change-interface|--remove-interface>=网卡

端口转发

fierwall-cmd --zone=public--add-forward-port=port=80:proto=tcp:toport=12345
//本地转发80端口数据到12345端口
firewall-cmd --zone=public --add-masquerade
firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.1
//80端口数据转发到192.168.1.1:8080

其他实例

firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address=192.168.1.1 accept'
//允许来自192.168.1.1的所有IPV4流量
firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address=192.168.1.1 forward-port port=80 protocol=tcp to-port=6532'
//允许来自192.168.1.1到80端口的IPV4de1TCP流量,并转发到6532端口