线上对战服务最怕的并不只是带宽被占满。大量异常连接还可能耗尽负载均衡器、网关、操作系统连接表或应用线程,导致正常玩家无法登录、匹配和进入房间。做好TCP攻击防护,应把入口、连接建立、资源分配和应急切换放在同一套方案中,而不是只依赖一条防火墙规则。
一、先在边缘入口识别并分流
对战服务通常包含登录、匹配、房间、战斗状态同步和观战等不同端口或服务。第一步是绘制流量路径:公网入口到高防或云清洗节点,再到负载均衡器,最后进入游戏网关和业务服务器。不要让所有端口直接暴露在同一台主机上。
- 仅开放客户端确实需要的公网端口,管理端口通过VPN或固定办公出口访问。
- 把登录、匹配、战斗网关和后台接口分成不同安全组或监听器,避免一个入口异常时拖垮全部服务。
- 确认回源地址只来自清洗节点或指定负载均衡器,并在源站防火墙同步限制来源。
需要注意,普通内容分发网络更适合缓存网页、图片等无状态内容,不能直接替代支持长连接或自定义协议的TCP入口。若攻击流量明显超过单点网络或设备承载能力,应选择具备线路清洗和回源控制能力的方案。
二、保护TCP握手和半连接队列
大量伪造源地址的SYN请求会占用半连接资源。Linux服务器可结合SYN Cookie、合理的backlog参数和内核连接跟踪设置,减少握手阶段的资源消耗。SYN Cookie能降低半连接队列压力,但它不是无限容量方案,过度依赖仍可能让带宽、CPU或上游设备先达到瓶颈。
- 先在压测或预发布环境观察SYN接收速率、半连接数量、重传率和CPU使用率。
- 确认业务确实需要较长握手等待时间后,再调整SYN重试、连接超时和backlog,避免简单照搬其他服务器参数。
- 在入口设备上丢弃明显异常的源地址、目的端口和协议组合,并保留少量误报样本供复核。
如果使用HAProxy、Nginx或云负载均衡器,应分别检查其监听队列、连接上限和超时配置。前端设备连接数设得过低会提前拒绝正常玩家,设得过高又可能把压力转移到后端,必须根据实例规格和正常并发逐步调整。
三、按连接阶段设置限速与配额
单纯按公网IP封禁并不可靠。家庭宽带、企业网络和移动网络可能共享出口,同一IP下存在多个正常玩家;而攻击者也可能频繁更换地址。因此,TCP攻击防护应将IP、端口、会话状态、账号和设备标识结合使用。
- 握手阶段:限制单个源地址的SYN新建速率,优先保护半连接资源。
- 登录阶段:对短时间内反复断开、重连或失败认证的会话增加冷却时间。
- 房间阶段:为单个账号、设备和连接设置合理上限,防止一个客户端占用过多长连接。
- 服务器之间:使用连接跟踪记录来源、状态和存活时间,对长期空闲连接设置超时。
限速值应根据正常高峰、网络类型和客户端重连机制确定。移动网络抖动较大时,过低的阈值容易误伤;对固定数据中心来源,则可以采用更严格的连接速率和并发上限。

四、隔离长连接资源并保留降级路径
线上对战中的长连接会持续占用文件描述符、内存和网关工作线程。建议把连接接入层与房间逻辑分开,接入层负责鉴权、心跳和转发,房间服务只处理已建立且通过校验的会话。这样即使新连接异常增加,也不必直接挤占正在进行的战斗资源。
可执行的资源隔离步骤
- 为网关设置最大连接数、每源地址并发数和空闲连接超时。
- 为匹配、排行榜、历史战绩等非核心功能设置独立队列,必要时暂时关闭批量查询。
- 为核心战斗服预留CPU、内存和连接配额,不与后台管理、日志分析等任务共用全部资源。
- 设计降级页或排队状态,让新用户暂缓进入,而不是让全部连接同时超时。
降级策略必须与客户端重试逻辑配合。若客户端在失败后立即无限重连,服务端的限流效果会被新的连接风暴抵消,客户端也应使用递增等待时间和随机抖动。
五、建立监测、告警和切换演练
监测不能只看带宽。建议同时观察SYN与已完成握手的比例、每秒新建连接数、活跃连接数、连接重置数、握手延迟、网关CPU、文件描述符和后端错误率。当新建连接突然升高,而完成认证的会话没有同步增长时,应优先检查入口和半连接资源。
告警要绑定明确动作,例如提高清洗等级、收紧入口端口、暂停非核心接口、切换备用接入地址或限制特定地域和网络段。每次演练记录开始时间、触发条件、操作人、回滚步骤和恢复结果。不要在真实攻击期间首次尝试修改防火墙、路由或负载均衡配置。
常见问题
只开启SYN Cookie就够了吗?
不够。它主要缓解握手阶段的半连接压力,无法解决带宽耗尽、连接跟踪表满、应用层重连风暴等问题。
能否直接封禁异常IP?
可以作为临时措施,但不宜作为唯一方案。共享出口会带来误封,攻击源也可能不断变化,应结合连接速率、会话状态和业务身份判断。
长连接服务是否适合使用很短的超时?
通常不适合。超时过短会误断移动网络或高延迟线路上的正常玩家,应结合心跳周期、重连成本和业务容忍度设置。
什么时候需要外部清洗服务?
当攻击流量已接近或超过机房、云实例或公网线路承载能力时,主机本地规则无法消化全部流量,应将识别和丢弃动作前移到具备更大容量的上游节点。
总体而言,TCP攻击防护不是单项参数调优,而是入口分流、握手保护、连接限额、资源隔离和应急切换的组合。先明确正常流量基线,再逐项设置阈值并持续演练,才能在异常连接出现时保护正在进行的对战。


