firewalld 默认使用 public 区域,但内网调试等场景可切至 trusted 区域以放行所有入站连接;查默认区域用 firewall-cmd --get-default-zone,查活跃区域用 firewall-cmd --get-active-zones,二者可能不同;修改默认区域执行 firewall-cmd --set-default-zone=trusted(永久立即生效),绑定接口需 firewall-cmd --permanent --change-interface=eth0 --zone=trusted 并 --reload 验证。

firewalld 默认使用 public 区域,但很多场景下(比如内网调试、开发环境、可信局域网)直接切到 trusted 最省事——它不拦任何入站连接,避免反复开端口。
怎么查当前默认区域和活跃区域
先确认你改的是哪个 zone:
firewall-cmd --get-default-zone 查默认区域(重启后生效的)
firewall-cmd --get-active-zones 查当前生效的活跃区域(绑定在哪些网卡上)
注意:二者可能不同。比如默认是 public,但 eth0 被手动分配到了 trusted,那实际生效的就是后者。
修改默认区域(永久生效)
执行:
firewall-cmd --set-default-zone=trusted
这条命令仅更改默认值,对已激活的接口毫无影响。后续新接入的网卡(或重载NetworkManager)会自动继承此默认zone。
常见错误:
- 遗漏
--permanent?无需添加——--set-default-zone本身就是永久性操作; - 修改后未执行reload?不必reload,更改会立即生效;
- 修改了默认zone,但服务依旧无法连接?检查
firewall-cmd --get-active-zones,活跃zone可能仍为public,需要手动将接口划过去。
把网卡接口划到指定区域(如 trusted)
默认情况下,firewalld 依赖 NetworkManager 自动分配 zone,但经常不准。必须显式绑定:
firewall-cmd --permanent --change-interface=eth0 --zone=trusted
然后 reload:
firewall-cmd --reload
关键点:
--change-interface必须带--permanent,否则重启后失效;- 接口名(如
eth0)要和ip link show输出一致,CentOS 7 常见的是ens33或enp0s3,别硬写eth0; - 执行
--reload后,用firewall-cmd --get-active-zones验证是否已生效。
验证和回退
确认变更是否落地:
使用 firewall-cmd --zone=trusted --list-all 命令查看规则是否为空(注意,trusted 区域不应有拒绝项);
再通过 firewall-cmd --list-all 命令查看当前活跃 zone 的完整配置。
要是不小心操作导致失联了怎么办呢?别慌,按以下步骤来:
- 通过本地 console 登录后,立刻执行
firewall-cmd --set-default-zone=public命令,将默认区域切回; - 接着把接口划回去,执行
firewall-cmd --permanent --change-interface=eth0 --zone=public命令; - 最后别忘了执行
firewall-cmd --reload命令。
trusted 区域不会拦截流量,但是它并不会自动放行 iptables 或 ebtables 规则哦——也就是说,如果同时开启了其他防火墙工具,它们仍然有可能进行拦截。