- 版权类型
- 二次开发
- 插件中文名称
- 猫的代理
- 插件英文名称
- MaoProxy
- 支持的核心(代理-服务端)
- Bungee
- Velocity
- PaperSpigot
- Purpur
- Leaves
- 语言支持
- English
- 适配版本(Java)
- 1.21
插件概述
MaoProxy 是一款专为 Minecraft 服务器设计的插件,允许服务器同时接受来自 HAProxy(代理协议)和直连的客户端连接。通过 IP 白名单机制,确保只有受信任的代理服务器可以传递真实的客户端 IP 地址。支持平台
| 平台 | 版本要求 | 额外依赖 |
| Paper | 1.21+ | ProtocolLib 5.x |
| BungeeCord | 1.21+ | 无 |
| Velocity | 3.4+ | 无 |
功能特点
主要功能
- 支持混合连接模式:同时处理 HAProxy 代理连接和直接连接
- IP 白名单保护:防止恶意伪造客户端 IP
- 自动协议检测:自动识别代理协议头
- 透明化处理:对普通直连用户无影响
工作原理
客户端 ──► HAProxy ──► MaoProxy ──► Minecraft 服务端│
检测是否为代理协议头
│
┌────┴────┐
是│ │否
▼ ▼
检查来源 IP 正常连接
是否在白名单
│
┌───┴───┐
是│ │否
▼ ▼
替换为真实 断开连接
客户端 IP 并记录警告
安装步骤
- 将 maoproxy-1.0.0.jar 放入服务端的 plugins/ 目录
- Paper 服务器:还需安装 ProtocolLib 5.x
- 启动服务器,插件会在 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
| 格式 | 示例 | 说明 |
|---|---|---|
| 单个 IPv4 | 192.168.1.1 | 精确匹配 |
| 单个 IPv6 | ::1 | 精确匹配 |
| IPv4 CIDR | 10.0.0.0/8 | 匹配整个网段 |
| IPv6 CIDR | fc00::/7 | 匹配整个网段 |
| 域名 | proxy.example.com | 启动时解析所有 A/AAAA 记录 |
注意事项
- 每行一条规则
- # 开头为注释
- 空行会被忽略
- 域名只在启动时解析一次,后续不会重新解析
安全警告
禁用白名单:如需禁用白名单(极度危险),在 whitelist.conf 文件开头添加以下行:YesIReallyWantToDisableWhitelistItsExtremelyDangerousButIKnowWhatIAmDoing
常见问题解答
Q: 启动时提示 "Proxy protocol is not enabled"- BungeeCord:检查 config.yml 中对应监听器的 proxy_protocol: true
- Velocity:检查 velocity.toml 中 haproxy-protocol = true
A: 将代理服务器的 IP 添加到 whitelist.conf,然后重启服务器
Q: 域名解析只在启动时进行一次
A: 是的,域名在插件启动时解析,之后不会重新解析。如果代理 IP 发生变化,需要重启服务器
Q: Paper 服务器需要 ProtocolLib,但 ProtocolLib 未启用
A: 确保 ProtocolLib 5.x 已正确安装,且版本与 Minecraft 服务端版本兼容