Firewalld不支持真正绕过过滤的直通规则,其direct rules仅跳过zone层而仍经Netfilter处理,且自v1.0.0起已被弃用;应改用新建高信任zone、rich rule或接口分域等原生机制实现安全策略分层。

Firewalld 不支持传统意义上的“直通规则”(即完全绕过所有过滤逻辑),它本身的设计原则就是通过区域(zone)和服务(service)进行策略化控制,所有流量都需经由 Netfilter 框架处理。所谓“绕过过滤”,在 firewalld 语境中实际是指跳过 zone 级别的默认策略、直接插入底层规则——这正是 direct rules 的用途。
Direct Rules 是唯一接近“直通”的方式
Direct rules 允许你用 iptables 语法写规则,并由 firewalld 在运行时注入到内核的 raw 或 filter 表中,不经过 zone 的 rich rule 匹配流程。但它不是绕过 Netfilter,而是更早/更底层地介入,因此仍属于防火墙过滤范畴,只是跳过了 firewalld 的抽象层。
注意:该功能已被官方弃用,自 firewalld v1.0.0 起标记为 deprecated,未来版本将移除。生产环境应避免使用。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 启用 direct rule 需确保 firewalld 正在运行:
systemctl status firewalld - 添加一条 raw 表规则(例如放行某 IP 的所有包,不被 conntrack 跟踪):
firewall-cmd --permanent --direct --add-rule ipv4 raw PREROUTING 0 -s 192.168.10.5 -j NOTRACK - 添加一条 filter 表规则(例如直接 ACCEPT 某端口,跳过 public zone 的 DROP):
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p tcp --dport 8080 -j ACCEPT - 所有 direct rule 必须重载才生效:
firewall-cmd --reload
为什么不该用 direct rules 做“直通”
Direct rules 与 firewalld 的 zone/service 机制存在天然冲突:
- firewalld 不会感知或管理 direct 规则,无法做一致性校验
- 执行
firewall-cmd --reload时,direct rules 会被保留,但 zone 规则重载后可能产生意外交互(如重复 ACCEPT 或优先级错乱) - 无法通过
--list-all查看,排查困难;日志和富规则审计也对其失效 - 升级 firewalld 后可能突然不兼容,导致规则静默失效
真正安全的替代方案
若目标是让某些流量“不受 zone 默认策略影响”,应使用 firewalld 原生支持的策略分层机制:
-
新建高信任 zone:比如创建
trusted-internal区域,设为target=ACCEPT,再把指定接口或源 IP 绑定过去firewall-cmd --permanent --new-zone=trusted-internalfirewall-cmd --permanent --zone=trusted-internal --set-target=ACCEPTfirewall-cmd --permanent --zone=trusted-internal --add-source=10.0.0.0/8 -
用 rich rule 精准放行:在 public zone 中优先匹配白名单,再设默认 DROP,逻辑清晰且可审计
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.100" accept'firewall-cmd --permanent --zone=public --set-target=DROP - 绑定接口到不同 zone:例如 eth0 接公网用 public,docker0 接容器网络用 trusted,天然隔离策略层级
想“绕过”本质是误解了 firewalld 的设计哲学——它不提供逃逸通道,而是引导你用更结构化的方式表达意图。用 direct rules 就像拆开空调外壳手动短接压缩机,能转,但不安全也不可持续。

















