最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
防火墙配置如何使用 Firewalld 管理区域与开放指定端口
时间:2026-08-26 08:28:48 编辑:袖梨 来源:一聚教程网
Firewalld规则生效需明确区域绑定与永久配置:先查网卡所属区域,再用--permanent加服务/端口并执行--reload;临时操作重启后失效,仅--list-all等命令可验证实际生效规则。
Firewalld 管理区域和开放端口,核心是搞清“区域决定策略范围,服务/端口决定放行内容”,并且必须区分临时配置与永久生效——漏掉 --permanent 或忘记 firewall-cmd --reload,规则就只是“看起来开了”。
先看清当前网络归属哪个区域
firewalld 按网卡(接口)应用规则,不是全局统一设置。得先知道你的网卡绑在哪个 zone 上:
- 查当前激活的区域和对应网卡:
firewall-cmd --get-active-zones - 查默认区域(新插上的网卡自动归入这里):
firewall-cmd --get-default-zone - 查某块网卡(比如 eth0)属于哪个 zone:
firewall-cmd --get-zone-of-interface=eth0
如果返回为空,说明这块网卡还没绑定到任何区域,后面开的端口很可能不生效。
按需调整网卡所属区域
区域切换分临时和永久两种,用途完全不同:
- 临时切 zone(重启 firewalld 或系统后还原):
firewall-cmd --zone=home --change-interface=eth0 - 永久绑定(写入配置文件):
firewall-cmd --permanent --zone=dmz --add-interface=eth0 - 同时设为默认区域:
firewall-cmd --permanent --set-default-zone=dmz
⚠️ 所有带 --permanent 的命令,都必须执行 firewall-cmd --reload 才真正落地。
开放端口优先用 service,再考虑 port
firewalld 内置了 http、ssh、dns 等 service 定义,比直接开 TCP/UDP 端口更安全、更规范:
- 永久开放 Web 服务(自动处理 80/tcp + 443/tcp):
firewall-cmd --permanent --add-service=http和--add-service=https - 永久开放 MySQL(3306/tcp):
firewall-cmd --permanent --add-port=3306/tcp - 开放 DNS(含 UDP/TCP 53):
firewall-cmd --permanent --add-service=dns - 指定区域开放(如只在 public 区放 SSH):
firewall-cmd --permanent --zone=public --add-service=ssh
验证规则是否真生效
别靠猜,用命令直接看结果:
- 查默认区域全部规则(含服务、端口、富规则):
firewall-cmd --list-all - 查指定 zone(如 trusted)的完整配置:
firewall-cmd --zone=trusted --list-all - 单独看已开放的服务:
firewall-cmd --list-services - 单独看已开放的端口:
firewall-cmd --list-ports
如果刚加的 service 或 port 不在列表里,八成是没加 --permanent,或者加了但没 --reload。