firewall-cmd支持实时修改防火墙规则,无需重启服务;运行时配置立即生效但重启后丢失,永久配置需--permanent加--reload才生效,二者独立管理。

可以直接用 firewall-cmd 修改正在运行的防火墙,无需重启服务,所有 runtime 操作立即生效。
区分运行时与永久配置
firewalld 有两套独立配置:运行时(runtime)和永久(permanent)。默认所有命令操作的是 runtime,改完即生效;加 --permanent 才写入磁盘配置,但不会立刻影响当前规则。
- 不加
--permanent:规则马上起作用,但系统重启或firewall-cmd --reload后会丢失 - 加
--permanent:只保存到配置文件,需执行firewall-cmd --reload才载入生效 - 临时开放 80 端口:
firewall-cmd --zone=public --add-port=80/tcp - 永久开放并同步生效:先
firewall-cmd --permanent --add-port=80/tcp,再firewall-cmd --reload
快速验证和调试当前规则
修改后建议立即检查是否按预期工作,避免误配导致服务不可达。
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- 查看当前区域全部规则:
firewall-cmd --zone=public --list-all - 确认某端口是否已开放:
firewall-cmd --zone=public --query-port=22/tcp - 列出所有已开放端口:
firewall-cmd --zone=public --list-ports - 查看活跃区域及绑定接口:
firewall-cmd --get-active-zones
常用动态操作示例
以下命令都不加 --permanent,执行后实时生效,适合运维调试、临时放行或紧急封禁。
- 临时允许 SSH:
firewall-cmd --add-service=ssh - 临时封禁某个 IP 访问所有服务:
firewall-cmd --add-rich-rule='rule family="ipv4" source address="203.0.113.45" reject' - 临时开放一段端口(如测试用):
firewall-cmd --add-port=8080-8090/tcp - 临时移除某服务:
firewall-cmd --remove-service=http
让临时规则转为永久保存
如果某次 runtime 修改效果良好,想让它重启后也保留,可用一键同步命令:
-
firewall-cmd --runtime-to-permanent:把当前所有运行时规则复制进永久配置 - 执行后建议再运行
firewall-cmd --reload确保状态一致 - 注意:该操作不可逆,若 runtime 规则有误,会一并固化,建议先
--list-all核对










