0

0

firewalld rich rule 添加后不生效或被其他 zone 覆盖的优先级调试

冰川箭仙

冰川箭仙

发布时间:2026-01-22 20:07:27

|

750人浏览过

|

来源于php中文网

原创

Firewalld rich rule 是否生效取决于流量是否进入对应 zone 及规则在 zone 内的匹配顺序;需确认接口/源绑定、zone 优先级、规则添加顺序及 reload 状态。

firewalld rich rule 添加后不生效或被其他 zone 覆盖的优先级调试

Firewalld 的 rich rule 生效问题,核心在于规则的匹配顺序和 zone 的优先级逻辑。rich rule 本身不决定优先级,而是依赖它所在的 zone 以及该 zone 的接口/源绑定关系;如果规则没生效,大概率是流量根本没走到这个 zone,或者被更高优先级的 zone 拦截了。

确认流量实际进入的是你配置 rich rule 的 zone

firewalld 按照“接口 > 源地址 > 默认 zone”的顺序匹配 zone,不是按规则内容排序。例如:你给 public zone 加了 rich rule,但网卡 eth0 实际绑定在 trusted zone,那所有从 eth0 进来的包都走 trusted,public 的规则完全不参与处理。

  • 运行 firewall-cmd --get-active-zones 查看当前各 zone 绑定的接口和源
  • firewall-cmd --zone=xxx --list-all 确认目标 zone 确实包含你添加的 rich rule(注意:--permanent 添加后需 reload 才生效)
  • 检查接口归属:firewall-cmd --get-zone-of-interface=eth0

rich rule 的匹配顺序取决于所在 zone 的规则列表顺序

同一 zone 内,rich rule 按添加顺序从上到下匹配,**先匹配上的规则立即执行动作(accept/drop),不再继续匹配后续规则**。但要注意:rich rule 是插在该 zone 的“自定义规则”区,排在默认服务/端口规则之后、masquerade/forward-port 等高级规则之前。

多墨智能
多墨智能

多墨智能 - AI 驱动的创意工作流写作工具

下载
  • 查看完整规则链:firewall-cmd --zone=xxx --list-rich-rules(注意顺序)
  • 若想让某条 rich rule 优先,可先 --remove-rich-rule 清空,再按期望顺序重新添加
  • 避免写冲突规则,比如前面 accept 了 8080,后面又 drop 8080 —— 后者永远不会触发

检查是否被 default zone 或 system-configured zone 覆盖

未显式绑定接口或源的流量,会落入 default zone(通常是 public)。如果你在 custom zone(如 myzone)里加了 rich rule,但忘了把接口或源分配过去,流量就进了 default zone,你的规则自然不生效。

  • 查 default zone:firewall-cmd --get-default-zone
  • 临时将接口切到目标 zone 测试:firewall-cmd --zone=xxx --add-interface=eth0
  • 永久设置(需 --permanent + reload):firewall-cmd --permanent --zone=xxx --add-interface=eth0

调试技巧:用 --query-rich-rule 快速验证 + 日志辅助

光看 list 不够,要确认规则是否真正加载进内核链。firewalld 基于 nftables,可用底层命令交叉验证。

  • 查某条规则是否存在(返回 0 表示存在):firewall-cmd --query-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="22" protocol="tcp" accept'
  • 开启 debug 日志:firewall-cmd --set-log-denied=all,然后查 /var/log/firewalld 看拒绝记录对应哪个 zone
  • 直查 nft 链:nft list chain inet firewalld filter_IN_public(替换为你的 zone 名),确认 rich rule 对应的 handle 是否出现
不复杂但容易忽略:reload 后记得检查 active zones 和 rule 列表,别只信 permanent 配置。

相关专题

更多
硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1050

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

86

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

457

2025.12.29

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

11

2026.01.19

go中interface用法
go中interface用法

本专题整合了go语言中int相关内容,阅读专题下面的文章了解更多详细内容。

76

2025.09.10

default gateway怎么配置
default gateway怎么配置

配置default gateway的步骤:1、了解网络环境;2、获取路由器IP地址;3、登录路由器管理界面;4、找到并配置WAN口设置;5、配置默认网关;6、保存设置并退出;7、检查网络连接是否正常。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

220

2023.12.07

Golang 性能分析与pprof调优实战
Golang 性能分析与pprof调优实战

本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。

9

2026.01.22

html编辑相关教程合集
html编辑相关教程合集

本专题整合了html编辑相关教程合集,阅读专题下面的文章了解更多详细内容。

53

2026.01.21

三角洲入口地址合集
三角洲入口地址合集

本专题整合了三角洲入口地址合集,阅读专题下面的文章了解更多详细内容。

28

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Node.js 教程
Node.js 教程

共57课时 | 9.1万人学习

CSS3 教程
CSS3 教程

共18课时 | 4.8万人学习

Vue 教程
Vue 教程

共42课时 | 6.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号