游戏服务器被打挂了怎么办?应急处理与高防选型清单

被打挂的那一刻,处理顺序比技术手段更重要

凌晨两点群里开始刷屏:登录转圈、匹配失败、大厅进不去。这时候多数人的第一反应是翻日志、看监控、重启服务,半小时就这么过去了。实际上这个阶段要做的只有三件事:判断是不是攻击、把流量导走、把证据留下。顺序反了,止血时间会翻倍。

第一段:已经被打挂,按这个顺序来

两分钟内做判断:流量型攻击还是自身故障

打开机房或云厂商的流量面板,盯两个数:入方向带宽是否顶到上限,以及 PPS(每秒包数)是否异常抬升。带宽曲线像被刀切一样贴着上限走、UDP 包从几万跳到几百万,基本就是流量型攻击。反过来,如果带宽平稳、CPU 却打满、数据库连接数爆表,那大概率是代码问题或者七层 CC 攻击,处理路径完全不一样。

顺手抓个包:tcpdump -i eth0 -w attack.pcap,UDP 服务同样照抓。这个文件后面报警、溯源、和服务商对齐口径都用得上,等流量过去了再想起来就来不及了。抓包别只抓十秒,至少覆盖一个攻击波峰。

切高防 IP 或者让机房做 BGP 牵引

确定是流量攻击,接下来是把流量从源站挪走。两条路:一是把域名解析切到高防 IP,二是让机房做 BGP 路由牵引,把目的 IP 的流量引流到清洗设备。前者自助、生效慢一点;后者快,但需要机房配合,通常几分钟内完成。

这里有个平时就该做的动作:把游戏入口域名的 DNS TTL 调到 60~120 秒。不少团队默认设 3600 秒,出事时改了解析还得等一小时才全网生效,玩家眼里就是「维护了一小时」。

另外,切换过程中源站真实 IP 要同步做隔离,旧 IP 能下线就下线,别留在 SDK、客户端配置文件或者历史公告里。真实 IP 泄露是后面反复被针对的根源。

清洗策略先放行再限制,别一次上满

高防后台的策略优先级:白名单 > 特征过滤 > 限速。登录服、支付回调地址、CDN 回源 IP、运维跳板机这些先加白。然后再按源 IP 新建连接数、目的端口、包长分布做限速。

策略别一口气拉满,先用观察模式跑十分钟,看看被命中的包里有没有正常玩家流量。误杀的典型症状是:玩家能连上但卡在匹配、心跳包被丢导致频繁掉线、登录验证码刷不出来。这种「半死不活」比直接连不上更伤留存,也更难排查。

攻击形态 现场特征 当下处置
UDP 反射放大(NTP/DNS/memcached) 单包几百上千字节,源端口固定,PPS 暴涨 立刻牵引到高防,按目的端口和包长过滤
SYN Flood 半连接数飙升,源 IP 高度分散 开启 SYN Cookie,做新建连接限速
协议层假连接 包大小正常但频率异常,会话建立后不发有效数据 需要支持自定义游戏协议特征的防护,通用限速容易误伤
CC 打登录/支付接口 带宽不高,接口响应时间陡增,日志出现大量同 UA 请求 七层规则、频率限制,必要时上 JS 挑战
混合攻击 上面几种同时出现 分层:高防扛流量层,CDN 和 WAF 扛应用层

证据留全,报警和索赔才有依据

  • 抓包文件(含时间戳,记录攻击起止区间)
  • 防火墙/iptables 的 drop 计数截图
  • 服务端连接表快照(ss -s、netstat -an 的采样)
  • 监控曲线导出,标注业务影响时间段
  • 玩家投诉和客服记录的汇总,用于说明损失

还有个容易被忽略的点:提前问清楚机房的黑洞阈值。被打到某个量级自动黑洞,机房保住了,你的业务整段下线。对小团队来说黑洞基本等于关服,这个阈值必须在签合同前就谈明白。

为什么有的高防一接上就掉线?问题多半在抖动

丢包玩家能感知到,但真正杀伤体验的是延迟抖动。原本 20ms 的延迟,接入高防后变成 50~80ms 且上下浮动 ±30ms,射击游戏就是「打不中」,MOBA 就是「技能放空」,实时对战直接没法玩。玩家不会说「我延迟抖动」,只会说「你这游戏卡」然后卸载。

造成抖动的常见原因有三个:

  • 清洗中心离源站太远。流量被牵引到异地清洗再回源,来回多绕几百公里,光传输就多出几十毫秒,且路由不稳定。
  • 单线清洗。电信清洗节点接联通、移动玩家,跨网绕行,延迟翻倍且抖动明显。游戏业务基本要选 BGP 多线,参考 BGP 高防机房 的线路说明。
  • 回程没优化。去程清洗干净,回程走公网普通线路,一样抖。

所以「清洗能力 500G」只是个入场券数字。选型时真正该问的是:清洗节点在哪、是不是 BGP 多线、回源走内网还是公网、UDP 是不是和 TCP 同等对待。市面上不少通用高防对 TCP 优化得不错,UDP 只做简单限速和特征匹配,游戏服一上去就出现各种古怪问题。

分流也是个办法:登录服和游戏服走 游戏服务器高防方案,静态资源(大厅图、热更新包)走 全球 CDN 加速,既能减少源站暴露面,也能顺带消化一部分七层攻击。

第二段:平时怎么选,看两个维度

维度一:攻击类型决定需要哪种防护能力

把过去半年被打的记录翻出来,看是流量型为主还是应用层为主。如果主要是 UDP 反射放大,重点看清洗带宽和特征库更新速度;如果经常被 CC 打登录接口,重点看七层规则是否支持自定义频率策略;如果是混合型,就别指望一层挡完,高防 + CDN + WAF 分层更靠谱。具体的对比思路可以参考 DDoS 防护方案怎么选。

维度二:带宽量级决定买多大的清洗能力

一个粗略的算法:按历史攻击峰值留 1.5~2 倍的余量。没被打过的新服,按「同时在线人数 × 每连接带宽 × 3」估个量级,再往上取一档。参考区间:

  • 小体量游戏(同时在线几千):保底 10G~50G 通常够用
  • 中型游戏(同时在线几万):保底 50G~300G 比较稳妥
  • 竞技类和爆款:需要 300G 以上,并且要确认是 BGP 多线接入

要区分「保底防护」和「弹性防护」:保底是套餐内包含的清洗量,超出部分要么按峰值计费,要么直接黑洞。价格上,10G~50G 保底的高防 IP 月费大致在几百到两三千元区间,百 G 级通常要几千元以上,T 级需要单独谈。具体以实际报价为准,跟你选的机房位置、线路类型、是否独享带宽都有关系。

问清这几个问题,能筛掉一半服务商

  1. 清洗节点在哪些城市?离我的源站有多远?
  2. 是不是 BGP 多线?单线的话通联通、移动玩家怎么走?
  3. UDP 清洗是用特征还是纯限速?支持自定义游戏协议特征吗?
  4. 超出保底带宽怎么处理,是自动弹性还是黑洞?黑洞阈值多少?
  5. 可以先用观察模式压测一轮吗?有没有测试 IP?
  6. 回源带宽是否另外计费?计费口径按 95 峰值还是包月?

我们踩过的几个坑

  • 只看防护峰值数字,没问清洗节点位置。上防护后延迟从 25ms 涨到 70ms,玩家流失比被打的时候还严重。
  • 防护上线后没做压测。真被打的时候策略误杀,登录接口拦了正常玩家,排查了两小时才发现是限速阈值设低了。
  • 只防了游戏服,忘了登录 API 和支付回调。攻击方换了个目标,一样能把你打断。
  • TTL 没提前调低,切换解析等了一个多小时,等于白扛了一小时攻击。
  • 真实 IP 泄露后,攻击直接绕过防护打到源站。换 IP 时把 SDK、公告、历史配置全部清一遍。

下一步可以这么走

先花半天做两件事:一是把过去三个月的流量峰值和攻击记录整理成一条基线,知道自己的正常水位在哪;二是拿这条基线去问服务商要个测试 IP,用真实业务流量跑一轮,重点看延迟曲线的抖动幅度,而不是只看能不能防住。

如果你是第一次给游戏业务配防护,或者正在纠结现有高防为什么总在关键时刻掉链子,可以把你的服务器位置、在线量级和被打记录发到 bd@319keji.com,我们按实际流量给一版配置建议;也可以直接走 联系合作 页面对接,先聊清楚再谈方案,比盲目上一个高防 IP 划算。

Leave a Reply

Your email address will not be published. Required fields are marked *