在Rocky Linux 9中,防火墙管理主要基于firewalld
服务,底层使用nftables
实现。以下为实践中的操作步骤及经验总结:
一、查看防火墙规则
- 检查服务状态:
systemctl status firewalld # 确认firewalld是否运行 firewall-cmd --state # 显示当前防火墙状态
- 查看规则详情:
firewall-cmd --list-all # 显示默认区域(如public)的完整配置 firewall-cmd --zone=public --list-all # 指定区域查看规则 firewall-cmd --list-rich-rules # 查看复杂规则(如IP/端口限制)
二、修改防火墙规则
- 基础操作:
- 开放HTTP服务:
firewall-cmd --add-service=http --permanent # --permanent保存配置 firewall-cmd --reload # 重新加载生效
- 直接开放端口:
firewall-cmd --add-port=8080/tcp --permanent
- 开放HTTP服务:
- 高级配置(如端口转发):
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
三、实践经验与挑战
- 配置生效问题:
- 未使用
--permanent
参数会导致重启后规则丢失,需搭配firewall-cmd --reload
。 - 规则冲突时,使用
--remove-service
或--remove-port
清理旧配置。
- 未使用
- 区域管理陷阱:
- 默认区域可能非
public
,需通过firewall-cmd --get-default-zone
确认。 - 多网卡场景需为不同接口绑定独立区域(
--zone=... --change-interface=ethX
)。
- 默认区域可能非
- 复杂规则调试:
- 富规则(Rich Rules)语法易错,建议分阶段测试,例如先放行IP再限制端口。
- 使用
nft list ruleset
直接查看nftables底层规则,辅助排查firewalld转换错误。
- 与其他服务冲突:
- Docker等容器工具可能绕过firewalld,需配置
firewalld
信任Docker网桥或改用docker zone
。
- Docker等容器工具可能绕过firewalld,需配置
四、备份与恢复
- 备份配置:
cp -r /etc/firewalld/ ~/firewalld_backup
- 紧急回滚:
systemctl restart firewalld
恢复最后一次加载的配置。
通过上述方法,可高效管理Rocky Linux 9防火墙,但需注意生产环境中充分测试规则变更,避免网络中断。