ufw清理无效规则需先sudo ufw status numbered查编号,再sudo ufw delete [编号]精准删除,最后sudo ufw status verbose验证状态与日志,避免多防火墙共存导致策略冲突。

查看和清理无效防火墙规则,关键在于先准确识别、再精准移除,避免误删或遗漏。不同工具操作逻辑不同,但核心步骤一致:查现状 → 判无效 → 删对应 → 验证生效。
firewalld:查端口、服务与富规则
firewalld 规则分散在端口、服务、富规则(rich rule)三类中,需分别排查:
- 查已开放端口:firewall-cmd --zone=public --list-ports
- 查已启用服务:firewall-cmd --zone=public --list-services
- 查富规则(含IP白名单、条件放行等):firewall-cmd --zone=public --list-rich-rules
- 查完整配置(含源地址、端口、服务混合项):firewall-cmd --zone=public --list-all
常见无效规则包括:已下线服务仍开着(如 http 但 Web 服务未运行)、宽泛网段放行(如 0.0.0.0/0)、重复的 rich rule、或测试用临时端口长期未清理(如 8080/tcp)。
iptables:按链查、按序号删
iptables 规则按链组织,建议带行号查看,便于定位和删除:
- 查看 INPUT 链所有规则及行号:sudo iptables -L INPUT -n --line-numbers -v
- 快速过滤某端口(如 2375):sudo iptables -L INPUT -n | grep 2375
- 查 NAT 表规则(常被忽略):sudo iptables -t nat -L -n --line-numbers
删除时有两种方式:
- 按行号删(推荐用于明确位置的规则):sudo iptables -D INPUT 3(删第3条)
- 按规则内容删(需完全匹配):sudo iptables -D INPUT -p tcp --dport 6379 -j ACCEPT
⚠️ 注意:iptables 删除不自动保存,改完后需执行 sudo iptables-save > /etc/sysconfig/iptables(CentOS/RHEL)或 sudo iptables-save > /etc/iptables/rules.v4(Debian/Ubuntu)才持久化。
ufw:简洁命令一键排查
ufw 规则以编号形式列出,清理最直观:
- 查看全部规则(含编号):sudo ufw status numbered
- 删除指定编号规则(如第2条):sudo ufw delete 2
- 禁用某端口(如误开的 22 端口):sudo ufw deny 22
ufw 默认只管 INPUT 链,若发现异常连接但 ufw 规则干净,需回头检查 iptables 或 firewalld 是否并存启用——多防火墙共存易导致策略冲突。
验证清理是否到位
删完不是终点,必须验证:
- firewalld:执行 firewall-cmd --reload 后,重跑 --list-all 确认目标规则消失
- iptables:用 iptables -L -n 再扫一遍,尤其注意 FORWARD 和 nat 表
- ufw:sudo ufw status verbose 查状态与日志开关是否合理
- 通用验证:用外部机器 telnet 或 curl 测试被删端口是否真正关闭
不复杂但容易忽略











