--- 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)


***
--- 由 柏茯灵_RsDline 编写 ---
***