虽然是定番,但……但这个也没啥好强调的了。
2025-05-14 19 时左右,我们如期开始了服务器的活动。5 分钟后,服务器的 TCP 连接数开始异常地暴增,同时入站数据包数开始快速地攀升;8 分钟后,支持服务器资源分发的 CDN 流量开始暴涨。35 分钟后,我们的 IP 进入了黑洞。
That's why we cannot have good things on the internet. 即使是纯粹为爱发电的我们,也逃不过这群吃饱了没事干的骚扰——虽然当个好人并不是不被坏人打的理由吧,但这世上谁又愿意生活在不安之中呢?
我们抗住了!但机房不这么认为
监控系统很快就开始报警了:TCP 半开连接数过高。同时,网卡数据包处理量瞬间突破了 100kP/s. 第一波攻击比我预期的更早地到达了。
当我不断刷新监控指标的时候,服务器入站流量达到了 571Mbps 的顶峰。但是服务端撑住了!反向代理工具虽然在不停地报包解析错误,但是玩家们都还在线!他们都能正常地活动!
这波攻击持续了一分钟。也许是触发了机房那边的自动封禁动作,也许是攻击者认为一分钟就足够轰垮我们。
我顶着快跳出嗓子眼的心率敲下了一行通过反向代理日志滤出攻击 IP 的命令,开始收集数据。
5 分钟后,第二条报警弹了出来:TCP 半开连接数过高。但网卡数据包处理量相比上次收敛了很多,只有 79kP/s. 这次攻击持续了两分钟,我们的游戏端仍然在线。
但是当我的目光移动到 CDN 数据统计时,原本 2Gbps 的下行带宽突然上涨到了 9Gbps. 关于 CDN 的数据,后面再提。毕竟是腾讯云的 CDN, DDoS 腾讯云疑似是对自己有点过于自信了。
又过了 5 分钟,第三波波峰出现了,网卡入站流量达到 400Mbps, 反向代理更是疯狂滚动着包解析出错的信息。但玩家都还在线!甚至他们没有卡顿!
我以为如果能再抗一分钟,我们或许可以想办法撑到活动完成——毕竟这次活动只需要跑一个小时,而现在时间已经过去了一半。我已经收集了足够多的数据开始封禁 IP 了。
一分钟终于过去了,然后——
然后是一片死寂。
我们的 IP 进入了流量黑洞,所有玩家全部掉线。好在后台管理使用的是不同的 IP, 我的 SSH 连接并没有因此中断。
我们不得不将活动迁移到其他地方继续进行。服务器的反代被关掉,我们只能在被黑洞的时间里装死。
等一下,你说 CDN 跑了多少流量?
我们通过 CDN 分发的文件大小是 1GB. 没错,它是一支视频。因为技术原因我们必须串流分发 MP4 文件而非通过视频云转码并分发 m3u8. 如果你已经开始叹气摇头或者开始苦笑,那么我后面还有更劲爆的:因为技术问题,我不能部署任何验证措施。
这简直是求着人在盗刷 CDN 流量,但反正这个资源只需要用撑死 1 小时,只要能撑过这 1 小时,那问题就不大。大不了我先起够余量,再加一个 5Mbps 100QPS 的流控。就算真有人盗刷,又能拖出多少流量呢?
我们服务器的计划承载量是 100 人,所以技术上来说,最大只需要分发 100GB 也就够了。为了保证余量充足,我提前购买了 300GB 的流量包。
也许是因为那么多的技术妥协导致玩家不得不反复拉取文件,也许是有人抓出了 CDN 分发链接,我们用于分发视频文件的 CDN 流量一度达到并保持在 9Gbps 左右。这么运行了一段时间直到服务器被黑洞后,我得到的最终结算流量是 1TB.
这个时候你就会深刻地意识到:在用了这么多年的无限流量卡后,流量还是他妈的要钱的,而且不便宜!
CDN 的下行带宽曲线在服务器被黑洞后快速归零,所以很难说到底是为什么会出这种问题。也许是游戏客户端写得太成问题导致部分玩家会疯狂地从 CDN 拉取数据;也许是攻击者的诉求已经达到所以不屑于继续耗费它的资源做无意义的攻击。
好在 CDN 账单并没有刷爆我的卡——虽然这一次超过预算 300%, 但至少我还有两个子把它解决掉。搞笑的是因为 CDN 结账的滞后性,我还是接到了腾讯云的催命电话:欠费 12 元,即将停机。
交钱、删资源、停解析。闹剧该收场了。
混在玩家中的攻击源
一开始攻击源很好辨认:它们来自我们八竿子接触不到的地区,比如印度尼西亚,比如得克萨斯州。但还有一些攻击源,它们来自广州、江苏、山东、河南。细查之下发现有些 IP 地址甚至是来自已经登录的玩家!
我不相信有玩家会主动攻击我们服务器,更不相信有一群玩家都在主动攻击我们服务器。唯一的解释,可能还是来自于一个尴尬的事实:中国大陆的 IPv4 地址很不够用,所以有许多人会在一层 cgNAT 后面;从服务器这端看过去,他们就都是来自同一个 IP 地址的。
这使得我们不敢部署自动 ban 人脚本:因为防火墙会无差别地杀伤普通玩家和攻击者。我只得手动筛选出大陆以外的 IP 进行封禁。不过说实话,这种攻击此时已经于事无补了,该黑洞还是会黑洞,这只是为了能少看点报错而已。
溯源?
愉快犯是最难溯源的。我们没收到任何人或组织的威胁或勒索,也没有任何人或组织明确提出过对此次活动的反对,所以整个攻击就显得……很神奇。我们就像一只趴在路边晒太阳的小动物,总是有那么个好事的非得过来踢一脚不可。
活动结束了,服务器又开了,黑洞解除了,攻击没再继续。机房给出了攻击汇报:总共检测到了 550GB 的攻击流量。不是很大,但也不可轻视。
是有人讨厌活动的主题但是又不愿意提出么?是有人嫉妒我们可以组织这样的活动么?是有人在拿我们服务器练手么?这些无尽的猜测不会有答案。我看着攻击源为一个星号的 UDP 攻击和 SYN 泛洪攻击统计数据,只产生了更多的困惑。
你应该……
我知道,我们应该提前做好规划,应该上防火墙,应该上白名单,应该……
我承认这次我们确实是准备不足了。但说实话,之前我们的服务器达到一定规模的时候,也并没有人来找我们的麻烦。或许我们沉浸在这种岁月静好里太久了,所以有人决定还是得提醒我们一下:这个世界的底色仍然是战火纷飞。
当然,根据我掌握的资料来看,无论国内外,这种攻击都不少见。大多数在线游戏甚至要在发售之前就买好昂贵的防护套餐来避免自己被打成筛子——哪怕他们只是没什么钱的独立游戏工作室,这个「保护费」也是必选项。
正在加载评论……