在面对大规模 DDoS 攻击时,云厂商为了保护骨干网,通常会直接对受攻击的 IP 进行“黑洞”处理(Null Route),导致服务器彻底失联。如果你不想支付高昂的高防费用,也不想坐以待毙,通过“反向代理屏蔽层”来保住源站 IP 是一种非常实用的策略。### 一、核心思路:构建“牺牲层”与其让源站 IP 暴露在公网,不如在前端部署几台价格低廉的 VPS(俗称“小鸡”)作为流量入口。攻击者只能发现这些前端节点,即便某个节点被打进黑洞,你也可以迅速切换 DNS 到备用节点,而存储核心数据的源站始终是安全的。### 二、环境准备1. 源站:运行业务的服务器(不要向外界泄露其 IP,建议开启防火墙仅允许前端节点访问)。2. 前端节点:2-3 台廉价 VPS(如月付几美金的机器)。3. 域名解析:支持 API 切换或具备快速生效(Low TTL)的 DNS 服务。### 三、配置前端 Nginx 反向代理在每一台前端 VPS 上安装 Nginx,并配置反向代理指向你的源站。这种方式能有效隐藏源站真实 IP。
“`nginx
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://源站私有IP或隐藏IP;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 5s;
}
}
“`### 四、利用 iptables 进行基础防护在前端节点上配置基础的连接数限制,可以过滤掉一部分小规模的刷流量行为,延缓被黑洞的时间。“`bash
限制每个 IP 的并发连接数为 20
iptables -I INPUT -p tcp –dport 80 -m connlimit –connlimit-above 20 -j REJECT
限制每秒新建连接数
iptables -A INPUT -p tcp –dport 80 -m state –state NEW -m nth –every 2 –packet 0 -j ACCEPT
“`### 五、进阶操作:故障自动切换如果前端 A 节点被打入黑洞,我们需要自动将解析切换到 B 节点。以下是一个简单的脚本思路,监控前端节点状态:“`bash
#!/bin/bash
简易监控逻辑:若前端 A 不可达,则通过 API 修改 DNS 解析到 B 节点
CHECK_URL=\”http://node_a_ip\”
if ! curl –output /dev/null –silent –head –fail \”$CHECK_URL\”; then
# 调用 Cloudflare 或其他 DNS 服务的 API 切换记录
echo \”Node A is down, switching traffic…\”
fi
“`### 六、总结这种方案的精髓在于“以量换时间”。只要源站 IP 不泄露,攻击者就无法直接瘫痪你的数据库和核心业务。即便前端节点全部阵亡,你只需要更换几台廉价 VPS 即可快速满血复活,成本远低于商业高防。
汤不热吧