在FRP下开BungeeCord跨服服务器返回真实IP

原理

在开MC服务器时,若使用frp,我们通常会使用tcp映射,也就是frpc.ini中的:

type = tcp

在frp原github的readme中明确给出,使用frp时,返回真实ip的方式有两种,分别是HTTP X-Forwarded-For与Proxy Protocol。
而前者只适用于HTTP映射,后者则支持全tcp映射
原readme中是这么给出的:

frp 支持通过 Proxy Protocol 协议来传递经过 frp 代理的请求的真实 IP,此功能支持所有以 TCP 为底层协议的类型,不支持 UDP。
Proxy Protocol 功能启用后,frpc 在和本地服务建立连接后,会先发送一段 Proxy Protocol 的协议内容给本地服务,本地服务通过解析这一内容可以获得访问用户的真实 IP。所以不仅仅是 HTTP 服务,任何的 TCP 服务,只要支持这一协议,都可以获得用户的真实 IP 地址。
需要注意的是,在代理配置中如果要启用此功能,需要本地的服务能够支持 Proxy Protocol 这一协议,目前 nginx 和 haproxy 都能够很好的支持。

事实上,作者还是十分贴心的加入了Proxy Protocol这一功能,BungeeCord可以很好的接受Proxy Protocol的包
在BungeeCord的config.yml中,我们可以在listeners下看到:

listeners:
proxy_protocol: false

而我们只需要把false改为true就可以很完美的让BungeeCord接收Proxy Protocol的包。
而最后剩下的就仅仅是让frpc启用这项发送Proxy Protocol包的功能,根据原Readme中所说:
*这里以 https 类型为例:

# frpc.ini
[web]
type = https
local_port = 443
custom_domains = test.yourdomain.com
# 目前支持 v1 和 v2 两个版本的 proxy protocol 协议。
proxy_protocol_version = v2

只需要在代理配置中增加一行 proxy_protocol_version = v2 即可开启此功能。*
那么如果你的端口是25565,你的MC服务器映射应该是这样的:

# frpc.ini
[mcserver]
type = tcp
local_port = 25565
proxy_protocol_version = v2

至此,BungeeCord配合frpc的Proxy Protocol就可以做到完美的返回玩家真实的IP到服务器上。
这里不一定非要是BungeeCord,只要支持Proxy Protocol的代理都是可以的

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值