CentOS 7及更高版本默认采用firewalld作为防火墙管理工具,其动态规则管理机制和区域化设计显著提升了安全运维效率。本文ZHANID工具网将系统梳理查看防火墙状态的常用命令,并结合端口管理、服务配置等核心操作进行详细说明。
一、防火墙状态检查基础命令
1. 查看防火墙服务运行状态
通过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 二 2025-09-09 10:00:00 CST; 5min ago Main PID: 1234 (firewalld) CGroup: /system.slice/firewalld.service └─1234 /usr/bin/python3 -Es /usr/sbin/firewalld --nofork --nopid
关键字段解析:
Active: active (running):表示防火墙正在运行。Loaded: enabled:表示防火墙已设置为开机自启。
2. 快速检查防火墙是否运行
使用firewall-cmd命令可获取简化状态信息:
firewall-cmd --state
输出结果为running(运行中)或not running(未运行)。
二、防火墙规则与端口管理
1. 查看当前开放的端口
firewall-cmd --zone=public --list-ports
输出示例:
80/tcp 443/tcp 22/tcp
表示当前公共区域(public)开放了HTTP(80)、HTTPS(443)和SSH(22)端口。
2. 查看所有区域规则
firewall-cmd --list-all
输出示例:
public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: ssh dhcpv6-client ports: 80/tcp 443/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
关键信息:
active:当前生效的区域。services:预定义服务(如SSH、DHCPv6客户端)。ports:手动开放的端口。
3. 端口开放与关闭操作
开放端口(永久生效):
firewall-cmd --zone=public --add-port=8080/tcp --permanent firewall-cmd --reload # 重新加载规则
关闭端口:
firewall-cmd --zone=public --remove-port=8080/tcp --permanent firewall-cmd --reload
三、防火墙区域与接口管理
1. 查看活动区域
firewall-cmd --get-active-zones
输出示例:
public interfaces: eth0 eth1
表示eth0和eth1网卡均属于public区域。
2. 查看接口所属区域
firewall-cmd --get-zone-of-interface=eth0
输出结果为接口所属区域名称(如public、trusted)。
3. 修改接口区域
firewall-cmd --zone=trusted --change-interface=eth0 --permanent firewall-cmd --reload
将eth0接口从public区域切换至trusted区域(完全信任环境)。

四、防火墙服务管理命令
1. 启动/停止/重启防火墙
systemctl start firewalld # 启动 systemctl stop firewalld # 停止 systemctl restart firewalld # 重启
2. 设置开机自启
systemctl enable firewalld # 启用开机自启 systemctl disable firewalld # 禁用开机自启
3. 验证开机自启状态
systemctl is-enabled firewalld
输出结果为enabled或disabled。
五、高级操作与故障排查
1. 查看防火墙日志
journalctl -u firewalld --no-pager -n 50 # 查看最近50条日志
2. 紧急模式(拒绝所有流量)
firewall-cmd --panic-on # 开启紧急模式 firewall-cmd --panic-off # 关闭紧急模式
3. 常见问题处理
问题:修改规则后未生效。
解决:
检查是否遗漏
--permanent参数(临时规则重启后失效)。执行
firewall-cmd --reload重新加载规则。确认修改的区域是否正确(如
public而非work)。
六、命令速查表
| 命令 | 功能说明 |
|---|---|
systemctl status firewalld | 查看防火墙服务状态 |
firewall-cmd --state | 快速检查防火墙是否运行 |
firewall-cmd --zone=public --list-ports | 查看公共区域开放端口 |
firewall-cmd --list-all | 查看所有区域规则 |
firewall-cmd --get-active-zones | 查看活动区域 |
firewall-cmd --zone=public --add-port=80/tcp --permanent | 永久开放端口 |
firewall-cmd --reload | 重新加载防火墙规则 |
systemctl enable firewalld | 设置开机自启 |
总结
CentOS 7/8的firewalld防火墙通过区域化设计和动态规则管理,为系统提供了灵活的安全防护机制。掌握上述命令后,用户可高效完成状态检查、端口管理、区域配置等核心操作。关键注意事项:
修改规则后务必执行
firewall-cmd --reload或重启服务。生产环境中谨慎使用
--panic-on紧急模式。长期开放的端口建议通过
--permanent参数持久化配置。
本文由@zhanid 原创发布。
该文章观点仅代表作者本人,不代表本站立场。本站不承担相关法律责任。
如若转载,请注明出处:https://www.zhanid.com/dnzs/5661.html




















