使用 FRP 内网穿透 + Proxy Protocol + HAProxyDetector 实现本地 Minecraft Server 服务器公网连接并获取真实IP地址

Author Avatar
空気浮遊 2022年02月10日
  • 在其它设备中阅读本文章

不难。于是作此总结。

将简要的步骤概括如下。

前置条件

你需要有一台能够运行内网穿透的服务器(VPS 等),其具有独立的公网 IP 或支持 IPv6,能通过 IPv4 或 IPv6 等方式访问,作为此处的 服务端

你需要有一台能够运行在个人内网的服务器,其能够运行 Minecraft JAVA 服务端,作为此处的 客户端

此处服务端与客户端的系统都默认为 Ubuntu 20.04 。

此处 Minecraft 服务端推荐为 Paper。

服务端配置

访问 FRPS 一键安装项目:https://github.com/MvsCode/frps-onekey

国内服务器可以直接使用下方的命令(root 账号):

wget https://code.aliyun.com/MvsCode/frps-onekey/raw/master/install-frps.sh -O ./install-frps.sh
chmod 700 ./install-frps.sh
./install-frps.sh install

一般来说一路默认即可。之后用frps config就能看相关配置,也可以之后再改。

防火墙开放你将要用到的端口。 默认 <ip>:6443 来访问面板。可以查看一些流量数据和服务状态等。

客户端配置

访问 FRPC 一键安装项目:https://github.com/stilleshan/frpc

命令如下(root 账号):

wget https://raw.githubusercontent.com/stilleshan/frpc/master/frpc_linux_install.sh && chmod +x frpc_linux_install.sh && ./frpc_linux_install.sh
# 国内 gitee 镜像
wget https://gitee.com/stilleshan/frpc/raw/master/frpc_linux_install.sh && chmod +x frpc_linux_install.sh && ./frpc_linux_install.sh

之后按照指示修改 frpc.ini:

vi /usr/local/frp/frpc.ini
# 修改 frpc.ini 配置
sudo systemctl restart frpc
# 重启 frpc 服务即可生效

此处给出 frpc.ini 配置范例:

# 服务器地址/端口/token都可在服务端中的frps config找到
[common]
server_addr = www.mc.com 
server_port = 5443
token = your_token

[minecraft_tcp]
type = tcp
local_ip = 127.0.0.1
# 本地端口与远程端口
local_port = 2333
remote_port = 2333
# 启用压缩,会使速度稍微降低(可选)
use_compression = true 
# 启用TLS加密(可选)
tls_enable = true 
# 重点:启用proxy protocol v2!
proxy_protocol_version = v2 

至此 FRP 内网穿透已经配置完成。你可以在服务端的面板上看到服务的运行状况。

最后,访问 HAProxyDetector 项目地址:MCBBSGITHUB

安装此插件。运行 Minecraft 服务器。

你得到了所有访问者的真实 IP 地址!

问题(如果你安装了插件 FastLogin)

截止目前,HAProxyDetector 与 SpigotProxy(不建议)等插件都会与 Fastlogin 插件产生冲突。

Fastlogin 提供了临时解决方案,但其会导致 Authme 等登录插件无法获取到真实 IP。

因此在 Fastlogin 适配 HAProxyDetector 前,需要在 Fastlogin 与真实 IP 之间取舍。

当然如果选择了真实 IP,那么就可以启用 Essential 的 session 功能来避免多次输入密码,同时也能够支持许多需要真实 IP 的其它功能。这里就请各位自行取舍啦。

引用

frp v0.36 使用教程 - 获取用户真实 IP
Pixiv - Axle - 青