firewalld默认区域通过firewall-cmd --get-default-zone查看,用firewall-cmd --set-default-zone=zone_name永久修改,该命令本身即持久生效,无需--permanent参数,也不需--reload。

firewalld 默认区域怎么查和改
默认区域决定新接口自动归属的策略,不能靠猜。先用 firewall-cmd --get-default-zone 确认当前值(通常是 public),再用 firewall-cmd --set-default-zone=trusted 修改——注意这不是临时生效,--permanent 不需要加,这个命令本身就是永久设置。
常见误区是以为要编辑配置文件,其实 firewalld 的默认区域由运行时状态直接控制;改完不用 reload,但得确保后续新网卡或重启后行为一致。
怎么把某个网卡(比如 eth0)指定到特定区域
接口绑定区域是按实际网络用途划分的关键操作。执行前先确认接口名:ip -br a 或 nmcli device status。然后运行:
firewall-cmd --zone=dmz --change-interface=eth0 --permanentfirewall-cmd --reload
注意:--change-interface 会把接口从原区域移出、加入新区域,不是叠加;如果该接口已属于某区域,旧规则不会自动继承,得重新加端口/服务。
验证是否成功:用 firewall-cmd --get-zone-of-interface=eth0,返回应为新区域名;再用 firewall-cmd --zone=dmz --list-all 检查该区域当前规则是否符合预期。
修改已有区域的配置(比如 public.xml)
直接改 XML 文件只在两种情况下必要:一是批量导入大量端口/服务且不想逐条执行命令;二是脚本化部署中需预置配置。路径是 /etc/firewalld/zones/public.xml(以 public 为例)。
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离
修改后必须 reload,且不能只靠 systemctl restart firewalld ——那会丢掉 runtime 规则。正确流程是:
- 编辑
/etc/firewalld/zones/public.xml - 运行
firewall-cmd --reload(不是 restart) - 用
firewall-cmd --zone=public --list-all对比前后输出,确认变更已加载
容易踩的坑:改了 /usr/lib/firewalld/zones/ 下的模板文件没用,那里是只读默认定义;用户自定义必须落在 /etc/firewalld/zones/ 下,且文件名必须与 zone 名一致(如 trusted.xml)。
区域间规则冲突时谁生效
firewalld 不允许多个区域同时作用于同一接口——一个接口只能属于一个 zone。但源 IP 可通过 --add-source 绑定到不同 zone,这时规则优先级是:富规则 > 源绑定 zone > 接口所属 zone。
举例:接口 eth0 属于 public,但你执行了 firewall-cmd --permanent --zone=trusted --add-source=10.0.0.5/32,那么来自 10.0.0.5 的包就走 trusted 区域规则,哪怕它经过 eth0 进来。
这种机制很灵活,但也容易误判——查规则时别只看接口 zone,得配合 firewall-cmd --list-sources 和 firewall-cmd --list-rich-rules 一起看。










