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>