Skip to content

Minecraft Bedrock Proxy EN

b23r0 edited this page Oct 12, 2026 · 3 revisions

English · 简体中文

Minecraft Bedrock reverse proxy

This project proxies RakNet UDP. It does not convert a NetherNet connection into RakNet. Confirm the transport actually used by both endpoints before deploying.

The library transports application bytes; it does not implement Xbox login or decode the Minecraft game protocol. The backend must explicitly use transport=raknet.

Verified builds

Component Tested value
rust-raknet source 1.0.0
Windows Bedrock client 1.26.52
Bedrock Dedicated Server 1.26.52.3
Minecraft game protocol 2193
RakNet handshake version 11
Checks Join through the proxy, walk, place/break blocks, retrieve MOTD

Game protocol 2193 and RakNet version 11 belong to different layers. This record covers these builds, not every future release.

On October 3, 2026, the transport implementation in 8c06cf4, now included in 1.1.0, also passed manual gameplay checks through both the default proxy (19148) and a proxy with SendOptions::default() applied on both legs (19150), using backend 19146. The user confirmed joining, movement, block placement and block destruction on both paths. This follow-up did not independently repeat the earlier MOTD check.

Configure the backend

Edit server.properties in the isolated BDS data directory, for example:

transport=raknet
server-port=19142
server-portv6=19143
enable-lan-visibility=false

Restart that test server. Check for port conflicts and matching game versions. This changes the server instance; no host network configuration changes are needed.

Configure the proxy announcement

The current proxy example does not automatically copy the backend MOTD. The listener's default older game-version announcement can prevent a newer client from joining. In the task copy of examples/proxy/src/main.rs, add this before listener.listen().await:

listener.set_motd(
    "Rust RakNet Bedrock proxy",
    10,
    "2193",
    "1.26.52",
    "Survival",
    local_address.port(),
).await?;

Use the actual backend protocol, game version, game mode and advertised capacity. Capacity is an announcement field; it does not enforce an active connection limit or automatically track player counts.

Start the proxy

Run in the same isolated network as the backend:

cargo run --release --manifest-path examples/proxy/Cargo.toml -- \
  -l 127.0.0.1:19144 -r 127.0.0.1:19142

First connect directly to 19142, then use the proxy frontend 19144. From another machine, use a reachable proxy address; that client's 127.0.0.1 does not identify the remote server.

Linux supports optional --socket-shards 4; the default is one receive socket. Several frontend shards can be slower when they feed a single upstream socket. --batch-messages enables forwarding already-ready messages through the explicit batch API, defaults to off and never waits to fill a batch. Evaluate throughput and latency before choosing either.

The proxy establishes separate RakNet sessions on each side and uses the frontend client's negotiated RakNet version upstream, with a 10 s upstream handshake timeout. It forwards application messages using ReliableOrdered. It does not preserve original frame reliability/channel metadata, parse the game protocol or rewrite game operations.

Verify the path

  1. Join the backend directly and interact with blocks.
  2. Join through the frontend and repeat those operations.
  3. Check upstream connection and forwarding logs in both directions; confirm the client used the frontend port.
  4. Inspect the announcement with examples/bedrock_ping:
cargo run --manifest-path examples/bedrock_ping/Cargo.toml -- 127.0.0.1:19144

A valid MOTD does not prove login and gameplay work. Handshakes or transport echoes alone do not replace a real game test.

Server discovery

cargo run --manifest-path examples/bedrock_ping/Cargo.toml -- play.example.com:19132

This sends an unconnected RakNet ping and prints the server name, game version, player counts and MOTD. Use the proxy frontend address to inspect its advertisement. Discovery confirms an offline reply; login and gameplay still require the checks above.

RakNet deprecation

The 26.50 changelog records the dedicated server's default transport changing to NetherNet. The 26.52 hotfix changelog corresponds to the tested game version.

The 26.60.22/23 preview notes mark RakNet deprecated and raise the non-default transport warning to an error. The tested 26.52.3 server also printed a NetherNet-only error, but the RakNet configuration passed the game checks above. Those notes do not specify a final removal date. Review the target build's changes and retest before upgrading.

Proxy source · Timeout troubleshooting

Clone this wiki locally