---
title: 使用 Velocity 进行代理
description: 使用 Velocity 进行代理搭建跨服端
lastUpdated: 2026-01-12
---
Velocity 代理可以让玩家通过此代理连接到后端服务器,从而隐藏后端服务器的真实IP,同时 Velocity 还可以用来搭建跨服端,因为从 Velocity 连接的玩家可以通过输入命令随意在 Velocity 连接的后端服务器中切换。
## 安装 Java
Velocity 是用 Java 编写的,所以如果你还没安装 Java,就需要安装 在你继续之前。velocity 至少需要 Java 17,但21或更高时效果最佳。
## 初始化 Velocity
前往 **[PaperMC 官网](https://papermc.io/software/velocity/)** 下载 Velocity
将其放入一个空文件夹,在终端运行以下命令来启动 Velocity
```bash
java -jar velocity-x.x.x.jar
```
:::tip
确保把 `velocity-x.x.x.jar` 改为了你下载的 Velocity JAR 文件的名称。
:::
这将首次启动 Velocity 并生成配置文件 `velocity.toml`
以下是启动 `velocity` 后您将看到的输出:
```bash
[05:41:13 INFO]: Booting up Velocity 3.4.0-SNAPSHOT (git-74c932e5-b363)...
[05:41:13 INFO]: Loading localizations...
[05:41:13 INFO]: Connections will use epoll channels, libdeflate (Linux aarch64) compression, OpenSSL (Linux aarch64) ciphers
[05:41:13 INFO]: Loading plugins...
[05:41:13 INFO]: Loaded 0 plugins
[05:41:13 INFO]: Listening on /[0:0:0:0:0:0:0:0%0]:25565
[05:41:13 INFO]: Done (0.36s)!
```
此时关闭它,修改配置文件,键入以下命令以关闭 Velocity :
```bash
end
```
关闭会出现以下输出:
```bash
[05:42:10 INFO]: Shutting down the proxy...
[05:42:10 INFO]: Closing endpoint /0.0.0.0:25565
```
## 配置Velocity
现在我们需要配置每台服务器接受来自代理的连接。
Velocity 是一个高度可配置的代理。虽然大多数用户不需要更改所有内容 配置,配置参考页面上有大量选项,还有详细说明 每种选项的运作方式。
编辑 `velocity.toml` 文件,以下是每个选项的作用
### 常规模块
```toml
config-version = "2.7"
#配置文件版本,不要修改这个选项!
bind = "0.0.0.0:25565"
#绑定端口,默认25565,玩家将通过此端口连接Velocity并进行代理转发
motd = A Velocity Server
#服务器副标题
online-mode = true
#是否启用在线模式。
force-key-authentication = true
#强制客户端使用 Minecraft 1.19+ 的公钥身份验证(增强安全性)
prevent-client-proxy-connections = false
#是否阻止通过 **VPN/代理** 连接的玩家(可能会误伤)
player-info-forwarding-mode = "NONE"
#玩家远程信息转发模式, 有 `NONE` / `LEGASY` / `BUNGEEGUARD` / `MODERN` 四种,详见 **[配置玩家信息转发](#配置玩家信息转发)**
forwarding-secret-file = "forwarding.secret"
#远程密钥文件路径,默认位于 Velocity 根目录的 forwarding.secret
announce-forge = false
#支持Forge系,如 Neoforge/Forge,若后端服务器为 Forge 系,在保证此项打开的前提下应该在后端服务器安装 **[proxy-compatible-forge](https://modrinth.com/mod/proxy-compatible-forge)** 这个 Mod
kick-existing-players = false
#如果开启(默认是关闭),并且代理处于在线模式,Velocity 将会在重复连接尝试时踢出任何已在线的玩家。
ping-passthrough = "DISABLED"
#收到Ping请求时查询后端服务器的模式,有 `disabled`/`mods`/`description`/`all` 四种模式
sample-players-in-ping = false
#是否响应Ping请求时包含玩家列表
enable-player-address-logging = true
#是否记录玩家真实IP地址
```
### [servers] 模块
在此模块中配置你的**后端 Minecraft 服务器列表**。每个条目包含一个自定义名称和对应的 IP 地址及端口。
```toml
[servers]
# Configure your servers here. Each key represents the server's name, and the value
# represents the IP address of the server to connect to.
lobby = "127.0.0.1:30066"
factions = "127.0.0.1:30067"
minigames = "127.0.0.1:30068"
```
这是配置文件的默认示例,配置如此,就会以以上三个服务器为后端服务器,等号前为服务器名称,你可以自定义修改它,等号后为服务器地址。
在 `try = [ "" ]` 填写服务器名称作为登入服务器,玩家在使用 Velocity 连接时登入的默认服务器,可填写多个,在第前者连接失败后将尝试第后者,填写一个则在此服务器登入失败后断开连接。
```toml
# In what order we should try servers when a player logs in or is kicked from a server.
try = [
"lobby" #进入服务器将尝试连接服务器列表中名为 lobby 的服务器
]
```
### [forced-hosts] 模块
在此处配置你的强制主机,当玩家使用域名连接时,不同的域名可以被分配至不同的服务器,默认示例:
```toml
[forced-hosts]
# Configure your forced hosts here.
"lobby.example.com" = [
"lobby"
]
"factions.example.com" = [
"factions"
]
"minigames.example.com" = [
"minigames"
]
```
### [advanced] 模块
在此处配置高级设置
```toml
compression-threshold = 256
#数据包必须有多大,我们才会压缩它。将其设置为零将压缩所有数据包,将其设置为 -1 将完全禁用压缩
compression-level = -1
#应该进行多少压缩 (从 0-9),默认是 -1。
login-ratelimit = 3000
#客户端在上次连接后允许多快连接 (以毫秒为单位)?默认是三秒。通过将其设置为 0 来禁用此功能。
connection-timeout = 5000
#在此处指定连接超时的自定义超时时间。默认是五秒。
read-timeout = 30000
#在此处指定连接的读取超时时间。默认是 30 秒。
haproxy-protocol = false
#我也不知道这是啥
tcp-fast-open = false
#在代理上启用 TCP 快速打开支持。需要代理在 Linux 上运行。
bungee-plugin-message-channel = true
#在 Velocity 上启用 BungeeCord 插件消息通道支持。
show-ping-requests = false
#显示来自客户端的 ping 请求到代理。
failover-on-unexpected-server-disconnect = true
#还是不知道(
announce-proxy-commands = true
#向 1.13+客户端声明代理命令。
log-command-executions = false
#启用命令的日志记录。
log-player-connections = true
#启用记录玩家连接到代理,切换服务器以及从代理断开连接的日志。
accepts-transfers = false
#允许通过 Transfer 数据包 (Minecraft 1.20.5) 从其他主机传输的玩家被接收。
enable-reuse-port = false
command-rate-limit = 50
#命令速率限制,默认为0.05s
forward-commands-if-rate-limited = true
kick-after-rate-limited-commands = 0
tab-complete-rate-limit = 10
kick-after-rate-limited-tab-completes = 0
```
### [query] 模块
```toml
enabled = false
#是否启用对 GameSpy 4 查询响应的响应。
port = 25577
#如果查询已启用,查询协议应该在哪个端口上监听?
map = "Velocity-CTD"
#这是向查询服务报告的名称。
show-plugins = false
#默认情况下是否应该在查询响应中显示插件。
```
## 配置玩家信息转发(可选)
|选项|详解|
|---|---|
|NONE|不进行转发|
|LEGASYBungeeCord|转发|
|BUNGEEGUARD|和BungeeCord(LEGASY)转发一样,但包含一个密钥。|
|MODERN|Velocity 原生格式,它高效地转发所有玩家信息。|
MODERN 转发更高效,安全,以在 Velocity 配置 MODERN 转发为例
在 `velocity.toml` 文件中的 `player-info-forwarding-mode` 处配置玩家信息转发。
设置为 `player-info-forwarding-mode = "MODERN"`
在 Velocity 根目录,即 velocity jar 文件所在的文件夹存在一个 `forwarding.secret` 文件,其中存放着远程密钥,以对后端服务器进行验证,可以修改此文件来修改密钥。
例如此处修改为 `REoxygen`
接下来配置后端服务器
### 配置 Paper/Folis/Leavea 的 MODREN 玩家信息转发模式
:::tip
保证根目录下 `spigot.yml` 文件中的 `bungeecord` 选项为 `false`,否则无法进行 MODERN 转发,如果你没有对此项进行修改,则不需要额外修改此项。
:::
在 Paper 服务端根目录中存在 config/paper-global.yml 文件,修改此文件,找到以下部分并修改。
```yml
proxies:
bungee-cord:
online-mode: true
proxy-protocol: false
velocity:
enabled: true
#是否启用 MODERN 转发。
online-mode: true
#是否启用在线模式,应与 `velocity.yoml` 文件内的选择保持一致。
secret: 'REoxygen'
#远程密钥,与 `forwarding.secret` 文件中内容保持一致。
```
**仅需修改 Velocity 以下的选项即可**
:::tip
使用 MODERN 转发模式时,如需开启在线模式请在 Velocity 中启用它,并关闭后端服务器中 `server.properties` 文件中的在线模式选项,让 Velocity 进行正版验证并转发玩家信息。
:::
### 配置 Forge/NeoForge 的 MODERN 玩家信息转发模式
在 Forge 服务端中安装 **[Proxy-Compatible-Forge](https://modrinth.com/mod/proxy-compatible-forge)** 模组,并运行服务端,生成配置文件,配置文件位于服务端根目录下 config/proxy-compatible-forge.toml 文件中找到以下内容并修改它。
```toml
#Player Info Forwarding Settings
[forwarding]
#Enable or disable player info forwarding. Changing this setting requires a server restart.
enabled = true
#是否启用 MODERN 玩家信息转发
#The type of forwarding to use
#Allowed Values: MODERN
mode = "MODERN" #玩家信息转发类型
#The forwarding secret shared with the proxy
secret = "" #密钥,与 `forwarding.secret` 内容保持一致。
#A list of approved proxy hostnames or IP addresses. If the connecting proxy's hostname or IP isn't in this list, the player will be disconnected. Leave empty to allow all.
approvedProxyHosts = []
```
- 修改 `player-info-forwarding-mode` 的选项为 `MODERN`。
- 修改 `secret` 选项与 `forwarding.secret` 内容保持一致。
:::tip
再次提醒,使用 MODERN 转发模式时,如需开启在线模式请在 Velocity 中启用它,并关闭后端服务器中 `server.properties` 文件中的在线模式选项,让 Velocity 进行正版验证并转发玩家信息。
:::
重启Fabric服务端即可
### 配置 Fabric 的 MODERN 玩家信息转发模式
在 Fabric 服务端中安装 **[FabricProxy-Lite](https://modrinth.com/mod/fabricproxy-lite)** 模组,并运行服务端,生成配置文件,配置文件位于服务端根目录下 `config/FabricProxy-Lite.toml` 找到并修改它。
```toml
hackOnlineMode = true
#在线模式,应与 `velocity.toml` 保持一致
hackEarlySend = false
hackMessageChain = false
disconnectMessage = "This server requires you to connect with Velocity."
secret = "REoxygen"
#密钥,应与 `forwarding.secret` 内容保持一致。
```
- 修改 `secret` 选项与 `forwarding.secret` 内容保持一致。
:::tip
再再次提醒,使用 MODERN 转发模式时,如需开启在线模式请在 Velocity 中启用它,并关闭后端服务器中 `server.properties` 文件中的在线模式选项,让 Velocity 进行正版验证并转发玩家信息。
:::
## 通过 Velocity 连接至后端服务器
配置完 Velocity 和后端服务器就可以运行前后端所有服务器了,如果配置了玩家信息转发,则只能通过 Velocity 代理连接到后端服务器,这提高了后端服务器的安全性,可以做到隐藏后端服务器的真实IP。
接下来通过 Velocity 连接到后端服务器
在多人游戏中输入 Velocity 的IP地址和端口:`IP地址:端口号`
Velocity 会将你连接到登入服务器中,你可以通过 `/server 服务器名称` 命令来直接连接到 Velocity 代理的其他后端服务器,`/server` 命令可以直接查看服务器列表。
此命令权限默认对所有玩家开放,你可以使用 [**LuckPerms**](https://luckperms.net/) 管理 Velocity 的命令权限。
:::tip
若管理 Velocity 命令的权限,则需要将 **LuckPerms** 插件的 Velocity 版本放入 Velocity 的插件文件夹中才能起到管理从 Velocity 代理连接的玩家使用 Velocity 相关命令的作用。
:::
关于 **LuckPerms** 详见 [**使用LuckPerms管理玩家权限**](../1-3)
***