Minecraft
Geyser 互通服
用 Geyser 让基岩版玩家加入 Java 版服务器,NetherNet 传输的隧道与配置
本教程适用于 Minecraft Java Edition(国际版)的独立服务器与衍生版本(如 Paper / Forge / Fabric 等),搭配 Geyser 使用。
一、Geyser 是什么
Geyser 是运行在 Java 版服务端旁边的翻译层:
- 基岩版玩家连的是 Geyser,Geyser 把数据转成 Java 版协议后再发给服务端
- Java 版玩家直接连服务端,不经过 Geyser
本教程假设您已经按 Java 版独立服务器 把服务端跑起来了。
二、为什么需要两条隧道
NetherNet 把一次连接拆成两步:
| 步骤 | 作用 | 协议 |
|---|---|---|
| 信令 | 客户端先问「这个服务器要怎么连」 | TCP,HTTP(S) |
| 游戏 | 按信令给出的地址建立连接 | UDP,WebRTC |
所以 Geyser 需要对外开放两个端口,一个 TCP 给信令,一个 UDP 给游戏。两者端口号不需要相同:客户端只填写信令的地址,游戏地址由信令下发。
三、修改 Geyser 配置
打开 config.yml,把 bedrock 段改为:
bedrock:
address: 0.0.0.0
port: 19132
webrtc-port: 0
transport: nethernet
signaling:
mode: builtin
advertise-addresses: ['cn-frp-1.qwq.fan:14514']
| 项 | 说明 |
|---|---|
address | 必须是 0.0.0.0,NetherNet 不接受 127.0.0.1 这类回环地址 |
port | 本地监听端口,信令(TCP)与游戏(UDP)都用它 |
webrtc-port | 填 0 表示跟随 port |
transport | nethernet |
signaling.mode | builtin,由 Geyser 自己运行信令 |
advertise-addresses | 信令告诉客户端去连的地址,填节点域名 + UDP 隧道的远程端口;域名解析不了时信令不会启动 |
stun-discovery 只在 advertise-addresses 为空时才生效,填了地址就不用管它。改完重启 Geyser。
四、创建两条隧道
4.1 信令隧道
| 字段 | 填写 |
|---|---|
| 隧道类型 | HTTPS |
| 本地 IP | 127.0.0.1 |
| 本地端口 | 19132 |
| 域名 | 绑定自己的域名,例如 mc.example.com |
| AutoTLS | 开启 |
HTTPS 隧道必须使用客户端信任的证书。自签名证书会被 Minecraft 拒绝并回落到 HTTP,玩家照样会看到「是否信任此服务器」的提示,所以这里用 AutoTLS。
4.2 游戏隧道
| 字段 | 填写 |
|---|---|
| 隧道类型 | UDP |
| 本地 IP | 127.0.0.1 |
| 本地端口 | 19132 |
| 远程端口 | 任意,例如 14514 |
记下这个远程端口,它就是 advertise-addresses 里写的端口。
五、让玩家加入
- 打开基岩版,进入
服务器页面,点击添加服务器 - 服务器名称自行填写,服务器地址填
mc.example.com,端口填443 - 点击
保存并加入
地址要填域名,不要填 IP,否则一定会弹出「是否信任此服务器」的提示。
六、回源 Java 的真实 IP
Geyser 连 Java 服务端时同样会把访客地址换成自己的地址。需要真实 IP 时,在 Geyser 的 config.yml 中打开:
advanced:
java:
use-haproxy-protocol: true
Java 侧要同步开启:Paper 改 paper-global.yml,Velocity 改 velocity.toml,BungeeCord 改 config.yml,具体写法见 Java 版独立服务器 与 PROXY protocol。
七、常见问题
服务器列表能看到,但进不去
先确认 UDP 隧道已经启动,再核对 advertise-addresses 里的端口与 UDP 隧道的远程端口是否一致。
进服时提示「是否信任此服务器」
说明信令没有走 HTTPS,检查信令隧道是否绑定了域名并开启了 AutoTLS,以及玩家填写的是不是域名。
八、旧版
基岩版 26.60 起官方客户端改用 NetherNet,旧版客户端与服务端的配置见 旧版基岩版(RakNet) 与 旧版 Geyser(RakNet)。