6.2 KiB
6.2 KiB
MeshRay 项目完整分析报告
生成时间:2026-04-01 基于代码实际分析,非文档推测
一、项目概述
项目是什么
MeshRay 是一个基于 Web 管理的 WireGuard 组网系统(去中心化 VPN)。
核心功能:
- 通过浏览器管理 WireGuard 虚拟专网
- 支持 9 层传输策略(适应各种网络环境)
- 提供 MeshSeed 邀请凭证(Ed25519 签名)
- 支持 DDNS 动态域名(Cloudflare、腾讯云)
- 增强模式:流量通过 Core Engine 智能调度
技术栈
| 组件 | 技术 |
|---|---|
| 后端 | Go 1.21+ / Gin / GORM |
| 数据库 | SQLite(纯 Go 实现) |
| VPN | WireGuard(用户态 wireguard-go) |
| 前端 | Vue 3 + Element Plus + Tailwind CSS(CDN 方式) |
| 实时通信 | WebSocket |
| 传输协议 | STUN/TURN (pion)、WebRTC (pion)、QUIC |
二、项目结构
MeshRay/
├── cmd/meshray/ # 主程序入口
├── internal/
│ ├── api/ # HTTP API 层
│ │ ├── server.go # Gin 服务器
│ │ ├── handler/ # HTTP Handler
│ │ │ ├── network.go # 网络 CRUD
│ │ │ ├── device.go # 设备 CRUD
│ │ │ ├── dashboard.go # 统计
│ │ │ ├── ddns.go # DDNS
│ │ │ ├── policy.go # 策略
│ │ │ ├── service.go # 服务
│ │ │ ├── ws.go # WebSocket
│ │ │ └── ...
│ │ ├── dto/ # 数据传输对象
│ │ └── middleware/ # 中间件 (JWT/CORS)
│ ├── ctr/ # 控制中心(调度 Core + WG)
│ │ ├── ctr.go # 主调度逻辑
│ │ └── wg.go # WGManager
│ ├── service/ # 业务服务层
│ │ ├── network.go
│ │ ├── device.go
│ │ ├── meshseed.go
│ │ ├── ddns.go
│ │ └── ...
│ ├── store/sqlite/ # SQLite 存储
│ ├── model/ # 数据模型
│ └── config/ # 配置管理
├── core/ # 核心引擎
│ ├── core.go # Core 主入口
│ ├── engine.go # Engine 实例
│ └── connect/ # 9 层传输策略
│ ├── direct.go # Direct-UDP
│ ├── fake_tcp.go # Direct-FakeTCP
│ ├── real_tcp.go # Direct-RealTCP
│ ├── turn.go # TURN 系列
│ ├── turn_quic.go
│ ├── ws.go # WS/WSS
│ ├── stun.go
│ ├── ice.go
│ └── strategy.go # 策略调度器
├── pkg/
│ └── meshseed/ # MeshSeed 凭证
└── web/
├── embed.go # Go embed 打包
└── static/ # 静态文件
├── index.html # SPA 入口
└── js/app.js # Vue3 应用
三、核心功能分析
1. 9 层传输策略
| 层级 | 类型 | 用途 |
|---|---|---|
| 1 | Direct-UDP | 公网/锥型 NAT首选 |
| 2 | Direct-FakeTCP | UDP 被 QoS 限速 |
| 3 | Direct-RealTCP | 仅允许 TCP 出站 |
| 4 | TURN-UDP | 无 P2P 直连,UDP 可通 |
| 5 | TURN-QUIC | UDP 弱网 (4G/5G) |
| 6 | TURN-TCP | UDP 封禁,仅放行 TCP |
| 7 | TURN-TLS | 企业防火墙 DPI |
| 8 | WebRTC | 最严格隔离内网 |
| 9 | WS/WSS | 仅放行 80/443 端口 |
2. Ctr (Control) 调度中心
职责:
- 网络生命周期管理
- Peer 管理
- 模式切换 (native ↔ enhanced)
- Core Engine 集成
3. MeshSeed 凭证
基于 Ed25519 签名的组网邀请凭证,支持:
- 使用次数限制
- 过期时间控制
- DDNS 同步
4. DDNS 动态域名
已支持:
- Cloudflare
- 腾讯云 DNSPod
待支持:
- 阿里云
四、完成情况
后端 ✅ 90%
| 功能 | 状态 |
|---|---|
| 9 层传输策略 | ✅ 完成 |
| WireGuard 用户态管理 | ✅ 完成 |
| Ctr 调度中心 | ✅ 完成 |
| SwitchMode | ✅ 完成 |
| MeshSeed 凭证 | ✅ 完成 |
| DDNS (Cloudflare/腾讯云) | ✅ 完成 |
| JWT 认证 | ✅ 完成 |
| WebSocket 通知 | ✅ 完成 |
| 备份恢复 | ✅ 完成 |
| 系统托盘 | ✅ 完成 |
| UpdateCoreConfig | 🔧 已定义(返回 error) |
前端 ⚠️ 50%
| 页面 | 状态 |
|---|---|
| 登录页 | ✅ 完成 |
| 仪表盘 | ✅ 基本完成 |
| 组网管理 | ✅ 完成 |
| 设备管理 | ❌ 待完成 |
| 服务管理 | ❌ 待完成 |
| 系统设置 | ❌ 待完成 |
五、API 清单
网络 API
GET /api/v1/networks- 列表POST /api/v1/networks- 创建GET /api/v1/networks/:id- 详情PUT /api/v1/networks/:id- 更新DELETE /api/v1/networks/:id- 删除POST /api/v1/networks/:id/mesh-seed- 生成 MeshSeed
设备 API
GET /api/v1/devices- 列表POST /api/v1/devices- 创建GET /api/v1/devices/:id- 详情PUT /api/v1/devices/:id- 更新DELETE /api/v1/devices/:id- 删除GET /api/v1/devices/:id/config- 生成 WireGuard 配置
服务 API
GET /api/v1/services- 列表POST /api/v1/services- 创建PUT /api/v1/services/:id- 更新DELETE /api/v1/services/:id- 删除
DDNS API
GET /api/v1/ddns/config- 获取配置PUT /api/v1/ddns/config- 更新配置POST /api/v1/ddns/sync- 手动同步GET /api/v1/ddns/stats- 统计
策略 API
GET /api/v1/policies- 列表PUT /api/v1/policies/:id- 更新
其他 API
GET /api/v1/dashboard/stats- 统计GET /api/v1/settings- 设置PUT /api/v1/settings- 更新设置
六、配置文件
server:
port: 9531
mode: release
database:
type: sqlite
path: ./data/meshray.db
jwt:
secret: (自动生成)
access_token_duration: 2h
refresh_token_duration: 7d
stun:
default_servers:
- stun:stun.qq.com:3478
- stun:stun.l.google.com:19302
turn:
default_servers: []
七、结论
MeshRay 是一个功能架构完整的项目,核心功能都已实现。前端采用纯静态 CDN 方式,无需 npm/vite,工程简洁。
待完成:
- 设备管理页面
- 服务管理页面
- 系统设置页面