Repository navigation
Minecraft Bedrock Proxy
本项目代理 RakNet UDP。Minecraft 使用 NetherNet 时,不能通过这个代理转换成 RakNet。上线前先确认服务端与客户端实际选择的传输。
本库按字节传输应用数据,不实现 Xbox 登录,也不解析 Minecraft 游戏协议。后端需要显式配置 transport=raknet。
| 项目 | 实测值 |
|---|---|
| rust-raknet 源码 | 1.0.0 |
| Windows 基岩客户端 | 1.26.52 |
| Bedrock Dedicated Server | 1.26.52.3 |
| Minecraft 游戏协议 | 2193 |
| RakNet 握手版本 | 11 |
| 验证项目 | 从代理入口进入世界,走动、放置和破坏方块,获得 MOTD |
游戏协议 2193 与 RakNet 版本 11 是不同层的版本号。此记录是上述构建的兼容性实测,不能外推为后续所有版本支持。
2026 年 10 月 3 日,8c06cf4 中的传输实现(现已包含在 1.1.0)还通过了两条路径的手动游戏验证:默认代理 19148,以及前后两端均调用 SendOptions::default() 的策略代理 19150,后端为 19146。用户确认两条路径均可进入世界、走动、放置和破坏方块;这次追加验证没有单独重测此前的 MOTD 项目。
在隔离的 BDS 数据目录中编辑 server.properties,例如:
transport=raknet
server-port=19142
server-portv6=19143
enable-lan-visibility=false重新启动该测试服务端。确保端口没有冲突,客户端和服务端游戏版本匹配。配置修改只作用于服务端实例,不需要修改主机网络设置。
代理示例目前不会自动复制后端 MOTD。默认监听器公告中的旧游戏版本可能导致新客户端无法加入。在隔离代码副本的 examples/proxy/src/main.rs 中,listener.listen().await 之前加入:
listener.set_motd(
"Rust RakNet Bedrock proxy",
10,
"2193",
"1.26.52",
"Survival",
local_address.port(),
).await?;部署时替换为实际后端版本、模式及公告容量。该容量字段只是 MOTD 信息,不会限制活跃连接数,也不会自动统计在线人数。
在同一隔离网络中运行:
cargo run --release --manifest-path examples/proxy/Cargo.toml -- \
-l 127.0.0.1:19144 -r 127.0.0.1:19142客户端先测试直连 19142,再连接代理入口 19144。从其他机器测试时改用它能够访问的代理地址;不要把客户端所在机器的 127.0.0.1 当成远端服务。
Linux 可选 --socket-shards 4,默认一个接收 socket。--batch-messages 使用批量转发,默认关闭。请分别评估吞吐与延迟后选择。
代理两端分别建立 RakNet 会话,上游沿用前端客户端协商的 RakNet 版本,握手超时 10 s。它转发应用消息并以 ReliableOrdered 发送,不保留原始帧的可靠模式/通道元数据,也不解析或重写游戏业务协议。
- 后端直连成功并能操作方块。
- 代理入口成功进入,并重复操作。
- 日志显示上游连接建立、两个方向有转发;确认客户端连的是前端端口。
- 用
examples/bedrock_ping检查公告:
cargo run --manifest-path examples/bedrock_ping/Cargo.toml -- 127.0.0.1:19144MOTD 正确不等于登录和游戏操作成功;只有握手或回显测试也不能替代真实游戏验证。
多个前端接收分片共享单个上游 socket 时,吞吐也可能低于单分片。--batch-messages 只批量转发已经就绪的消息,不等待凑包;选择配置前应测量吞吐和延迟。
cargo run --manifest-path examples/bedrock_ping/Cargo.toml -- play.example.com:19132该命令发送未连接 RakNet ping,打印服务器名称、游戏版本、玩家数量和 MOTD。查看代理公告时使用代理前端地址。发现成功只证明离线回复正常,登录和游戏操作仍需按上述流程验证。
Minecraft 26.50 更新说明 记录了专用服务端转向 NetherNet 的变化。26.52 热修复说明 对应本次验证的游戏版本。
26.60.22/23 预览版说明 将 RakNet 标记为弃用,并提高了非默认传输的告警级别。实测 26.52.3 启动也会输出仅支持 NetherNet 的错误信息,但配置 RakNet 后上述游戏测试仍成功。引用说明没有明确最终移除日期;升级前应查看对应构建的变更并重新测试。
English · 简体中文 · GitHub · crates.io 1.4.0 · Reviewed / 核对:2026-10-12 / b909c93
- Overview
- Quick start
- Blocking calls and shared runtimes
- Public API index
- Five reliability modes
- RakNet wire format and recovery
- Message lifecycle and limits
- Bytes and explicit batching
- Send policy
- Recovery policy and tail probes
- Every configuration parameter
- Concurrency and socket tuning
- Errors, deadlines and cancellation
- Congestion and deployment boundaries
- Benchmark results
- Benchmark methodology
- Benchmark reproduction
- Minecraft Bedrock proxy
- Troubleshooting and development
- Release history and upgrading