Transfer 跨服搭建
什么是 Transfer?
Transfer 是 Minecraft 1.20.5 版本引入的原生跨服功能,与传统代理端不同,它采用去中心化架构,服务器之间直接传送玩家。
版本要求
- 服务端:Minecraft 1.20.5+ (Vanilla/Paper/Spigot/Purpur)
- 客户端:Minecraft Java Edition 1.20.5+
- 不支持:基岩版、1.20.5以下版本
核心配置
启用 Transfer 功能
在所有服务器的 server.properties 中添加:
# 启用 Transfer 功能(关键配置)
accepts-transfers=true
# 每个服务器使用不同端口
server-port=25565
# 所有服务器的验证模式必须一致
online-mode=false
网络配置要求
重要:网络访问要求
Transfer 要求所有服务器都能被客户端直接访问:
Transfer 的安全问题
重要安全警告
Transfer 没有内置的安全机制,与传统代理端不同:
- 玩家可以直接连接任何服务器,绕过登录验证
- 缺乏统一的身份验证和权限管理
- 在离线模式下存在身份冒充风险
解决方案
方案一:启用正版验证
所有服务器设置 online-mode=true
方案二:OnlyTransfer 插件
专门解决 Transfer 安全问题的插件:
主要功能:
- 阻止玩家直接连接非登录服
- 基于令牌验证服务器间传送
- 白名单控制允许的服务器
版本要求: Spigot/Paper 1.21.4+
基础配置:
# 是否允许通过服务器列表直接进入服务器
# 如果为 true,则该服务器被允许直接通过客户端进入,否则将仅允许 transfer
# 如果不是主城或者登录服,不建议打开该选项,否则安全性降低
allow-server-list: true
# 跨服传送的令牌,两台服务器必须配置相同的令牌
# 类似于 Velocity 的`forward.secret`
# 但貌似只有被传送的对象服务器才会检查这个
transfer-token: "your-secure-random-token"
# 允许的服务器IP和端口
# 不在该列表里的服务器不被允许跳转
# 如果是公共服务器,请确保所有子服均暴露在公网下
allowed-servers:
- "your-server-ip:25566"
- "your-server-ip:25567"
# 游戏服:禁止直接进入
allow-server-list: false
transfer-token: "your-secure-random-token" # 相同令牌
allowed-servers:
- "your-server-ip:25565" # 登录服
安全令牌生成
# 生成32位随机令牌
openssl rand -base64 32
与 Velocity 混合使用
Velocity 支持接收 Transfer 传送,可以实现混合架构:
# velocity.toml
accepts-transfers = true
混合架构示例:
独立服务器 --Transfer--> Velocity ---> 子服务器群组
兼容性问题
OnlyTransfer 插件与 Velocity 的 Transfer 支持存在部分兼容性问题,建议在测试环境中验证。