蓝易云cdn:Linux查看防火墙状态
Linux 查看防火墙状态完整指南 🔥
Linux 系统中防火墙是服务器安全的第一道屏障。不同发行版使用的防火墙管理工具不尽相同,排查网络故障或部署服务时,第一步往往就是确认防火墙的运行状态和已放行的规则。下面按主流防火墙工具逐一讲解查看方法。
一、firewalld(CentOS 7/8/9、RHEL、Rocky Linux)🛡️
firewalld 是目前 CentOS 7 及以后版本默认的防火墙管理工具,通过 systemctl 和 firewall-cmd 两个命令配合使用。
查看运行状态:
systemctl status firewalld
输出中看到 Active: active (running) 表示防火墙正在运行,inactive (dead) 则表示已关闭。
也可以用 firewalld 自带的命令快速确认:
firewall-cmd --state
返回 running 或 not running,简洁明了 ✅。
查看当前生效的规则:
# 查看默认区域的所有规则
firewall-cmd --list-all
# 查看所有区域的规则
firewall-cmd --list-all-zones
# 只看已放行的端口
firewall-cmd --list-ports
# 只看已放行的服务
firewall-cmd --list-services
--list-all 输出的信息最全面,包含当前所属区域(zone)、放行的服务和端口、是否开启了伪装(masquerade)、端口转发规则等。日常排查问题时用这条命令就够了 💡。
常用操作速查:
# 开放 80 端口(永久生效)
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 开放 HTTP 服务
firewall-cmd --zone=public --add-service=http --permanent
# 重新加载使配置生效
firewall-cmd --reload
加了 --permanent 参数的规则写入配置文件,重启后依然有效。不加的话只对当前运行时生效,重启后丢失。修改永久规则后,必须执行 --reload 才能立即生效。
二、iptables(CentOS 6 及部分老系统)⚙️
CentOS 6 以及一些选择手动管理防火墙的系统仍在使用 iptables。它没有"启动/停止"这样的服务状态概念(在 CentOS 6 上通过 iptables 服务管理,CentOS 7+ 上 iptables 命令依然可用但只是 netfilter 的前端工具)。
CentOS 6 查看服务状态:
service iptables status
直接查看当前规则(所有系统通用):
# 查看所有链的规则(带详细包计数)
iptables -L -n -v
# 以命令格式显示(方便复制和备份)
iptables -S
# 只看 NAT 表的规则
iptables -t nat -L -n -v
参数说明:-L 列出规则,-n 以数字形式显示IP和端口(不做DNS反解,速度更快),-v 显示详细信息包括数据包计数和流量统计 📊。
如果输出中 INPUT 链的默认策略是 ACCEPT 且没有任何过滤规则,说明防火墙虽然在运行但实际上没有做任何拦截——等于形同虚设,需要引起注意。
三、ufw(Ubuntu / Debian)🐧
Ubuntu 从 8.04 版本开始引入了 ufw(Uncomplicated Firewall),顾名思义就是"简单防火墙",是 iptables 的上层封装,操作起来比直接写 iptables 规则轻松许多。
查看状态和规则:
sudo ufw status
输出 Status: active 表示已启用,Status: inactive 表示未启用。
加上 verbose 参数可以看到更详细的信息,包括默认策略:
sudo ufw status verbose
加上 numbered 参数会给每条规则编号,方便后续删除指定规则:
sudo ufw status numbered
常用操作:
# 启用防火墙
sudo ufw enable
# 放行 22 端口
sudo ufw allow 22/tcp
# 放行 HTTP 服务
sudo ufw allow http
# 删除第 3 条规则
sudo ufw delete 3
ufw 默认情况下是关闭的。首次启用前务必先放行 SSH 端口(默认22),否则远程连接会被立刻断开,导致无法登录服务器 ⚠️。
四、nftables(新一代内核防火墙框架)🆕
nftables 从 Linux 内核 3.13 开始引入,设计目标是取代 iptables。Debian 10+、RHEL 9/Rocky 9 等新版系统已经将 nftables 作为底层默认方案(firewalld 在这些系统上实际调用的后端就是 nftables)。
查看规则集:
nft list ruleset
查看指定表的规则:
nft list table inet filter
如果输出为空或提示无规则,说明当前没有加载任何 nftables 规则。
五、快速判断防火墙类型的思路 🔍
拿到一台不熟悉的 Linux 服务器,可以用以下顺序快速判断它在用哪种防火墙:
# 第一步:看系统版本
cat /etc/os-release
# 第二步:逐个检查
systemctl status firewalld # CentOS 7+/RHEL
systemctl status ufw # Ubuntu/Debian
systemctl status iptables # CentOS 6 或手动安装
nft list ruleset # 检查 nftables
哪个命令返回了 active 状态,当前系统就在使用哪种防火墙工具。同一台机器上不建议同时运行多个防火墙管理工具,容易造成规则冲突和排查困难 🛠️。
掌握以上方法后,无论面对哪个 Linux 发行版,都能快速定位防火墙状态、排查端口放行问题,保障服务器网络的安全与畅通 💪。