Initial commit
This commit is contained in:
@@ -0,0 +1,238 @@
|
||||
# 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` - 更新设置
|
||||
|
||||
---
|
||||
|
||||
## 六、配置文件
|
||||
|
||||
```yaml
|
||||
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,工程简洁。
|
||||
|
||||
**待完成**:
|
||||
1. 设备管理页面
|
||||
2. 服务管理页面
|
||||
3. 系统设置页面
|
||||
|
||||
Reference in New Issue
Block a user