
修改 firewalld 默认安全区域策略,核心是调整系统默认 zone,并确保配置持久生效。这不是改几条端口规则的事,而是切换整套信任模型——接口没明确绑定 zone 时,就自动归入这个默认 zone,所有策略都从这里继承。
确认当前默认 zone 和活跃状态
先看清现状,避免覆盖已有配置:
- 查当前默认 zone:firewall-cmd --get-default-zone
- 看哪些网卡已绑定到哪些 zone:firewall-cmd --get-active-zones
- 检查该 zone 当前实际规则:firewall-cmd --zone=当前默认名 --list-all
选择并设置新默认 zone
根据网络环境选对 zone 比手动开闭端口更重要:
- public:适合暴露在公网的服务器,只默认放行 ssh、dhcpv6-client
- internal 或 home:内网管理或可信局域网,支持 samba、mdns、ssh 等
- trusted:仅用于绝对隔离的内部网络(如 Docker bridge、管理 VLAN),全通
- drop 或 block:高安全要求场景,前者静默丢包,后者返回拒绝响应
设为 internal 并永久保存:firewall-cmd --set-default-zone=internal --permanent
让配置真正生效
firewalld 区分临时与永久配置,生产环境必须走永久路径:
- 永久设置后,必须重载才能应用:firewall-cmd --reload
- 重载不影响现有连接,但新连接按新 zone 规则处理
- 验证是否生效:再次运行 firewall-cmd --get-default-zone,并检查新接入网卡是否自动归属该 zone
补充:已有接口需单独重新绑定
修改默认 zone 不会自动迁移已绑定的网卡。例如原 ens33 在 public,现在默认改为 internal,ens33 仍留在 public:
- 临时迁移(重启失效):firewall-cmd --zone=internal --change-interface=ens33
- 永久迁移:firewall-cmd --permanent --zone=internal --add-interface=ens33,再 reload











