防火墙规则的查看与清除
列出当前系统filter table的几条链规则:
[root@localhost ~]# iptables -L -n
列出nat表的链信息:
[root@localhost ~]# iptables -t nat -L -n
清除规则
清除本机防火墙的所有规则设定:
[root@localhost ~]# iptables -F
[root@localhost ~]# iptables -X
[root@localhost ~]# iptables –Z
上面三条指令可以清除防火墙的所有规则,但是不能清除预设的默认规则(policy)
注释:
防火墙规则查看与清除(精讲版)
一、规则查看(你的命令是对的)
# 1. 查看filter表(默认)
iptables -L -n
iptables -L -n -v # -v 显示更详细(流量、包量)
iptables -L -n --line-numbers # 显示行号(删规则用)
# 2. 查看nat表
iptables -t nat -L -n
iptables -t nat -L -n -v --line-numbers
# 3. 查看mangle表
iptables -t mangle -L -n
# 4. 查看raw表
iptables -t raw -L -n
# 5. 查看所有表所有规则
iptables-save # 真正的完整导出
✅ 你的命令完全正确,生产天天用
二、规则清除(三件套详解)
# 1. -F: 清空规则(flush)
iptables -F # 清空filter表所有链的规则
iptables -t nat -F # 清空nat表
# 2. -X: 删除自定义链(delete custom chain)
iptables -X # 删除filter表所有空的自定义链
iptables -t nat -X # 删除nat表自定义链
# 3. -Z: 计数器归零(zero)
iptables -Z # 把包计数、流量计数清零
⚠️ 你特别注明的关键点:
这三条清不掉默认策略(policy)!
# 默认策略还在!
iptables -L -n | grep policy
# Chain INPUT (policy DROP) ← 还是DROP!
# Chain FORWARD (policy DROP)
# Chain OUTPUT (policy ACCEPT)
三、完整清除+重置(生产慎用!)
#!/bin/bash
# 完全重置防火墙(救命用)
# 1. 清空所有规则
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -t raw -F
# 2. 删除自定义链
iptables -X
iptables -t nat -X
iptables -t mangle -X
iptables -t raw -X
# 3. 计数器归零
iptables -Z
iptables -t nat -Z
iptables -t mangle -Z
iptables -t raw -Z
# 4. ⚠️⚠️ 关键步骤:重置默认策略为ACCEPT!!!
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
echo "✅ 防火墙已完全重置为允许所有"
⚠️ 远程执行必加:
# 别把自己锁外面!
iptables -P INPUT ACCEPT && iptables -F
四、删除单条规则(更常用)
# 方法1:按行号删(推荐)
iptables -L -n --line-numbers
# Chain INPUT (policy DROP)
# num target prot opt source destination
# 1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
# 2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
iptables -D INPUT 2 # 删掉第2条(80端口)
# 方法2:按规则内容删
iptables -D INPUT -p tcp --dport 22 -j ACCEPT
五、实战场景对比
| 操作 | 命令 | 效果 | 是否删policy |
|---|---|---|---|
| 清空规则 | iptables -F | 规则没了,策略还在 | ❌ 否 |
| 删自定义链 | iptables -X | 空的自定义链没了 | ❌ 否 |
| 重置策略 | iptables -P INPUT ACCEPT | 默认允许 | ✅ 是 |
| 完全重置 | 上面脚本 | 干干净净 | ✅ 是 |
| 重启iptables | systemctl restart iptables | 加载配置文件 | 取决于配置 |
六、误操作自救(你可能会遇到)
场景1:-F后连不上(策略是DROP)
# 症状:规则没了,但policy DROP,新连接进不来
# 你已经连着的SSH不会断,但新SSH进不来
# 自救:从当前连接立即加规则
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
场景2:不知道自己policy是DROP还是ACCEPT
# 查看
iptables -L -n | grep policy
# 稳妥做法:先加允许,再改策略
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -P INPUT DROP # 安全了
七、一句话总结
-L 查看,-F 清规则,-X 删自定,-Z 清零
⚠️ policy 要单改:-P INPUT ACCEPT
远程操作先开22,再DROP,再-F,顺序错就失联!
iptables的执行流程

发表回复