移除错误firewalld规则需精准匹配并永久删除后重载:先用--list-ports、--list-rich-rules、--list-all确认规则;再用--remove-port或--remove-rich-rule等命令按原参数删除;最后执行--reload生效。

移除错误的 firewalld 规则,关键在于“精准匹配”和“永久生效+重载”两个动作。临时添加的规则重启即失效,但误加的永久规则会持续影响网络访问,必须主动清理。
确认当前规则内容
先看清哪些规则实际存在,避免删错或漏删:
- 查看所有已开放端口:firewall-cmd --zone=public --list-ports
- 查看所有富规则(含IP白名单、端口+IP组合等):firewall-cmd --zone=public --list-rich-rules
- 查看完整区域配置(含服务、端口、源地址等):firewall-cmd --zone=public --list-all
按类型精准删除规则
删除命令必须与当初添加时的参数完全一致(包括 zone、protocol、IP段、端口范围等),否则会报错或无效:
- 删单个永久开放的端口:firewall-cmd --permanent --zone=public --remove-port=8080/tcp
- 删端口范围:firewall-cmd --permanent --zone=public --remove-port=9000-9010/udp
- 删富规则(如放行某IP的SSH):firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.5.100" port port="22" protocol="tcp" accept'
- 删整个IP网段白名单:firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="10.0.0.0/8" accept'
- 删某个服务(如误开的 http):firewall-cmd --permanent --remove-service=http
保存并应用变更
所有带 --permanent 的删除操作,只是修改了配置文件,并未立即生效:
- 执行重载使变更生效:firewall-cmd --reload
- 验证是否删除成功:再次运行 firewall-cmd --list-all 或对应查询命令
- 注意:不要用 systemctl restart firewalld,它会中断现有连接,--reload 更安全
补充:快速定位常见误配
以下命令可帮你发现典型错误规则:
- 查是否误放行了全网段:firewall-cmd --list-rich-rules | grep "0.0.0.0/0"
- 查是否有重复或冲突的 rich rule(比如同一IP被多次放行)
- 查是否对 public 区域开了高危端口(如 2375、6379、27017)而未限制 source











