Q90: 如何应对 DDoS 攻击?
核心结论
DDoS 防护不是应用层单独能解决的问题,它本质上是“分层削峰和隔离故障域”的能力建设。
更现实的思路通常是:
- 上游网络层挡大流量
- 接入层挡连接和协议滥用
- 应用层挡高成本逻辑请求
如果希望单靠游戏服自己扛住大规模 DDoS,通常是不现实的。
一、先区分几类攻击
常见可以分成:
- 容量型攻击:打满带宽
- 协议型攻击:打满连接和内核资源
- 应用型攻击:耗尽业务处理能力
对在线游戏来说,还经常会出现“伪正常行为”的攻击:
- 登录洪峰
- 假角色接入
- 高频但看似合法的业务请求
二、为什么必须分层防
因为不同层的成本差别很大:
- 越靠近上游,越便宜
- 越靠近业务,越贵
所以最理想的处理顺序是:
- 在网络和清洗层挡掉大流量
- 在网关层挡掉异常连接和格式错误
- 只有较可信的请求才进入业务服
三、网关层是关键防线
对游戏系统来说,网关层通常要承担:
- 连接限速
- 握手和协议校验
- 基本鉴权
- 早期丢弃无效请求
这层做得越稳,后端业务服越不容易被拖垮。
四、应用层也要防“低流量高成本”攻击
很多攻击并不追求超大流量,而是专门命中高成本路径,例如:
- 登录验证
- 匹配入队
- 排行榜查询
- 高频创建会话
这类问题更需要:
- 接口限流
- 缓存和降级
- 高成本路径保护
五、降级策略必须提前准备
攻击期间,不是所有功能都必须保持完全正常。
更稳妥的做法通常是预先定义:
- 哪些功能可以关闭或降级
- 哪些路径必须优先保活
- 哪些非核心功能暂时停用
例如:
- 暂停部分排行榜实时更新
- 限制注册和某些后台功能
- 收紧高成本接口
六、观测和联动很重要
DDoS 防护不能只靠单机日志判断。
通常至少要联动观察:
- 带宽与连接数
- SYN / ACK 异常
- 登录成功率
- 网关拒绝率
- 业务接口异常分布
这样才能判断攻击打到了哪一层。
七、工程上更稳妥的组合
常见做法是:
- 上游高防或清洗服务
- 网关层限速和连接保护
- 应用层限流与降级
- 关键业务接口加风控和缓存
这是一套体系,不是某一台机器或某一个中间件的能力。
八、常见误区
1. DDoS 主要是带宽问题
不完整。很多游戏系统真正先死的是连接资源和应用层高成本路径。
2. 有 CDN 或高防就够了
上游能挡很多流量,但应用层滥用和业务热点仍要自己处理。
3. 只有攻击时才需要想降级方案
真到攻击来了再设计,通常已经太晚。
参考资料
- 高防、接入层限速和应用层降级实践资料
