• 欢迎加入MineBBS QQ讨论群:点击查看所有的官方讨论群
  • 我们将于近期对服务器进行迁移,服务可能中断至多2日。请各位安排好自己的访问计划,造成不便敬请谅解!
  • MineBBS入站考试已经上线!想要成为【正式会员】解锁更多功能吗?快来参与吧!【点我去看】
资源图标

二次开发 开源 工具 其他 MaoProxy - 允许服务器同时接受来自 HAProxy(代理协议)和直连的客户端连接 1.0.0

完成注册/登录后下载
版权类型
二次开发
插件中文名称
猫的代理
插件英文名称
MaoProxy
原帖地址
https://www.minebbs.com/resources/haproxy-detector-ip-ip.9111/
支持的核心(代理-服务端)
  1. Bungee
  2. Velocity
  3. PaperSpigot
  4. Purpur
  5. Leaves
语言支持
English
适配版本(Java)
  1. 1.21

插件概述​

MaoProxy 是一款专为 Minecraft 服务器设计的插件,允许服务器同时接受来自 HAProxy(代理协议)和直连的客户端连接。通过 IP 白名单机制,确保只有受信任的代理服务器可以传递真实的客户端 IP 地址。

支持平台​

平台版本要求额外依赖
Paper1.21+ProtocolLib 5.x
BungeeCord1.21+
Velocity3.4+
Java 要求:17 或更高版本

功能特点​

主要功能​

  • 支持混合连接模式:同时处理 HAProxy 代理连接和直接连接
  • IP 白名单保护:防止恶意伪造客户端 IP
  • 自动协议检测:自动识别代理协议头
  • 透明化处理:对普通直连用户无影响

工作原理​

客户端 ──► HAProxy ──► MaoProxy ──► Minecraft 服务端

检测是否为代理协议头

┌────┴────┐
是│ │否
▼ ▼
检查来源 IP 正常连接
是否在白名单

┌───┴───┐
是│ │否
▼ ▼
替换为真实 断开连接
客户端 IP 并记录警告

安装步骤​

  1. 将 maoproxy-1.0.0.jar 放入服务端的 plugins/ 目录
  2. Paper 服务器:还需安装 ProtocolLib 5.x
  3. 启动服务器,插件会在 plugins/MaoProxy/ 目录下自动生成 whitelist.conf

平台配置​

Paper​

无需额外配置,代理协议检测由 ProtocolLib 自动处理。

BungeeCord​

在 config.yml 中为对应监听器启用代理协议:
YAML:
listeners:
  - host: 0.0.0.0:25577
    proxy_protocol: true
    # ... 其他配置

Velocity​

在 velocity.toml 中启用代理协议支持:
YAML:
[advanced]
haproxy-protocol = true

白名单配置​

默认配置​

插件启动后会自动生成 whitelist.conf,默认内容:
YAML:
# List of allowed proxy IPs
127.0.0.0/8
::1/128
格式示例说明
单个 IPv4192.168.1.1精确匹配
单个 IPv6::1精确匹配
IPv4 CIDR10.0.0.0/8匹配整个网段
IPv6 CIDRfc00::/7匹配整个网段
域名proxy.example.com启动时解析所有 A/AAAA 记录

注意事项​

  • 每行一条规则
  • # 开头为注释
  • 空行会被忽略
  • 域名只在启动时解析一次,后续不会重新解析

安全警告​

禁用白名单:如需禁用白名单(极度危险),在 whitelist.conf 文件开头添加以下行:
YesIReallyWantToDisableWhitelistItsExtremelyDangerousButIKnowWhatIAmDoing
⚠️ 警告:禁用白名单极其危险,任何人都可以伪造客户端 IP,请勿在生产环境使用。

常见问题解答​

Q: 启动时提示 "Proxy protocol is not enabled"
  • BungeeCord:检查 config.yml 中对应监听器的 proxy_protocol: true
  • Velocity:检查 velocity.toml 中 haproxy-protocol = true
Q: 客户端连接被断开,日志显示 IP 不在白名单
A: 将代理服务器的 IP 添加到 whitelist.conf,然后重启服务器
Q: 域名解析只在启动时进行一次
A: 是的,域名在插件启动时解析,之后不会重新解析。如果代理 IP 发生变化,需要重启服务器
Q: Paper 服务器需要 ProtocolLib,但 ProtocolLib 未启用
A: 确保 ProtocolLib 5.x 已正确安装,且版本与 Minecraft 服务端版本兼容
  • 喜欢
反馈: Keory
后退
顶部 底部