firewalld 快速上手
基础操作
# 查看状态
systemctl status firewalld
firewall-cmd --state
# 启动/停止/重启
systemctl start firewalld
systemctl stop firewalld # 临时关闭
systemctl disable firewalld # 禁止开机自启
systemctl enable firewalld # 开机自启
# 重载规则(不中断连接)
firewall-cmd --reload
日常管理命令
# 查看默认区域及所有区域
firewall-cmd --get-default-zone
firewall-cmd --get-zones
# 查看当前所有规则
firewall-cmd --list-all
firewall-cmd --zone=public --list-all
# 查看开放端口
firewall-cmd --list-ports
# 查看开放服务
firewall-cmd --list-services
端口操作
# 开放端口(立即生效,重启失效)
firewall-cmd --add-port=8080/tcp
# 永久开放(需要--permanent,然后reload)
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp
firewall-cmd --reload
# 端口范围
firewall-cmd --permanent --add-port=3000-4000/tcp
服务操作
# 查看预定义服务列表
firewall-cmd --get-services
# 开放服务
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
# 移除服务
firewall-cmd --permanent --remove-service=http
区域配置
# 修改默认区域
firewall-cmd --set-default-zone=trusted
# 查看网卡所属区域
firewall-cmd --get-zone-of-interface=eth0
# 修改网卡区域
firewall-cmd --zone=internal --change-interface=eth0
高级用法
# 端口转发(将本机80转发到8080)
firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=8080
# 允许特定IP访问
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="22" protocol="tcp" accept'
# 拒绝特定IP
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.5" reject'
# 查看富规则
firewall-cmd --list-rich-rules
实用技巧
- 临时放行后自动恢复:不加
--permanent的规则重启后会消失,适合调试 - 批量操作:写脚本时记得每条加
--permanent,最后统一--reload - 备份规则:
cp /etc/firewalld/zones/public.xml /backup/ - 图形化:
firewall-config(需要安装firewall-config包)
常见问题
- 开放端口后仍不通:检查服务是否监听在0.0.0.0,
ss -tlnp | grep 端口 - reload后规则丢失:确认之前操作都加了
--permanent - docker与firewalld冲突:docker默认用iptables,建议docker服务先启动,firewalld后启动
一句话总结:临时操作不加--permanent,永久操作加--permanent然后--reload。

💻 安全运维 / Linux运维 / 渗透测试 技术支持
业务需求可联系博客作者
