跳到正文
AWS for Games · 游戏技术与运营· 一手来源· Brian Schuster·· 2026-08-26AI 评分45

使用 Amazon GameLift Servers 保护游戏服务器免受 DDoS 攻击

Protecting game servers from DDoS attacks with Amazon GameLift Servers

正文 · AI 翻译

如果你运营一款热门在线游戏,针对游戏服务器的分布式拒绝服务(DDoS)攻击非常常见,动机也各不相同。一名沮丧的玩家可能想强制对手下线以赢得比赛。一名落败的玩家可能想阻止失败被记录在自己的战绩中。一些攻击者只是想证明他们能做到。无论原因如何,结果都是一样的:大量不需要的流量涌向你的游戏服务器,意图使其不堪重负并中断游戏。

影响直接落在你的玩家身上。比赛卡顿、会话中断,目标游戏会话中的玩家深受其害。影响范围通常更广,还会波及与目标位于同一实例上的其他游戏会话中的玩家。即使是短暂的干扰也会侵蚀你辛苦建立的信任,而沮丧的玩家会迅速分享糟糕的体验。这使得 DDoS 防护不仅是一个基础设施问题,更是一个玩家留存问题。

在本文中,我将带你了解 Amazon GameLift Servers 提供的两种 DDoS 防护选项:增强型 DDoS 防护和 Player Gateway。你将了解每种选项的工作原理、它们之间的权衡,以及如何将它们应用于你的游戏。

DDoS 缓解的常见方法

在了解 Amazon GameLift Servers 提供什么之前,先理解行业通常依赖哪些技术以及这些技术为何对实时游戏可能不够用,会很有帮助。

第一种是响应式过滤。通过使用响应式过滤,系统可以检测正在进行的攻击并相应地应用流量过滤器。这可以很有效,但它本质上总是慢一步;等你检测到攻击、分析其特征并部署过滤器时,玩家已经感受到了中断。不断变换特征的攻击会让你一直在追赶问题。

第二种是防火墙,包括实例本地防火墙和基于边缘的防火墙。防火墙是一个有价值的防护层,但在大规模、动态变化的集群中维护精确的规则在运维上代价高昂。基于边缘的流量清洗服务会增加成本,而规则调整过于激进则可能将合法玩家流量与攻击流量一并丢弃。

这些方法的共同不足在于,它们难以将真实玩家与攻击者区分开来。游戏流量通常采用用户数据报协议(UDP),是无连接的且频率很高,这使得无差别过滤成为一种不精确的方法。

使用 Amazon GameLift 服务器的 DDoS 防护选项

历史上,运行在 Amazon GameLift Servers 上的车队一直受益于 AWS Shield Standard,它会自动检测并缓解最常见的网络层和传输层(第 3 层和第 4 层)攻击,且无需额外费用。这是一个有价值的基线,有助于防止您的实例被常见的流量洪泛攻击拖垮。但请注意,实例所能吸收的流量远超游戏服务器在不被玩家察觉的情况下所能处理的流量。因此,在持续攻击期间,游戏体验可能在 Shield Standard 响应之前就已经下降。在此基础上,Amazon GameLift Servers 现在提供两个选项,您可以根据游戏所需的保护程度以及愿意投入的集成工作量来选择:

  • 增强型 DDoS 防护,自动生效,无需任何集成工作。
  • Player Gateway,以少量集成工作换取更强的、流量感知的防护能力。

两者均免费提供,且完全托管。下面逐一介绍。

增强型 DDoS 防护

增强型 DDoS 防护会对发往您游戏服务器的入站流量进行速率限制,防止大量数据包将其压垮。它还集成了 AWS Shield,以进一步限制来自已知恶意来源的流量,借助威胁情报,使已识别的威胁行为者在到达您的集群之前就被过滤掉。

增强型 DDoS 防护最大的优势在于采用它无需任何额外操作。它在 Amazon GameLift 服务器上默认启用,并主动运行。对于许多游戏而言,这是一层合理的默认防护。

其权衡之处在于,增强型 DDoS 防护无法区分合法的游戏流量和攻击流量。在面对蓄意攻击时,Shield 集成会过滤来自已知恶意来源的流量,以远高于玩家的比例丢弃已识别的攻击者。但由于无法验证某个特定数据包确实来自真实玩家,任何未关联到已知恶意来源的剩余攻击流量都会与合法流量按相同比例受到速率限制。因此,在遭受重点攻击的游戏会话中,玩家可能仍会体验到一定程度的中断。如下一节所示,这与完全没有防护的结果截然不同。图 1 有助于说明这一效果。

Impact of DDoS attacks on a game session protected by Enhanced DDoS Protection

图 1:DDoS 攻击对受增强型 DDoS 防护保护的游戏会话的影响

图 1 展示了两种攻击对假设游戏会话的影响。该 10 分钟的游戏会话中有 100 名玩家,每名玩家每秒发送 60 个数据包(pps)。此场景中存在两种攻击。在 3:30 至 5:00 之间,向服务器发送了大量无效数据包,流量为 500,000k pps。从 7:30 到游戏结束,一名行为异常的玩家每秒发送 100,000 个数据包,而非通常的 60 个。由于系统不了解玩家流量的特征,在两次攻击期间,系统均会在超过其配置阈值时无差别地丢弃数据包。本示例使用 200,000 pps 作为每个实例允许的最大 pps(此示例仅用于说明目的,实际阈值可能有所不同)。

即使启用了增强型 DDoS 防护,玩家流量仍会受到一定影响,你可能会想知道它的优势在哪里。如果没有这种防护,游戏服务器将承受更大规模攻击的全部超过 500,000 pps 的流量。这足以使游戏服务器无响应,甚至可能完全导致实例崩溃,从而中断被攻击的游戏会话以及在同一实例上运行的其他所有会话。

启用增强型 DDoS 防护后,您的游戏服务器只会看到它能够处理的流量包量。您可能仍会观察到一定程度的丢包,但流量会被控制在足够低的水平,使您的游戏服务器能够跟上,这对许多游戏来说已经足够。请注意,前面的示例是故意设置为最坏情况,以便更直观地展示影响。在实际操作中,流量洪泛通常会包含一部分可以通过其他方式识别为恶意的流量。此类流量可以在将剩余流量整形到可管理水平之前先行丢弃。丢弃更多已知恶意流量意味着更少的合法流量会受到无差别丢弃的影响。

玩家网关

Enhanced DDoS Protection 最大的不足在于无法识别合法的玩家流量。为解决这一问题,Player Gateway 采用了更具针对性的方法。玩家流量不再直接发送到您的游戏服务器,而是经过部署在集群前方的一层 UDP 代理。这些代理用于在流量到达您的游戏服务器之前对其进行验证和清洗。

每位玩家会被发放一个访问令牌,客户端会将其附加到其发送的每个数据包的有效载荷前面。代理会验证该令牌,并在将流量转发到游戏服务器之前,按令牌进行速率限制。按令牌进行的速率限制可防止单个玩家用流量压垮你的游戏服务器,并防范重放式攻击。由于代理能够区分有效的游戏流量和攻击流量,流量整形比仅使用速率限制的无差别过滤方式更具针对性。令牌会被代理剥离,因此你的游戏服务器看到的是正常流量,无需进行任何服务器端更改。即使玩家在多个代理端点之间切换,其流量也始终来自单一、一致的源到达你的游戏服务器。

Player Gateway 还改变了攻击者所能看到的信息。客户端永远不会获知游戏服务器的实际端点,只知道被分配到的代理。没有直接路径可以针对游戏服务器发起攻击;所有流量都必须先经过代理。玩家被随机分配不同的代理,因此同一场游戏中的其他玩家很可能通过不同的代理连接。如果某位玩家对其所知的端点发起攻击,该攻击会在到达游戏服务器之前被代理过滤掉。比赛中的其他玩家位于完全不同的代理上,因此可以继续不受影响地游戏。代理可以快速且低成本地替换,受影响的玩家可以在其中一个端点遭受攻击并被替换期间,继续通过其其他已分配的端点保持通信。

部署 Player Gateway 后,系统能够区分有效的游戏流量和攻击流量,攻击被限制在代理层而非游戏服务器上,玩家之间也彼此隔离,不会受到其他玩家攻击者的影响。图 2 展示了与上一示例相同类型的攻击,并让我们可以得出两点观察。

  • 非玩家洪泛流量被识别为无效流量,在到达游戏服务器之前即被完全丢弃。
  • 除了攻击玩家发出的超额数据包(已被限制到允许的单玩家阈值)之外,没有有效的玩家流量被丢弃。这意味着游戏既免受超额流量的影响,又无需丢弃有效的玩家流量。

Figure 2: Impact of DDoS attacks on a game session with Player Gateway

图 2:DDoS 攻击对使用 Player Gateway 的游戏会话的影响

权衡之处在于,Player Gateway 需要稍多的集成工作,我将在下文中介绍。

前提条件

在开始之前,请确认您的集群满足以下要求:

  • 基于 Linux 的 AWS EC2 Fleet 或 AWS 托管容器集群
  • Amazon GameLift Servers Server SDK 5.0 或更高版本
  • 支持玩家网关的位置(参见服务位置)
  • 玩家客户端与游戏服务器之间仅使用 UDP 通信

设置玩家网关

集成围绕一个全新的 API 展开。要采用玩家网关,请将您的游戏后端与 Amazon GameLift Servers 的新 GetPlayerConnectionDetails API 进行集成。流程很简单:

  1. 每分钟调用一次 GetPlayerConnectionDetails 以获取最新的连接详情,因为正在遭受攻击的代理可能会被替换。
  2. 让您的客户端在每个发送的数据包开头包含访问令牌。
  3. 让您的客户端停止使用看起来已受损(未收到返回流量)的端点。

这些主题和示例代码在Player Gateway 集成指南中有更详细的介绍。该指南还描述了一个工具,您可以使用它来测试集成更改是否已正确完成。

由于令牌会按固定间隔刷新,并在流量到达服务器之前被移除,因此集成始终限定在您的后端和客户端网络层内。

完成采用的最后一步是验证在创建 Amazon GameLift Servers 托管 EC2 车队或托管容器车队时,PlayerGatewayMode 参数已设置为Enabled 。这在入门文档中有更详细的说明。

验证集成

您已准备好在您的车队上创建游戏会话,并通过玩游戏来确认流量是否按预期流动。您可以通过检查为您提供的 Player Gateway 指标来执行更深入的验证。

要查看玩家网关指标:

  1. 打开 Amazon GameLift Servers 控制台。
  2. 在导航窗格中,根据适用情况,选择 Managed EC2 或 Managed Containers 下的 Fleets。
  3. 选择您的车队。
  4. 在 Metrics 选项卡中,查看 Player Gateway 部分。

Figure 3: The Player Gateway section of the fleet Metrics tab shows traffic flowing through the system

图 3:舰队指标选项卡中的玩家网关部分显示了流经系统的流量

图 3 中显示的指标确认数据包正在一系列游戏会话中通过玩家网关流动。在正常情况下,被限流的字节数和包数计数为零,但在存在攻击时可能会上升。

清理

如果在测试玩家网关期间创建了任何游戏会话或舰队,请在完成后将其删除,以避免持续计费。

摘要

在这篇文章中,我展示了如何使用 Amazon GameLift Servers 提供的两个选项来保护您的游戏服务器免受 DDoS 攻击,且无需额外费用。增强型 DDoS 保护为您提供自动的、无需集成的速率限制,是任何游戏的合理默认选项。Player Gateway 增加了一层验证 UDP 代理,能够区分真实玩家与攻击者。这些代理还将玩家彼此隔离,使其免受其他玩家的攻击,并隐藏您的游戏服务器端点。要获得这些好处,您只需围绕 GetPlayerConnectionDetails API 进行少量集成工作即可。

在两者之间的选择取决于您的游戏需要多少保护。许多游戏从增强型 DDoS 保护开始。随着玩家基数增长以及它们更容易被潜在攻击者发现,它们可能会采用玩家网关。

联系 AWS 代表,了解我们如何帮助保护您的游戏并加速您的业务发展。

延伸阅读

来源:AWS for Games · 游戏技术与运营 · aws.amazon.com