一、特点及作用
- 清理旧的 iptables 规则
- 安装并配置 UFW
- 放行你现有服务所需端口(SSH、Web、Docker、应用、Sui 节点)
- 禁止 Docker 自动改写 iptables
- 启用防火墙并输出状态
二、一键防火墙配置脚本(保存为 setup-firewall.sh)
#!/bin/bash
# ========================================
# 一键防火墙配置脚本 (UFW + Docker)
# 适用于 VPS 远程管理 + Docker 容器环境
# ========================================
# 提示
echo "==== 开始防火墙配置 ===="
# 1️⃣ 清除旧 iptables 规则
echo "清理旧的 iptables 规则..."
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
# 删除持久化规则(如果有)
sudo apt remove --purge iptables-persistent -y
sudo rm -f /etc/iptables/rules.v4 /etc/iptables/rules.v6
# 2️⃣ 安装 UFW 并配置默认策略
echo "安装并配置 UFW..."
sudo apt update
sudo apt install ufw -y
sudo ufw default deny incoming
sudo ufw default allow outgoing
# 3️⃣ 放行端口
echo "放行必要端口..."
# SSH
sudo ufw allow 22/tcp # 根据你的 SSH 端口修改
# 网站服务
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Web 应用
sudo ufw allow 8080/tcp
sudo ufw allow 3000/tcp
# 节点
sudo ufw allow XXXX/tcp
sudo ufw allow XXXX/udp
# Docker 内部服务
sudo ufw allow XXXX/tcp
sudo ufw allow XXXX/udp
# 4️⃣ 启用防火墙
echo "启用 UFW..."
sudo ufw --force enable
# 5️⃣ 配置 Docker 不修改防火墙
echo "配置 Docker 不修改 iptables..."
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json > /dev/null <<'EOF'
{
"iptables": false
}
EOF
sudo systemctl restart docker
# 6️⃣ 显示防火墙状态
echo "==== 防火墙配置完成,当前状态如下 ===="
sudo ufw status verbose
三、使用方法
- 保存脚本:
nano setup-firewall.sh
# 粘贴上面的内容,Ctrl+O 保存,Ctrl+X 退出
- 赋予执行权限
chmod +x setup-firewall.sh
- 执行脚本:
sudo ./setup-firewall.sh
四、效果
运行完毕后,你的 VPS 防火墙会:
- 全面切换到 UFW 管理
- 默认拒绝所有入站,只放行必要端口
- Docker 不再干扰防火墙
- SSH、Web、应用、Sui 节点端口全部可用
