[分享创造] 使用 CDN 来保护 MC 服务器/tcp over websocket

使用 CDN 来保护 MC 服务器 / TCP Over WebSocket 最近写了个项目: TOH Proxy 项目地址: https://github.com/albert4719/toh-proxy 可以把 Minecraft 的 TCP 连接转发到 WebSocket 上,再通过 CDN ...
[分享创造] 使用 CDN 来保护 MC 服务器/tcp over websocket
[分享创造] 使用 CDN 来保护 MC 服务器/tcp over websocket

使用 CDN 来保护 MC 服务器 / TCP Over WebSocket

最近写了个项目:TOH Proxy

项目地址:

https://github.com/albert4719/toh-proxy

可以把 Minecraft 的 TCP 连接转发到 WebSocket 上,再通过 CDN 代理,从而隐藏服务器真实 IP 。

简单来说:

玩家 -> CDN -> WebSocket -> MC 服务器

而不是:

玩家 -> 直接攻击你的服务器 IP

为什么这么做?

传统 MC 服务器:

  • IP 直接暴露
  • 容易被 DDOS
  • 一打就炸
  • 国内高防价格离谱

但 WebSocket 属于 HTTP 体系。

也就是说:

  • 腾讯云 EdgeOne
  • 百度 CDN
  • Cloudflare
  • 其他 CDN

理论上都能代理。

于是就能做到:

TCP -> WebSocket -> CDN 加速

让 MC 流量走 CDN 节点。


特性

  • TCP Over WebSocket
  • 支持 Proxy Protocol
  • 还原玩家真实 IP
  • 支持 Velocity / Paper
  • 支持 CDN 回源
  • 支持 HTTPS / WSS
  • 隐藏真实服务器 IP
  • 支持第三方 MOD 直连

原理

服务端监听:

ws://your-domain/mc

客户端:

本地 TCP -> WebSocket -> CDN -> 服务端

服务端收到 WS 后再转发回真正的 MC TCP 服务。

这样:

  • 玩家看到的是 CDN IP
  • 攻击者看到的也是 CDN IP
  • 真实服务器 IP 不暴露

延迟测试

很多人第一反应:

“WebSocket 会不会很卡?”

实际测试结果比预想好很多。


百度 CDN (付费动态加速)

测试使用:

DRCDN 动态加速

实际延迟:

仅增加约 30ms

基本没有明显游玩影响。

正常生存服、小游戏服都完全可玩。


腾讯云 EdgeOne (免费版)

免费版本也能正常使用。

但由于:

  • 无动态加速
  • 路由不稳定
  • 免费线路优先级较低

实际延迟大概:

增加约 50ms ~ 150ms

会有略微卡顿感。

不过:

腾讯云 EO 支持购买动态加速套餐

理论上延迟还能继续下降。


适合什么场景?

非常适合:

  • 小型公益服
  • 容易被打的服务器
  • 国内裸奔服务器
  • 没钱买高防
  • 想隐藏真实 IP

已支持

  • Velocity
  • Paper
  • Proxy Protocol
  • 第三方 MOD 接入

后续准备:

  • 官方 MOD
  • UDP/KCP
  • 多线路
  • 自动节点切换

使用方式

服务端:

MC TCP -> TOH Proxy Server -> CDN

客户端:

本地 MC -> TOH Proxy Client -> CDN -> 服务端

玩家本地连接:

127.0.0.1:3001

即可进入服务器。


题外话

其实 Minecraft 本身挺适合走 CDN 的。

因为:

  • 长连接
  • 带宽低
  • 数据量小
  • 延迟要求没 FPS 那么极端

之前一直没人这么搞,主要是:

TCP 不能直接过 CDN

但套一层 WebSocket 后,问题就解决了。


有兴趣可以一起研究。

欢迎提 issue / PR 。

来源: v2ex查看原文