Frp | 内网穿透让Velocity获取到玩家真实IP方法

在使用 frp 或类似内网穿透工具时,默认情况下后端服务获取到的客户端 IP 往往是代理服务器(frps)的地址。若需要获取访问者的真实 IP,可以通过以下方式实现。
配置 frpc.toml
在frpc.toml配置文件中添加这一行:
[[隧道名称]]
... # 省略隧道的其他信息
transport.proxyProtocolVersion = "v2" # 在已有隧道添加这一行即可
修改完需要重启 frpc 后才会生效。
如果你使用的是 SakuraFrp(比如我),可以看此处的文档。
配置 velocity.toml
在velocity.toml配置文件中,启用该配置项。
haproxy-protocol = true
重启 Velocity 后,配置项即可生效。
直连与代理并用
开启HAproxy后,你会发现无法通过IP直连访问。
下载HAProxyReduce插件。
安装好插件后,先启动Velocity,让插件生成默认配置文件,然后关掉Velocity,我们需要调整一下插件配置。进入 /plugins/haproxy-reduce,编辑 whitelist.conf:
127.0.0.0/8 # 默认配置
::1/128 # 默认配置
example.com # 在这里写上玩家连接服务器要用的那个域名就行了,不用写端口号,没域名就写 IP 地址
其他的核心开启 HAproxy 方法
参考@SakuraFrp/bestpractice/realip.html#proxy-protocol-minecraft。
本文参考@arcomua/velocity-use-haproxy这篇教程结合自己经验写的。