在Linux系统中,防火墙是保障服务器安全的重要屏障,但有时在特定场景下(如调试网络服务、搭建测试环境等)需要临时关闭防火墙,本文将详细介绍如何在不同Linux发行版中查看防火墙状态,包括使用命令行工具、检查服务状态以及验证防火墙规则,帮助用户准确掌握防火墙的运行状态。

使用systemctl命令检查防火墙服务状态
对于基于systemd的现代Linux发行版(如CentOS 7+、Ubuntu 16.04+、Debian 8+等),防火墙通常以系统服务的形式运行,通过systemctl命令可以快速查看服务的启用和运行状态。
以CentOS/RHEL系统为例,其默认防火墙为firewalld,执行以下命令可查看服务状态:
systemctl status firewalld
若返回结果中包含”Active: active (running)”,则表示防火墙已开启;若显示”Active: inactive (dead)”,则说明防火墙已关闭,对于Ubuntu/Debian系统,默认防火墙为ufw,可通过以下命令检查:
systemctl status ufw
同样,”active (running)”表示防火墙运行中,”inactive”则表示已关闭,若需查看服务是否设置为开机自启,可添加--all参数,例如systemctl status firewalld --all,会显示”Loaded”字样的状态信息,如”enabled”表示开机自启,”disabled”表示不自启。
通过防火墙自身命令行工具查询状态
不同Linux发行版使用的防火墙工具不同,直接调用其命令行工具可获取更详细的状态信息。
firewalld(CentOS/RHEL/Fedora)
firewalld是动态防火墙管理工具,支持区域(zone)和运行时配置,执行以下命令查看防火墙总体状态:
firewall-cmd --state
若返回”running”,表示防火墙开启;若返回”not running”,则表示已关闭,可通过以下命令查看当前活动的区域及规则数量:
firewall-cmd --get-active-zones firewall-cmd --list-all
前者显示当前生效的网络区域(如public、work等),后者展示区域内允许的服务、端口、端口转发等详细规则。
ufw(Ubuntu/Debian)
ufw(Uncomplicated Firewall)是Ubuntu/Debian系统的简化防火墙工具,通过以下命令查看状态:

ufw status
返回结果可能为”Status: active”(防火墙开启)、”Status: inactive”(防火墙关闭),或”Status: disabled”(防火墙被禁用),若需查看详细规则,可执行ufw status verbose,会显示规则编号、动作(allow/deny)、协议、源地址、目标端口等信息。
iptables(适用于传统Linux发行版)
虽然较新的系统已推荐使用firewalld或ufw,但部分老系统(如CentOS 6、Debian 7)仍使用iptables,可通过以下命令检查iptables规则链状态:
iptables -L -n -v
若返回的链(如INPUT、OUTPUT、FORWARD)中数据包和字节数均为0,且无任何规则,可能表示防火墙未生效;但需注意,即使无规则,若链的默认策略为DROP,则防火墙仍处于开启状态,更准确的方法是检查默认策略:
iptables -L | grep "Chain INPUT"
若末尾显示”(policy ACCEPT)”,则默认允许所有数据包,防火墙相当于关闭;若显示”(policy DROP)”或”(policy REJECT)”,则表示防火墙开启。
检查网络接口与端口验证防火墙状态
除了直接查询防火墙工具,还可通过测试网络连通性间接验证防火墙是否关闭,若防火墙开启且未放行特定端口,外部或本地访问该端口会被拒绝。
使用telnet或nc测试端口
以测试80端口为例,执行以下命令:
telnet localhost 80
或使用netcat(nc):
nc -zv localhost 80
若连接成功(显示”Connected to localhost”或”succeeded”),说明防火墙未阻止该端口;若连接失败(显示”Connection refused”或”failed”),需结合防火墙规则判断是否为防火墙拦截。
使用ss或netstat检查监听状态
若防火墙关闭,服务应能正常监听指定端口,可通过以下命令查看端口监听情况:

ss -tulnp | grep 80
或使用netstat:
netstat -tulnp | grep 80
若返回结果中包含”LISTEN”状态,则服务正常监听,结合端口测试可进一步确认防火墙是否影响网络访问。
查看系统日志确认防火墙操作
若防火墙曾被手动操作,系统日志中会记录相关操作痕迹,可通过日志查询确认历史状态变更,查看firewalld日志:
journalctl -u firewalld --since "2023-10-01" --until "2023-10-31"
或查看ufw日志:
tail -f /var/log/ufw.log
日志中包含”allow”、”deny”、”stop”、”start”等关键字,可帮助判断防火墙的开启、关闭及规则变更时间。
不同场景下的注意事项
- 生产环境谨慎操作:在服务器上关闭防火墙可能带来安全风险,若需临时关闭,建议设置超时自动重启或仅关闭特定规则而非整体防火墙。
- 容器化环境:若使用Docker或Kubernetes,需同时检查宿主机防火墙及容器网络策略,例如Docker的默认iptables规则可能影响网络访问。
- 云服务器:阿里云、腾讯云等云平台提供安全组功能,需同时检查系统防火墙和安全组规则,两者共同决定网络访问控制。
通过以上方法,用户可全面、准确地查看Linux防火墙的关闭状态,在实际操作中,建议结合多种方式验证,避免因单一命令的误判导致安全风险或网络故障。



















