Files
2026-06-30 15:14:37 +08:00

6.2 KiB
Raw Permalink Blame History

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 CSSCDN 方式)
实时通信 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,工程简洁。

待完成

  1. 设备管理页面
  2. 服务管理页面
  3. 系统设置页面