先用firewall-cmd --get-default-zone查看默认zone,再用firewall-cmd --get-active-zones确认实际生效的zone及绑定网卡;二者不一致时,仅改默认zone不影响现有流量。

怎么查看当前默认和活跃的 zone
先确认你面对的是哪个区域,而不是直接改。很多问题其实出在没看清当前生效的 zone 是什么。firewall-cmd --get-default-zone 返回的是默认策略区域,但实际生效的可能是另一个——比如网卡被手动绑到了 work 区域。firewall-cmd --get-active-zones 才告诉你哪些 zone 正在管着哪些网卡(例如 eth0 属于 public)。这两个命令结果不一致时,改默认 zone 不一定立刻影响流量。
修改默认 zone 的正确顺序
改默认 zone 本身很简单,但漏掉 reload 就白干:firewall-cmd --set-default-zone=trusted 这条命令只改配置,不触发规则加载。必须紧接着执行 firewall-cmd --reload,否则新默认 zone 对新建连接无效,已建立的连接也不受影响。注意:这个操作不会自动把已有网卡从原 zone 移过去,只是设定了“以后新接口默认归哪”。
把网卡绑定到指定 zone 的实操要点
如果你希望某块网卡(比如 ens33)立刻走 trusted 规则,不能只改默认 zone,得显式绑定:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
firewall-cmd --permanent --zone=trusted --change-interface=ens33—— 永久绑定,重启后仍有效 -
firewall-cmd --zone=trusted --change-interface=ens33—— 仅当前运行时生效,重启 firewalld 或系统就失效 - 改完必须
firewall-cmd --reload,否则绑定不激活 - 如果网卡已属于另一个 zone,这条命令会先解除旧绑定再加新绑定,无需手动 remove
为什么改了 zone 还连不上服务
常见误区是以为切到 trusted 就万事大吉,但实际可能卡在三个地方:
- 服务本身没启动,比如
httpd处于 inactive 状态,防火墙放行也没用 - 网卡没绑定到目标 zone,
firewall-cmd --get-active-zones显示它还在public - 用了
--permanent却忘了--reload,规则压根没进内核 -
trustedzone 虽默认放行所有,但若该 zone 的 XML 文件被手动改坏(比如/usr/lib/firewalld/zones/trusted.xml缺少<rule><accept></accept></rule>),也会失效
最稳妥的验证方式:改完后立即跑 firewall-cmd --zone=trusted --list-all,看输出里有没有 target: ACCEPT 和空的 services:、ports: —— 这才是真正的 trusted 行为。










