SuperAPI AI 工具集

firewalld

通用与其它

查看项目

更新于 10-15 23:48

技能介绍

用途:firewalld 是 Linux 上基于区域(zone)的防火墙管理工具,默认后端为 nftables(自 firewalld 0.6 起),旧版 iptables 仍受支持。区域定义信任级别,每个网络接口只属于一个区域,进入该接口的数据包按该区域规则评估。

主要能力:可查看状态与默认区域,增删区域内的服务与端口,编写富规则(rich rules)实现源地址限制、端口转发和日志,切换默认区域,重载防火墙,并将运行时规则转为永久规则。配置目录 /etc/firewalld/ 存放用户覆盖内容(zones、services、rich rules),/usr/lib/firewalld/ 为系统提供内容,不应编辑。常见区域由严格到宽松包括 drop、block、public、external、dmz、work、home、internal、trusted。

使用方式:安装命令为 dnf install firewalld(RHEL/Fedora 默认)或 apt install firewalld。常用命令包括 sudo firewall-cmd --state 查看运行状态、--get-default-zone 查看默认区域、--get-active-zones 查看活动区域与接口、--list-all 列出区域内全部规则、--get-services 列出可用服务名、--reload 重载。持久化标准做法是先加 --permanent 再 sudo firewall-cmd --reload;也可用 sudo firewall-cmd --runtime-to-permanent 将当前运行时配置整体转为永久。查看实际 nftables 规则可用 sudo nft list ruleset。日志用 journalctl -u firewalld 查看。

适用场景:面向互联网的服务器通常使用 public 区域作为默认,仅放行明确允许的服务,安装后默认放行 ssh 与 dhcpv6-client,其余入站被拦截,出站不受限。

限制与注意:无 --permanent 的规则在重载或重启后丢失;只有 --permanent 而未 --reload 则不生效,建议先用运行时规则测试再持久化。Docker 会直接写入 nftables 规则并先于 firewalld 区域规则评估,导致 -p 80:80 等发布端口绕过防火墙;可用 DOCKER-USER 链或绑定到 localhost 再经 nginx 代理。手动 nft 规则与 firewalld 混用不受支持且会在重载时被覆盖。接口未显式分配区域时会静默使用默认区域。富规则语法冗长,存在引号或 family 不匹配的报错风险,可先测试运行时规则。文档另附 references/ 目录,含 common-rules.md 与 docs.md。