高防服务器方案:清洗入口和业务库拆开

香港、东京、洛杉矶、西雅图、硅谷、新加坡的 DEF 做入口。订单放同城独立服务器或 GIA。防护容量大不表示正常访问更快。对局进程默认不套进严清洗。

高防服务器解决的是流量被打时入口还在不在,不解决业务写库有多快。清洗容量、业务带宽、正常访客的时延是三件不同的事。方案里入口和库必须能分开停,否则一次清洗会把订单一起停掉。

硬盘盘片

入口用 DEF,库用同城业务机

大陆方向的入口用 香港高防服务器。日本入口用 东京高防服务器。北美入口用 洛杉矶高防服务器、西雅图高防服务器 或 硅谷高防服务器。东南亚入口可以看 新加坡高防服务器。这些型号的共同前缀是 DEF。

订单和账号不要放在 DEF 上。香港的库用 香港独立服务器 或回程要求更高的 香港 CN2 GIA 服务器。清洗策略触发时,入口可以切或进入清洗模式,库继续在同城接受已经通过应用层校验的写入。库如果和入口是同一台,清洗期间业务一起不可写。

先看两套数字,再看误杀

报价上的「100G 防护」多半是清洗容量,业务端口可能仍是 50M 或 100M。容量大不表示正常访客的页面更快。两套数字的区别见 高防服务器的带宽。架构对照 DDoS 高防方案。游戏对局进程默认不要放进很严的清洗,误杀会表现为全房间卡顿;登录页可以放。这一点和 游戏方案 里的角色拆分是同一件事。

验收做两次。一次在没有攻击时,从真实访客网络打开页面,确认清洗没有误伤,首字节和未加高防时接近。一次在约定的演练或真实攻击之后,确认入口仍能解析、库没有跟着停写。只在机房内 ping 通 DEF 的地址,这两件事都还没验。

业务带宽按正常访客的峰值来买,清洗容量按可能打到入口的规模来买。两个数字写在同一行报价里时,要标清哪一个是端口、哪一个是防护。只写一个「100G」,验收时无法判断页面慢是端口满了还是策略在丢正常包。端口没满、丢包增加,优先看清洗策略和白名单,不要先升业务带宽。库所在的独立服务器不要解析到公网业务域名上。访客只解析 DEF 的入口,入口再把校验过的请求转到同城库的内网或限定来源地址。库地址公开后,攻击可以绕过入口,拆分就失去意义。

游戏登录放 DEF、对局不放,是因为登录页可以被扫,对局包小且连续,误丢一个包全房间能感觉到。下载站如果和登录分离,下载可以用普通大带宽,不必套进清洗。三台的域名分开,证书和解析也分开,切清洗时不会把下载和登录一起切走。演练前通知会看监控的人,记下开始和结束时间。演练中库的写入次数应继续增加。写入停了,说明库和入口仍绑在一起,方案要改,而不是把 DEF 的防护数字再买大一档。

地区入口按访客来:大陆走香港 DEF,日本走东京 DEF,北美走洛杉矶、西雅图或硅谷的 DEF,东南亚看新加坡 DEF。不要用一个香港 DEF 接收全球攻击面,再把流量头发回各地。那样正常流量的时延会先坏,清洗还没开始就已经绕路。每个入口后面的库仍在该城市,订单如果必须全球一份,只让各城入口回写到唯一主库,并接受这段跨城写入的时间。

正常日的首字节要和加 DEF 之前各留一份。加完之后中位数增加超过几毫秒到十几毫秒,先看是不是所有流量都被拉去检查。可以让已知的支付回调和机房探测走白名单,访客页面仍走清洗。白名单过大等于没防,过小会误伤回调。名单按来源地址一笔笔记,不要用「全部放行」省事。防护数字和业务端口写进同一份运行说明,放在入口机器的备注里。下次攻击时,值班先看业务端口有没有满,再看清洗是否生效。端口满了加端口,清洗没生效查策略。两个动作对着两个数字,不会在攻击进行时去重启后面的数据库。

演练时库的监控单独拉一张图,和入口的清洗图并排放。入口流量升高、库的写入仍在继续,拆分就是有效的。入口升高、库的写入同时掉到零,说明请求没有在入口停住,或者库的地址仍被直接打到。先改网络路径,再考虑提高防护数字。各地区入口的域名分开之后,证书到期也分开记。一个证书过期不应让其他城市的入口一起告警。备注里写清这个 DEF 对应哪一座城市的库,避免值班把东京的攻击处理到香港的库上。