Linuxfirewalld如何配置_firewalld常见场景实践

6次阅读

firewalld 的配置核心是“区域 + 服务 / 端口 + 永久性控制”,通过 zone 抽象信任等级,叠加服务模板或端口,不直接操作 iptables 链;需用 –permanent 持久化并 –reload 生效。

Linuxfirewalld 如何配置_firewalld 常见场景实践

firewalld 的配置核心在于“区域(zone)+ 服务 / 端口 + 永久性控制”,不是写规则,而是选策略。它不直接操作 iptables 链,而是通过 zone 抽象网络信任等级,再叠加服务模板或自定义端口,适合大多数服务器场景。

确认当前状态和默认区域

先看清防火墙是否运行、用的哪个区域:

  • 检查服务状态 sudo systemctl status firewalld(若未运行,用 sudo systemctl start firewalld 启动)
  • 查看当前活动区域及接口绑定 sudo firewall-cmd --get-active-zones
  • 查默认区域(多数是 public)sudo firewall-cmd --get-default-zone
  • 看该区域全部规则 sudo firewall-cmd --zone=public --list-all

开放 Web 服务(HTTP/HTTPS)

这是最常见需求,推荐用预定义服务名,比手动开端口更安全、可维护性更强:

  • 永久添加 http 和 https 服务:sudo firewall-cmd --permanent --add-service=httpsudo firewall-cmd --permanent --add-service=https
  • 立即生效(不重启服务):sudo firewall-cmd --reload
  • 验证:执行 sudo firewall-cmd --list-services 应看到 http https ssh 等(取决于当前区域)

注意:这些命令默认作用于 默认区域 ;如需指定区域(比如 internal),加 --zone=internal 参数即可。

开放自定义端口或端口范围

当没有现成服务模板(如私有 API、游戏端口、监控端口),就直接操作端口:

  • 开放单个 TCP 端口(如 8080):sudo firewall-cmd --permanent --add-port=8080/tcp
  • 开放 UDP 端口(如 DNS 查询):sudo firewall-cmd --permanent --add-port=53/udp
  • 开放连续端口范围(如 FTP 被动模式):sudo firewall-cmd --permanent --add-port=30000-31000/tcp
  • 移除某个端口:sudo firewall-cmd --permanent --remove-port=8080/tcp

所有 --permanent 操作后必须执行 sudo firewall-cmd --reload 才真正落地。

绑定网卡到特定区域(双网卡典型场景)

例如外网卡走 public(只开 SSH),内网卡走 internal(信任局域网):

  • 查网卡名:ip -br a(常见如 ens33、eth0、enp0s3)
  • 将内网卡 enp0s8 绑定到 internal 区域:sudo firewall-cmd --permanent --zone=internal --add-interface=enp0s8
  • 将外网卡 enp0s3 绑定到 public 区域:sudo firewall-cmd --permanent --zone=public --add-interface=enp0s3
  • 设置默认区域为 public(避免新接口误入高信任区):sudo firewall-cmd --set-default-zone=public
  • 重载生效:sudo firewall-cmd --reload

绑定后,firewall-cmd --get-active-zones 会显示每个接口所属 zone,各 zone 规则独立生效。

text=ZqhQzanResources