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 验证。

CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离
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 规则——如果你同时开了其他防火墙工具,它们仍可能拦截。










