DDoS 防护原理:清洗、黑洞、限速到底在做什么
被 DDoS 打过的人都听过这些词:清洗、黑洞、限速、高防。但很少有人讲清楚它们到底在做什么,什么时候该用哪个。这篇把原理拆开说。
DDoS 到底在攻击什么
一句话:用远超你承载能力的请求,把你的资源占满,让正常用户进不来。
类比一下——你的服务器是一家只有 10 个窗口的银行。攻击者雇了 10 万个人排队,不办业务,就占着窗口。真正要办业务的人排不进来,银行等于瘫痪。
关键在于:攻击者不需要攻破你的系统,只需要让你的系统忙不过来。所以 DDoS 本质是资源消耗战,不是技术漏洞。
四类攻击方式
1. 流量型(Volumetric)
直接灌垃圾流量,把你的带宽堵死。典型是 UDP Flood,简单粗暴但有效——因为带宽是物理上限,撑不住就是撑不住。
量级:现在常见的起步就是几十 Gbps,大的能到 T 级。
2. 协议型(Protocol)
利用 TCP/IP 协议的握手机制消耗连接资源。最经典的是 SYN Flood——发大量 SYN 包但不完成握手,服务器为每个半连接分配内存,很快耗尽。
特点是流量不大,但连接数爆表。
3. 应用层(Application)
就是 CC 攻击。模拟真实用户发请求,专打消耗 CPU 和数据库的接口,比如登录、搜索、列表页。
特点是流量看起来完全正常,监控上看不出异常,但服务器已经卡死。这是最难防的一类。
4. 反射放大(Reflection Amplification)
伪造你的 IP,去向 DNS、NTP、Memcached 这类服务器发查询。这些服务器会把放大几十倍的响应发回给你。
举例:一个 60 字节的 DNS 查询,能换来 3000 字节的响应,放大 50 倍。攻击者只需要 2Gbps 的上传,就能打出 100Gbps 的效果。
四种防护手段,各管什么
黑洞路由(Blackhole)
最简单粗暴:检测到攻击,把去往你 IP 的所有流量全丢弃。
效果:攻击立刻停止。代价:你的业务也停了。
这是运营商的最后手段,通常只在攻击量超过机房承载能力时启用。黑洞期间你的服务器等于从互联网消失。
限速(Rate Limiting)
对单个 IP 或单个连接的请求频率做限制。比如单 IP 每秒最多 100 个包。
效果:能挡住低成本的 CC 和小规模扫描。局限:分布式攻击(每个 IP 只发一点点)完全无效。
流量清洗(Cleaning)
把流量引到清洗中心,用规则+算法判断哪些是攻击,把脏流量丢掉,干净的回源。
这是主流方案。但难点在于怎么判断:
- 基于特征:匹配已知攻击模式,快但挡不住变种
- 基于行为:看包大小、频率、协议是否符合正常业务
- 基于信誉:IP 黑名单、地理位置、历史行为
最大的挑战是误杀。清洗太激进,正常玩家被当成攻击;太保守,攻击漏过去。这个平衡点很难找。
分布式分散(Anycast / CDN)
把攻击流量分散到全球几十个节点,每个节点只承担一小部分。
这个思路很聪明:不跟攻击者比谁带宽大,而是让攻击找不到一个集中的目标。
为什么游戏比网站难防
| 维度 | 网站(HTTP) | 游戏(UDP 为主) |
|---|---|---|
| 协议可验证性 | TCP 三次握手,天然抗伪造 | UDP 无握手,源 IP 可伪造 |
| 流量特征 | 请求-响应,模式清晰 | 持续小包,和攻击流量难区分 |
| 误杀代价 | 一次请求失败,可重试 | 直接掉线 |
| 延迟容忍 | 几百毫秒无所谓 | 超过 100ms 玩家就有感知 |
所以拿通用的 Web 防护去打游戏,效果通常很差——要么误杀一片,要么根本识别不出来。
实际防护是怎么组合的
真正有效的方案不是单一手段,而是分层:
- 隐藏源站 IP。这是第一道也是最重要的一道。IP 不暴露,攻击者连打哪都不知道。
- 入口分散。客户端连接就近节点,节点之间负载均衡,单点被打不影响全局。
- 协议层过滤。丢弃不符合游戏协议格式的包,这一层能挡掉大部分反射放大。
- 会话层校验。验证客户端身份(接入码、会话令牌),过滤伪造的请求。
- 业务层限速。对高频接口做频率控制,挡住 CC。
- 隧道回源。干净流量通过加密隧道送到源站,源站只信任隧道来的连接。
这六层配合,才叫「防护体系」。任何单一手段都会被绕过。
一个常被忽略的事实
防护的目标不是「挡住所有攻击」,而是「让攻击成本高于收益」。
攻击是要花钱的——租僵尸网络、买攻击服务,都是成本。如果你的防护让攻击者需要付出十倍的成本才能打穿,大部分人会放弃,转去找更好打的目标。
所以评估防护方案时,别问「能不能百分百防住」,要问「被打穿需要多大代价」。
具体到游戏场景怎么选方案,可以看 游戏盾是什么 这篇。