cf96989e01
deploy-pangolin / deploy (push) Has been cancelled
- deploy/: Xray VLESS+REALITY (11443, 经宿主 nginx SNI 分流) + sing-box Hysteria2 (UDP 443) docker-compose - 幂等 deploy.sh / gen-secrets.sh / print-clients.sh;受限 nginx-apply 特权脚本 + 一次性 root-setup - .gitea/workflows/deploy.yml: NAS runner 经 SSH 远程部署到 EC2 - docs/ plan/: 设计方案与实施计划 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
241 lines
12 KiB
Markdown
241 lines
12 KiB
Markdown
# Pangolin 终端 VPN —— 整体技术方案
|
||
|
||
> 状态:设计稿 v1 · 日期:2026-05-30
|
||
> 选型基线:客户端 **Flutter 自研 UI**;后端 **先成熟面板、后自研 Go**;协议主推 **REALITY**。
|
||
|
||
---
|
||
|
||
## 0. 一句话定位
|
||
|
||
面向中国大陆用户的「傻瓜式」科学上网工具:一键连接、自动选线、多端统一,
|
||
免费+付费双轨,抗封锁、防跟踪,客户端自研 + 标准订阅兼容三方软件。
|
||
|
||
### ⚠️ 合规与运营者安全前提(与技术同等重要)
|
||
|
||
- 在中国境内**运营收费翻墙服务属违法经营**,风险在运营者而非用户。
|
||
- 运营主体、服务器、域名、收款账户一律用**境外身份**,与国内真实身份**完全隔离**。
|
||
- 管理后台不暴露公网;节点不留连接日志;支付走加密货币 / 可随时更换的通道。
|
||
- 本文档只涉及"绕过审查、访问开放互联网"的正当技术,不涉及攻击/入侵他人系统。
|
||
|
||
---
|
||
|
||
## 1. 总体架构
|
||
|
||
```
|
||
┌─────────────────────────────────────┐
|
||
用户(小白) │ 控制面 (境外) │
|
||
┌──────────┐ │ ┌──────────┐ ┌────────────────┐ │
|
||
│ Flutter │──订阅──▶ │ │ 面板/API │───▶│ 用户/订单/流量库 │ │
|
||
│ 客户端 │ │ │(XBoard+ │ └────────────────┘ │
|
||
└────┬─────┘ │ │ Marzban) │ │
|
||
│ │ └────┬─────┘ 下发配置 / 限速 / 额度 │
|
||
│ 科学上网流量 │ ▼ │
|
||
│ ┌─────────────────────────────────────┐ │
|
||
└─────────────▶│ 数据面:多地接入节点 (VPS 集群) │ │
|
||
│ REALITY / Hysteria2 / CDN(WS)中转 │ │
|
||
└─────────────────────────────────────┘
|
||
┌──────────┐
|
||
│ 宣传页 │ ← Cloudflare Pages + 备用直连域名 + GitHub/TG 分发
|
||
└──────────┘
|
||
```
|
||
|
||
**核心原则:控制面(账号/计费)与数据面(代理节点)分离。**
|
||
客户端只认「订阅链接」,节点可随时增删换 IP;被封换节点不影响账号体系。
|
||
这是所有成熟机场的标准架构。
|
||
|
||
---
|
||
|
||
## 2. 协议选型(抗封锁核心)
|
||
|
||
GFW = 主动探测 + 流量指纹 + IP 封锁。2026 年最优组合:
|
||
|
||
| 协议 | 用途 | 抗封锁原理 | 速度 |
|
||
|------|------|-----------|------|
|
||
| **VLESS + Vision + REALITY** | 主力 | 偷用真实大站 TLS(如 microsoft.com),无自签指纹,主动探测回落真站 | 高 |
|
||
| **Hysteria2** | 晚高峰/高丢包备线 | QUIC/UDP + 暴力拥塞控制 + 端口跳跃抗 QoS | 极高 |
|
||
| **VLESS + WS + TLS over CDN** | IP 被封保底 | 走 Cloudflare,用户连 CF 的 IP,难整段封 | 中 |
|
||
| TUIC v5 / ShadowTLS | 补充 | QUIC / 套真实 TLS 握手 | 高 |
|
||
|
||
**主推 REALITY**(快、最难封),**CDN/WS 保底**(REALITY IP 被封自动切),
|
||
**Hysteria2 加速**(晚高峰)。三者 sing-box 内核原生支持,一套内核搞定。
|
||
|
||
**禁用**:裸 Shadowsocks、VMess、自签证书 Trojan —— 指纹已被识别。
|
||
|
||
---
|
||
|
||
## 3. 客户端 —— Flutter 自研 UI(已选)
|
||
|
||
### 3.1 分层
|
||
|
||
```
|
||
┌──────────────────────────────────────────┐
|
||
│ Flutter UI (Dart) —— 一套代码,~90% 复用 │ 连接按钮 / 节点信号灯 / 额度 / 登录续费
|
||
├──────────────────────────────────────────┤
|
||
│ FFI / Platform Channel 桥接层 │
|
||
├──────────────────────────────────────────┤
|
||
│ sing-box 内核 (Go, libbox) —— 协议/限速/路由│ 只写一次,全平台复用
|
||
├──────────────────────────────────────────┤
|
||
│ 各平台 VPN 壳(平台特定,薄) │
|
||
│ iOS/iPadOS: NetworkExtension PacketTunnel │
|
||
│ Android: VpnService │
|
||
│ Win/macOS/Linux: TUN 网卡 │
|
||
└──────────────────────────────────────────┘
|
||
```
|
||
|
||
- **内核**:[sing-box](https://github.com/SagerNet/sing-box) 的 `libbox`(gomobile 产物)。协议、限速、路由、URLTest 全在内核层,只写一次。
|
||
- **UI**:Flutter,一套 Dart 出 iOS / Android / macOS / Windows / Linux。
|
||
- **可借鉴的开源实现**(遵守各自许可证):**FlClash**、sing-box 官方 app(SFA/SFI/SFM/SFW)。
|
||
- **Web 端**:浏览器做不了系统级 VPN。Web 定位 = **用户中心**(登录、看流量、续费、取订阅、看节点状态)。需浏览器代理时另做 Chrome 扩展(WS over CDN)。
|
||
|
||
### 3.2 小白友好关键点(差异化卖点)
|
||
|
||
- 首屏只有一个**大连接按钮** + 当前节点 + 信号灯。
|
||
- 默认「**智能选择/自动**」(URLTest 选延迟最低的可用节点),高级用户才手动切地区。
|
||
- 默认开:**Kill-switch**(断开即断网,防真实 IP 泄露)、防 DNS 泄露、防 WebRTC 泄露。
|
||
- 一键导入订阅 / 扫码登录,免配置。
|
||
|
||
### 3.3 三方软件兼容(并行提供)
|
||
|
||
输出标准**订阅链接**(sing-box / Clash.Meta / v2rayN 格式),
|
||
用户可用 v2rayN、Clash Verge、Shadowrocket、Stash、NekoBox 直接导入。
|
||
这是"提供账号信息即用"的落地方式,也是高级用户入口。
|
||
|
||
### 3.4 上架注意
|
||
|
||
- **iOS 中国区会下架翻墙 App** → 用海外 Apple 开发者账号 + 海外区上架 / TestFlight / AltStore。
|
||
- Android 走官网 APK + GitHub Releases + 应用商店(海外 Google Play)。
|
||
|
||
> 开发顺序建议:先用 sing-box 官方 app 改皮肤跑通商业闭环,再切到 Flutter 自研(避免一上来卡在客户端)。
|
||
|
||
---
|
||
|
||
## 4. 后端 —— 先面板,后自研(已选)
|
||
|
||
### 4.1 第一阶段:成熟面板(开箱即用)
|
||
|
||
| 组件 | 选型 | 职责 |
|
||
|------|------|------|
|
||
| 商业前台 | **XBoard**(或 V2board) | 套餐/下单/支付/工单/邀请返利 |
|
||
| 节点管理 | **Marzban / Marzneshin** | 用户、订阅生成、流量统计、到期、多节点 |
|
||
| 数据面 | 各节点 sing-box / Xray | 真正的代理 |
|
||
|
||
免费/付费额度、限速、到期,面板原生支持。**起步最快。**
|
||
|
||
### 4.2 第二阶段:自研 Go 后端(深度定制时迁移)
|
||
|
||
- **语言**:Go(与团队偏好一致,且与 sing-box 同栈)。
|
||
- **服务**:账号鉴权(JWT)、订阅生成、订单/支付、流量计量、节点健康调度。
|
||
- **DB**:PostgreSQL(用户/订单)+ Redis(限速令牌桶 / 会话 / 节点状态缓存)。
|
||
- **节点 Agent**:每节点 = sing-box + 上报 agent(流量 / 在线 / 延迟 → 控制面)。
|
||
- **迁移策略**:自研时复用面板的数据库 schema 与订阅格式,客户端无感切换。
|
||
|
||
### 4.3 限速(需求 3,两层)
|
||
|
||
1. **节点层硬限速**:sing-box/Xray 出站按用户打标 + Linux `tc`(HTB);免费用户单独限速队列。最可靠。
|
||
2. **额度层**:面板按日/月流量配额,超额断流。免费用户每日额度;**看激励视频广告 → 客户端调 API 临时提额**。
|
||
|
||
### 4.4 接入点 + 网络状态(需求 4)
|
||
|
||
- 控制面每 ~30s 探测每个节点:延迟 / 丢包 / 在线 / 负载。
|
||
- 订阅下发节点列表 + `status API`;UI 显示**绿/黄/红信号灯 + 延迟 ms**。
|
||
- IP 分级:免费用户用"消耗品 IP 池"(易被封),付费用户用"精品 IP 池"。
|
||
|
||
---
|
||
|
||
## 5. 安全 / 抗封锁 / 防跟踪(需求 6)
|
||
|
||
**抗被墙(数据面)**
|
||
- REALITY 为主(无指纹);IP 用冷门小厂 VPS,定期轮换;CDN 中转保底。
|
||
- Hysteria2 端口跳跃抗 UDP QoS。
|
||
- 订阅域名、控制面 API 也套 CDN/REALITY,防"取订阅"这步被封或被关联。
|
||
|
||
**防跟踪 / 隐私**
|
||
- 不收集真实身份;注册仅邮箱 / 设备 ID + 卡密。
|
||
- 节点 **no-log**;DNS 走 DoH/DoQ 防污染与泄露。
|
||
- 客户端默认 Kill-switch + 防 DNS / WebRTC 泄露。
|
||
- 控制面与数据面隔离;节点不存用户库,被抄一个节点不暴露全量用户。
|
||
|
||
**运营者安全(最致命)**
|
||
- 服务器 / 域名 / 支付全用境外身份,与国内真实身份隔离。
|
||
- 加密货币付 VPS;域名隐私保护;管理后台仅 VPN 内网开放。
|
||
|
||
---
|
||
|
||
## 6. 宣传页(需求 7)
|
||
|
||
矛盾:境外部署 + 国内直连 + 安全,三者天然冲突(境外站国内常被墙)。务实方案:
|
||
|
||
- **静态站**:Astro / Next.js(SSG)纯静态 → **Cloudflare Pages**(免费、全球 CDN、自带 DDoS 防护)。
|
||
- **国内直连对策**:
|
||
1. 多备用域名 + 自有 IP 直连镜像,主站被污染时引导切换。
|
||
2. 下载/取订阅入口做成可镜像分发:**GitHub Releases、Telegram 频道、网盘**,不把命脉绑死单域名。
|
||
- **抗封获客靠去中心化**:Telegram 群/频道、Twitter/X、酷安、V2EX、邀请码裂变。宣传页是"信任背书 + 下载入口"。
|
||
- 安全:全站 HTTPS、无第三方追踪脚本、不收集访客信息。
|
||
|
||
---
|
||
|
||
## 7. 商业化(需求 2 + 交易)
|
||
|
||
### 7.1 套餐
|
||
- **免费**:每日 1–2 GB 或限速;**看激励视频广告解锁额外额度**(广告用海外 AdMob/Unity)。走消耗品 IP 池。
|
||
- **付费**:月/季/年 + 流量包;精品线路、不限速、多节点。
|
||
- 转化漏斗:免费体验 → 晚高峰限速 → 推付费精品线路。
|
||
|
||
### 7.2 收款(国内最大难点)
|
||
|
||
| 方式 | 说明 | 风险 |
|
||
|------|------|------|
|
||
| **USDT(TRC20)** | 最抗封、最隐私,首选 | 用户门槛高 |
|
||
| **自动发卡(卡密)** | 机场标配,支付宝/微信中转 | 收款码易封,需轮换 |
|
||
| 爱发电 / Ko-fi | 打赏制,规避直接售卖定性 | 平台可能封 |
|
||
| Stripe / Paddle(境外主体) | 正规,但需境外公司 + 外卡 | 主体门槛 |
|
||
|
||
**建议**:主推 **USDT + 自动发卡**;收款通道与运营主体隔离,随时可换。
|
||
**禁用**绑定真实身份的个人支付宝/微信收款。
|
||
|
||
### 7.3 目标人群 & 获客
|
||
- **核心**:留学/外贸/跨境电商、程序员/科研、追剧/游戏/ChatGPT 用户、数字游民。
|
||
- **小白向卖点**:一键连接、自动选线、傻瓜 UI(对比 v2rayN 这类极客工具)。
|
||
- **渠道**:Telegram、Twitter/X、YouTube 评测合作、酷安、邀请返利裂变、SEO(关键词:稳定梯子 / ChatGPT 怎么用)。
|
||
|
||
---
|
||
|
||
## 8. 技术栈一页纸
|
||
|
||
| 层 | 选型 |
|
||
|----|------|
|
||
| 代理内核 | **sing-box**(REALITY + Hysteria2 + WS/CDN 保底) |
|
||
| 客户端 | **Flutter**(iOS/Android/Win/macOS/Linux)+ 各端 VPN 壳;Web = 用户中心 |
|
||
| 三方兼容 | 标准订阅(sing-box / Clash.Meta / v2rayN) |
|
||
| 控制面/计费 | **XBoard**(阶段1)→ 自研 **Go**(阶段2) |
|
||
| 节点管理 | **Marzban / Marzneshin** |
|
||
| 数据库 | PostgreSQL + Redis |
|
||
| 限速 | sing-box 出站标记 + tc + 面板配额 |
|
||
| 节点监控 | Go agent 上报 → 客户端信号灯 |
|
||
| 宣传页 | Astro/Next SSG + Cloudflare Pages + 多备份入口 |
|
||
| 收款 | USDT(TRC20)+ 自动发卡;境外 Stripe 可选 |
|
||
| 基础设施 | 多地冷门小厂 VPS + Cloudflare CDN |
|
||
|
||
---
|
||
|
||
## 9. 落地阶段(MVP 优先)
|
||
|
||
| 阶段 | 目标 | 周期 |
|
||
|------|------|------|
|
||
| **0** | 1 台 VPS + sing-box + REALITY,用 v2rayN/Shadowrocket 连通,跑 vpn-test 验证线路 | 1–2 周 |
|
||
| **1** | XBoard + Marzban,通注册/订阅/限速/卡密收款;靠分享订阅 + 三方软件**验证付费意愿** | 2–4 周 |
|
||
| **2** | 先用 sing-box 官方 app 改品牌出客户端,接登录/信号灯/免费额度 | 2–4 周 |
|
||
| **3** | Flutter 自研 UI、广告变现、多节点智能调度、宣传站 | 持续 |
|
||
|
||
**先验证商业模式(有没有人付费),再投入客户端自研。**
|
||
|
||
---
|
||
|
||
## 10. 待决事项 / 下一步
|
||
|
||
- [ ] 阶段0:出 sing-box 服务端 REALITY 配置 + 一键部署脚本
|
||
- [ ] 选定首批 VPS 服务商与地区(冷门小厂、可加密货币付款)
|
||
- [ ] XBoard + Marzban 的 docker-compose 部署方案
|
||
- [ ] 客户端品牌名 / 域名 / 收款通道确定
|
||
- [ ] Flutter 客户端工程脚手架与 sing-box libbox 桥接 PoC
|