使用 CDN 来保护 MC 服务器/tcp over websocket

5 月 23 日
 wefgonujnopu

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

最近写了个项目:TOH Proxy

项目地址:

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

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

简单来说:

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

而不是:

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

为什么这么做?

传统 MC 服务器:

但 WebSocket 属于 HTTP 体系。

也就是说:

理论上都能代理。

于是就能做到:

TCP -> WebSocket -> CDN 加速

让 MC 流量走 CDN 节点。


特性


原理

服务端监听:

ws://your-domain/mc

客户端:

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

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

这样:


延迟测试

很多人第一反应:

“WebSocket 会不会很卡?”

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


百度 CDN (付费动态加速)

测试使用:

DRCDN 动态加速

实际延迟:

仅增加约 30ms

基本没有明显游玩影响。

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


腾讯云 EdgeOne (免费版)

免费版本也能正常使用。

但由于:

实际延迟大概:

增加约 50ms ~ 150ms

会有略微卡顿感。

不过:

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

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


适合什么场景?

非常适合:


已支持

后续准备:


使用方式

服务端:

MC TCP -> TOH Proxy Server -> CDN

客户端:

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

玩家本地连接:

127.0.0.1:3001

即可进入服务器。


题外话

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

因为:

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

TCP 不能直接过 CDN

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


有兴趣可以一起研究。

欢迎提 issue / PR 。

1551 次点击
所在节点    分享创造
2 条回复
aklllw
5 月 24 日
感觉挺不错的
xiliuya
5 月 24 日
国产 cdn 延迟虽然解决了,安全性就很难说了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1214959

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX