多数游戏不需要二选一,按流量走的协议分开处理就行:
- 玩家对战、房间、大厅这类TCP/UDP长连接(通常是私有协议),接高防IP;手游、端游、棋牌这类有客户端的游戏,可以进一步考虑游戏盾。
- 官网、活动页、微端和补丁下载、HTTP形式的登录或充值接口,接高防CDN。
纯H5网页游戏的情况不太一样,后面单独说明。
如果服务器现在正在被打、IP已经被黑洞,可以直接看最后一节的接入顺序。
先按协议把游戏业务拆开
高防CDN本质上是分布式反向代理加边缘缓存,原生承载的是HTTP/HTTPS七层流量。游戏核心的战斗同步、长连接网关大多跑在TCP或UDP私有协议上,高防CDN通常无法直接代理这类四层原始数据包。高防IP做的是TCP/UDP端口转发,可以按全端口或指定端口配置,对私有协议没有要求。
所以第一步是列清单,不是比产品:
| 业务模块 | 典型协议 | 建议接入 |
|---|---|---|
| 官网、活动页 | HTTP/HTTPS | 高防CDN |
| 微端、补丁包、资源下载 | HTTP/HTTPS,静态大文件 | 高防CDN,边缘缓存可以分担源站带宽 |
| 登录鉴权、充值等Web接口 | HTTP/HTTPS | 高防CDN,同时配置CC防护策略 |
| 登录服(TCP长连接形式)、大厅、房间服、战斗网关 | TCP/UDP私有协议 | 高防IP,或游戏盾 |
同样叫「登录」,各家游戏的实现可能不一样。走HTTP接口的放进CDN那一侧;客户端与登录服之间保持TCP长连接的,放进高防IP那一侧。
如果不确定某个模块属于哪一类,可以先看非网站业务能用高防CDN吗,里面有按协议判断的方法。

实时对战部分,再看时延
FPS、MOBA这类强交互游戏对延迟、丢包和抖动非常敏感。高防CDN要经过多层边缘调度和应用层代理,用在长连接上容易引入抖动。BGP高防IP可以多线直连,做四层转发,额外开销更小,更适合放在战斗链路前面。
选型时建议用玩家实际所在地区的网络做测试,同时看平均延迟和抖动、丢包。只在机房附近测一次,看不出问题。
有客户端的游戏,要不要上游戏盾
手游、端游、棋牌常遇到另一类攻击:TCP空连接、慢速连接,以及伪装成正常私有协议请求的CC。这类攻击流量不一定大,但会持续占住高防IP的转发连接池,单靠清洗大流量的思路处理起来比较吃力。
游戏盾的做法是在客户端集成SDK,客户端与防护节点之间建立私有协议的加密隧道,再由分布式节点动态调度。这样源站和防护节点都不直接暴露,攻击流量也难以集中到一个点上。代价是要改客户端,需要随版本发布,排期时要把这一步算进去。
可以这样判断:
- 主要威胁是大流量的SYN Flood、UDP Flood,高防IP通常就能覆盖。
- 已经出现连接被占满、频繁掉线,流量看着却不大,或者防护节点IP反复被针对,可以考虑游戏盾。
RockCloud的游戏盾支持TCP/UDP和私有协议封装,可以隐藏源站。加速与防御在同一条链路上完成,只收一份费用,支持先免费测试,再决定是否迁移。
纯H5网页游戏运行在浏览器里,通信一般是HTTPS或WebSocket,这种情况下高防CDN有可能承载主体流量。但WebSocket长连接是否支持、空闲超时怎么设置,各家产品不一样,需要逐项确认,并在真实对局里实测。
组合部署的落地要点
- 入口分开。 Web部分的域名CNAME到高防CDN;客户端连接游戏服的地址换成高防IP,或者交给游戏盾SDK调度。
- 源站收口。 游戏服和Web源站都只放行防护节点的回源IP,其余公网入站一律阻断。只收一边,另一边就是绕过防护的口子。
- 别让Web记录暴露游戏服IP。 如果历史DNS记录直接指向过游戏服IP,或者官网和游戏服共用同一台机器,攻击者可能查到真实地址。
两种产品怎么同时配,参见高防IP和高防CDN能同时用吗;接入时具体改DNS还是改端口,参见高防IP需要改DNS还是改端口。费用怎么算,可以看高防IP和高防CDN哪个便宜。
正在被攻击时的接入顺序
- 先确认被打的是哪一层。 是官网、下载站、Web接口打不开,还是游戏服掉线、IP被黑洞?处理路径完全不同。
- Web和下载部分: 把域名CNAME切到高防CDN,DNS生效后流量就会走防护节点。生效快慢和原记录的TTL有关。
游戏服被黑洞: 不要把四层服务接到只支持七层的CDN上,这样解决不了问题。正确做法是:
- 在高防IP上配置TCP/UDP转发规则;
- 把客户端的连接目标换成高防IP,通常要改登录服下发的服务器列表或客户端配置;
- 源站只放行高防回源IP。
- 考虑更换源站IP。 源站IP已经暴露的情况下,服务器上的访问控制挡不住直接打到这个IP上的大流量,上游照样可能黑洞。条件允许时,换一个从未公开过的IP作为新源站,再做收口。
如果正在被攻击、需要协助接入,可以直接通过联系页找RockCloud处理。
评论(0)