在 Linux 系统中,查看防火墙配置是运维管理的基础操作,但不同发行版使用的防火墙工具不同,命令与配置路径也完全不同,最核心的一点是:先确认系统使用哪种防火墙服务(firewalld、iptables、ufw 等),再执行对应命令,否则容易误判安全状态,本文将从主流防火墙的查看方法、配置解读、常见问题三个层面,给出可直接落地的操作方案,并结合酷番云服务器实际运维经验,帮你快速掌握防火墙配置查看与安全核查技巧。
先确认防火墙类型:三种主流工具的区别
Linux 防火墙并非只有一种,常见的有:
- firewalld:CentOS 7+、RHEL 7+、Fedora 默认使用,基于 zone(区域)管理,支持动态加载。
- iptables:传统内核级防火墙工具,老版本 CentOS 6、Ubuntu 早期版本默认使用,规则直接写入内核。
- ufw:Ubuntu 的简化前端,底层仍调用 iptables,适合初学者。
查看系统当前防火墙类型,可执行:
systemctl status firewalld systemctl status iptables systemctl status ufw
哪个服务处于 active 状态,即为当前生效的防火墙,若均未运行,说明系统未启用防火墙(或使用其他安全组机制,如云平台的安全组)。
firewalld 查看配置:最常用也最易出错
firewalld 的配置分为运行时配置和永久配置,查看时必须两者兼顾,否则修改后重启丢失。
1 查看默认区域与当前生效规则
firewall-cmd --get-default-zone # 查看默认区域 firewall-cmd --get-active-zones # 查看当前激活区域及关联接口 firewall-cmd --list-all # 查看当前区域的完整配置(端口、服务、规则)
2 查看永久配置
firewall-cmd --permanent --list-all # 永久配置
注意:--list-all 只显示运行时配置,--permanent 只显示永久配置,如果两者不一致,以永久配置为准(重启后生效),建议每次查看都同时执行两个命令,并对比差异。

3 查看具体端口或服务
firewall-cmd --query-port=80/tcp # 查看 80 端口是否放行 firewall-cmd --query-service=http # 查看 http 服务是否放行 firewall-cmd --list-ports # 列出所有放行端口 firewall-cmd --list-services # 列出所有放行服务
4 查看富规则与复杂规则
firewall-cmd --list-rich-rules # 查看富规则(如来源 IP 限制、端口转发)
经验案例(酷番云):我们处理过多次客户服务器无法访问 80 端口的问题,排查时发现客户只执行了 firewall-cmd --list-all,显示 http 服务已放行,但端口仍不通,进一步检查 firewall-cmd --list-rich-rules 发现,存在一条拒绝来自某些 IP 访问 80 端口的富规则,优先级高于放行规则。所以在酷番云运维中,我们要求所有服务器防火墙核查必须执行三条命令:--list-all、--list-rich-rules、--list-all --permanent,缺一不可。
iptables 查看配置:直接查看规则链
若系统使用 iptables,查看配置的核心命令为:
iptables -L -n -v # 列出所有链的规则,-n 不做反向解析,-v 显示流量统计 iptables -t nat -L -n # 查看 NAT 表(端口转发、SNAT/DNAT) iptables -t mangle -L -n # 查看 mangle 表(流量修改)
1 查看规则序号
iptables -L --line-numbers
序号在删除规则时非常有用,如 iptables -D INPUT 3 删除第 3 条规则。
2 查看默认策略
iptables -L | grep policy
默认策略通常是 ACCEPT 或 DROP,若 INPUT 默认策略为 DROP,则未显式放行的端口均不可访问。
注意:iptables 规则是立即生效的,但重启后丢失(除非已保存),查看保存文件:
- CentOS 6:
/etc/sysconfig/iptables - Ubuntu:
/etc/iptables/rules.v4
经验案例(酷番云):某客户在云服务器上手动配置 iptables 放行 3306 端口,但未保存规则,服务器重启后数据库无法远程连接,工单排查发现 iptables 规则已全部清空。

我们建议客户使用云平台安全组 + 系统防火墙双层次管理:安全组负责粗粒度放行(如只允许业务 IP 访问),系统防火墙负责精细控制(如限制并发、来源 IP),同时养成修改 iptables 后立即执行 service iptables save 或使用 iptables-save > /etc/sysconfig/iptables 保存的习惯。
ufw 查看配置:Ubuntu 专用
ufw 命令极简,适合快速查看:
ufw status verbose # 查看详细状态,包括默认策略和放行规则 ufw status numbered # 带序号显示,方便删除
查看配置文件:
cat /etc/default/ufw # 默认策略配置 cat /etc/ufw/user.rules # 用户自定义规则
ufw 底层仍是 iptables,所以也可以通过 iptables -L 查看实际生效规则,但 ufw 的显示更清晰。
查看防火墙日志:发现被拦截的流量
仅看规则不够,还要看实际拦截记录,不同工具日志位置不同:
- firewalld:
journalctl -u firewalld或/var/log/firewalld - iptables:需先开启日志功能,默认不记录,可使用
iptables -A INPUT -j LOG --log-prefix "IPTABLES-DROP:"添加日志规则,然后查看/var/log/messages或dmesg - ufw:
/var/log/ufw.log
查看日志能快速定位问题:例如端口不通时,若日志中有大量 DROP 记录,则确认是防火墙拦截;若无记录,则可能监听地址或安全组问题。
常见问题与专业解决方案
1 查看配置与实际效果不一致
- 原因:运行时配置与永久配置不同,或存在多条规则顺序冲突。
- 解决:对比
--list-all与--list-all --permanent,检查是否有多余规则;对于 iptables,检查规则顺序,先匹配先生效。
2 无法确认防火墙是否真正生效
-

原因:云平台安全组与系统防火墙双重控制,可能系统防火墙已放行但安全组未放行。
- 解决:先检查云平台安全组入方向规则(如酷番云控制台的安全组),再检查系统防火墙,两者必须同时放行才能访问。
3 查看配置后误改导致服务中断
- 解决:修改前备份配置,firewalld 可使用
firewall-cmd --runtime-to-permanent保存当前状态;iptables 使用iptables-save > /etc/sysconfig/iptables.bak。修改后立即测试,不要同时修改多条规则,逐步操作。
相关问答模块
为什么我执行 firewall-cmd --list-all 看到端口已放行,但外部仍然无法访问?
解答:可能有三个原因。第一,云平台安全组未放行该端口,系统防火墙放行只是本地规则,云安全组在更外层拦截。第二,服务未监听在正确地址(如只监听 127.0.0.1),用 netstat -tlnp 检查监听地址。第三,存在富规则或 iptables 规则优先级更高,如前面案例中的拒绝规则。建议:按顺序检查安全组 → 防火墙规则 → 监听地址 → 服务状态,逐层排查。
iptables 和 firewalld 可以同时使用吗?会不会冲突?
解答:不建议同时使用,两者都是操作内核 netfilter 的接口,同时启用可能导致规则混乱,firewalld 本身可以管理 iptables 规则(通过 nftables 后端),但如果你手动用 iptables 命令添加规则,firewalld 无法感知,重启后可能丢失。最佳实践:CentOS 7+ 使用 firewalld,不要手动执行 iptables 命令;若确实需要 iptables,则禁用 firewalld 并安装 iptables-services,在酷番云服务器上,我们统一使用 firewalld,并通过脚本定期备份配置,确保规则可追溯。
互动
你在查看 Linux 防火墙配置时遇到过哪些奇怪问题?是端口不通还是规则丢失?欢迎在评论区分享你的排查经历,或者提出具体的防火墙场景,我会逐一给出解决方案,如果本文对你有所帮助,请点赞转发,让更多运维伙伴少走弯路。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/728742.html

