ET框架的软路由
分布式拒绝服务攻击(DDoS)是一种恶意网络攻击,旨在通过同时向目标服务器发送大量的流量或请求,超出其处理能力,从而导致服务不可用或降级。为了防止DDoS,ET框架提供了软路由。
ET框架里的软路由就是个UDP请求转发服务器,就是将能直接访问的服务器与客户端之间又加了一层。普通的游戏,网关服务器绑定的地址是公网地址可以直接访问的,这样可能会被DDos打死,加了软路由后,暴露在外的只是一堆软路由。网关和其他服务器都是内网地址,外面不能直接访问。当客户端发一个到网关的请求时,先发到这个路由,再由路由向内网转发。
软路由是怎样工作的?
- 软路由一定是准备多个的,需要多个IP与机器。当同时有很多个软路由时,攻击的成本就很高了。当一个软路由被流量打死了,还能换另一个软路由去连接。并且实际上软路由还能随时添加与关闭!在获取软路由的地址时,客户端会访问CDN获取软路由的地址。所以在修改软路由配置时需要更新一下CDN。
- 客户端在访问CDN得到软路由地址与realm内网地址和其他服务器内网地址后,选择一个软路由发送请求,请求里包括客户端想要访问的内网地址,软路由收到请求后将udp包转发给想要访问的内网地址。
- 软路由是UDP服务器,客户端与服务器之间使用kcp进行通信,处理“连接”的逻辑在应用层,能自行控制消息的重发。在切换软路由时也能保证消息不丢失。
- 客户端连接会每隔2秒ping一次,在ping消息10秒没有收到回复时,重新请求获取一个新的软路由去连接。
加了软路由是否就安全了?
加了软路由后是否就高枕无忧了呢?并不是,还是要有其他安全措施的。
软路由确实能保证被攻击后,gate,realm不会被流量打死,但是软路由未被打死之前的流量确实都到了内网了。
所以理论上来说会存在这么一种攻击方案:
首先解包游戏客户端。每个软路由都给一定的流量去发伪造的登录sdk的验证请求,发给登录验证服,登录验证服需要通过http请求访问登录sdk服务器去验证。当有大量流量都去访问sdk服务器,也是会对游戏服务器产生压力。