# 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. 系统设置页面

