首页/系统/信创系统运维速查/防火墙放行后仍不通的排查
常见问题65 条

防火墙放行后仍不通的排查

加了放行规则仍不通:确认生效区域与实际浏览的服务,核对 permanent 与 reload、规则顺序,并排查相关旁路链。

信创系统运维速查系统更新于 2026-10-13

防火墙放行后仍不通怎么排查

加了放行规则服务却依然连不上,最常见的三类原因:规则加在错误的区域或用 permanent 只写了持久配置没有重载、服务本身没有监听正确地址(例如只绑定回环地址)、以及检查范围只覆盖本机而遗漏了云安全组或上层网络设备。排查顺序应从服务端监听状态出发,再核对防火墙运行态与持久态是否一致,最后从外部复测。

基本信息

状态检查firewall-cmd --state 与 --get-active-zones
规则查看firewall-cmd --list-all 查看目标区域
运行态与持久态--permanent 只写磁盘配置,需 reload 或同时加运行态
监听核对ss -lntp 确认端口与绑定地址
外部复测从另一台机器用连接测试工具验证

典型使用场景

  • 新部署服务对外端口已放行但外部仍访问失败
  • 批量脚本加了永久规则,忘记执行重载导致不生效
  • 服务只监听回环地址,从外部连接被拒
  • 容器映射端口场景:宿主机放行但转发链路未生效
  • 云环境多层防护排查,区分系统防火墙与安全组
  • 变更后回归验证,确认放行范围与预期一致

检查与修正

检查与修正
firewall-cmd --state                     # 防火墙是否运行
firewall-cmd --get-active-zones          # 哪些区域处于活动状态
firewall-cmd --list-all                  # 目标区域当前生效的规则
firewall-cmd --permanent --list-all | head   # 持久配置内容
firewall-cmd --add-port=8080/tcp --permanent # 添加持久放行规则
firewall-cmd --reload                    # 永久规则需重载后生效
firewall-cmd --list-ports                # 重载后确认规则已在运行态
ss -lntp | grep 8080                     # 服务端监听地址与端口
nc -vz <服务器IP> 8080                    # 从外部机器复测连通性

现象与原因对照

现象常见原因处理方向
本机可连外部不通防火墙规则或安全组未放行核对区域、端口与上层策略
本机也不通服务未启动或监听地址不对检查进程与绑定地址
改完规则无变化只写持久配置未重载执行 reload 或同步加运行态
部分来源可连区域或来源限制生效核对区域绑定与来源限制规则
容器场景不通转发链或映射配置问题检查转发与端口映射配置
本机能连、外部不通,问题基本在防火墙、安全组或中间网络设备;如果本机也连不上,优先看服务是否在监听预期地址,回环地址与全网地址的区别是高频原因。
排查时把检查范围画清楚:服务进程、系统防火墙、云安全组或硬件策略、以及中间的网络设备,逐层确认比在同一层反复改规则更有效率。

易错点

  • 只加 permanent 规则不执行重载,规则写在磁盘上但运行态未生效,误判为规则无效
  • 规则加在错误的区域,实际流量走的区域没有对应放行条目
  • 只看系统防火墙不看云安全组或上层设备,排查范围不完整导致反复试错
  • 服务监听地址是回环地址,放行端口也无法从外部访问,需先修正绑定配置

数据来源与参考

  • man 1 firewall-cmd
  • firewalld 官方文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌