使用 FRP 内网穿透 + Proxy Protocol + HAProxyDetector 实现本地 Minecraft Server 服务器公网连接并获取真实IP地址
- 在其它设备中阅读本文章
不难。于是作此总结。
将简要的步骤概括如下。
前置条件
你需要有一台能够运行内网穿透的服务器(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 项目地址:MCBBS 或 GITHUB
安装此插件。运行 Minecraft 服务器。
你得到了所有访问者的真实 IP 地址!
问题(如果你安装了插件 FastLogin)
截止目前,HAProxyDetector 与 SpigotProxy(不建议)等插件都会与 Fastlogin 插件产生冲突。
Fastlogin 提供了临时解决方案,但其会导致 Authme 等登录插件无法获取到真实 IP。
因此在 Fastlogin 适配 HAProxyDetector 前,需要在 Fastlogin 与真实 IP 之间取舍。
当然如果选择了真实 IP,那么就可以启用 Essential 的 session 功能来避免多次输入密码,同时也能够支持许多需要真实 IP 的其它功能。这里就请各位自行取舍啦。
引用
frp v0.36 使用教程 - 获取用户真实 IP
Pixiv - Axle - 青
本文链接:https://pst.iorinn.moe/archives/mc-frp.html
许可: https://pst.iorinn.moe/license.html若无特别说明,博客内的文章默认将采用 CC BY 4.0 许可协议 进行许可☆