firewalld

firewalld #

firewalld 是 RHEL 7/8/9 系统中默认的网络防火墙配置工具,是对 iptables/nftables 的高级封装。

firewalld 与 iptables/nftables 的关系 #

底层依赖:

  • RHEL 7:firewalld 默认使用 iptables 作为后端。
  • RHEL 8/9:逐渐过渡到 nftables(仍兼容 iptables)。

共存性:

  • 直接使用 iptables/nftables 命令会绕过 firewalld,可能导致冲突,建议统一通过 firewalld 管理。

基本用法 #

bash
# 启动服务
systemctl start firewalld

# 查看防火墙状态
firewall-cmd --state

# 重载规则
firewall-cmd --reload
firewall-cmd --complete-reload  # 会断开连接

# 列出所有区域
firewall-cmd --get-zones

# 列出当前防火墙的所有规则
firewall-cmd --list-all

# 列出当前开放的端口
firewall-cmd --zone=public --list-ports
# 开放80端口并永久生效
firewall-cmd --zone=public --permanent --add-port=80/tcp
# 关闭80端口并永久生效
firewall-cmd --zone=public --permanent --remove-port=80/tcp
# 开放http服务
firewall-cmd --zone=public --permanent --add-service=http
# 将eth0接口添加到public区域
firewall-cmd --zone=public --permanent --add-interface=eth0

配置文件 #

/etc/firewalld/zones/public.xml

xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas.</description>
  <service name="ssh"/>
  <service name="dhcpv6-client"/>
  <service name="http"/>
  <service name="https"/>
</zone>
2025年5月14日