[2025.10.05] 内网穿透后让 Velocity 获取玩家真实 IP 的方法
> 本帖转载于 (https://miro.arcomua.net/2025/09/13/velocity-use-haproxy/)
>也是基于我实际应用总结出来的,部分内容有删改
由于本土运营商对公网 IP 管控十分严格,有不少 Minecraft 服主会选择使用内网穿透服务来开设服务器。
但是以这种网络结构开设的服务器有一个问题,服务端无法拿到玩家的真实 IP(内网穿透会导致玩家的 IP 都变成 ```127.0.0.1```)。
这会导致部分涉及处理玩家 IP 的功能完全无法使用,比如某些管理插件提供的 ```/banip``` IP 封禁功能,因为所有玩家的 IP 都是一样的,执行这个指令后会导致所有玩家都会被封禁。
本文将为有这类困扰的服主提供解决方案。
# Case:1 纯代理线路入服
## 配置 frpc
在 frpc 配置文件中添加下面一行:
```
# .\frpc.toml
[]
... # 省略隧道的其他信息,不要复制这一行
transport.proxyProtocolVersion = "v2" # 在已有隧道添加这一行即可
```
修改完需要重启 frpc 后才会生效。
## 配置 velocity.toml
在 Velocity 的配置文件中,启用如下配置项。
```
# .\velocity.toml
haproxy-protocol = true
```
重启 Velocity 后,配置项即生效。
# Case:2 直连与代理并用
经过 Case:1 对服务器进行设置后,你会发现直连线路无法访问。为了解决这个问题,我们需要请出接下来的妙妙工具。
(https://github.com/Wuchang325/HAProxyReduce),是 (https://github.com/andylizi/haproxy-detector) 的替代品,支持 Paper/Folia/Velocity。
把它放进 Velocity 工作目录下的 plugins 文件夹就行了。
安装好插件后,先启动一下 Velocity,让插件把默认配置文件吐出来,然后关掉代理端,我们需要调整一下插件配置。
进入 ```/plugins/haproxy-reduce```,打开 ```whitelist.conf```。
```
# ./whitelist.conf
127.0.0.0/8 # 默认配置
::1/128 # 默认配置
example.com # 在这里写上玩家连接服务器要用的那个域名就行了,不用写端口号,没域名就写 IP 地址
```
# 其他类型的服务端开启 HAproxy 的方法
如果你使用的是 Spigot,请继续使用 (https://github.com/andylizi/haproxy-detector),你可以在这里找到中文的[使用方法](https://archives.mcbbs.co/read.php?tid=1111852)。
如果你正在使用较新的 Paper及其分支或 Velocity,换成(https://github.com/Wuchang325/HAProxyReduce)。
页:
[1]