用 iptables
来清空防火墙规则并放开所有流量限制,用于 Linux 系统的网络防火墙配置。以下是对这条命令的详细解释和逐段解析:
🔧 命令:
sudo iptables -P INPUT ACCEPT && sudo iptables -P FORWARD ACCEPT && sudo iptables -P OUTPUT ACCEPT && sudo iptables -F
🧩 说明:
sudo iptables -P INPUT ACCEPT
- 设置默认策略(Policy)为
ACCEPT
,对所有“进入本机的流量”默认放行。
- 比如你访问网站、远程登录(SSH)、接收文件等都属于
INPUT
。
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -F
✅ 总体效果
⚠️ 注意事项
这是危险操作,会关闭所有防火墙保护。
若你的系统暴露在公网,容易遭受攻击(如暴力破解、端口扫描、DDoS)。
建议配合 iptables-save
和 iptables-restore
做好备份:
sudo iptables-save > /root/iptables.bak
建议操作流程
1. 保存当前规则(备份)
在放行之前,建议先备份当前的 iptables 配置:
sudo iptables-save > /root/iptables-backup-$(date +%F).rules
2. 恢复默认拒绝策略 + 常用端口放行
如果你想恢复最基本的防火墙策略(拦截一切,只开放常用端口),可以使用如下命令:
# 设置默认策略为拒绝
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
# 保留本地回环
sudo iptables -A INPUT -i lo -j ACCEPT
# 接受已建立连接的返回包
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# 放行 SSH 端口(建议用甲骨文控制台绑定密钥登录)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 可选:放行 HTTP/HTTPS(如果你部署了网站)
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
3. 保存防火墙配置(重启后生效)
根据你使用的系统类型选择保存方式:
🔐 建议补充措施
🧰 一键 iptables 管理脚本(适配甲骨文 VPS)
#!/bin/bash
echo "正在备份当前 iptables 规则..."
sudo iptables-save > /root/iptables-backup-$(date +%F-%H%M).rules
echo "开始放开所有防火墙规则(临时放行)..."
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -F
sleep 2
echo "正在恢复安全策略(默认拒绝,允许常用端口)..."
# 默认策略:拒绝
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
# 放行本地回环
sudo iptables -A INPUT -i lo -j ACCEPT
# 放行已建立连接的响应包
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# 放行 SSH(22端口)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 可选:放行网站端口(如有网页服务)
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 可选:放行 ping(ICMP)
sudo iptables -A INPUT -p icmp -j ACCEPT
echo "正在保存防火墙配置..."
# 根据系统保存规则(Debian/Ubuntu)
if command -v netfilter-persistent >/dev/null; then
sudo netfilter-persistent save
elif command -v service >/dev/null; then
sudo service iptables save
else
echo "未检测到防火墙规则保存工具,请手动保存!"
fi
echo "防火墙规则已恢复并保存。建议同时设置甲骨文控制台防火墙安全组。"
✅ 使用方法:
将上面的内容保存为脚本文件,例如:
nano firewall-reset.sh
赋予执行权限并运行:
chmod +x firewall-reset.sh sudo ./firewall-reset.sh