Files
pangolin/docs/技术方案.md
wangjia cf96989e01
deploy-pangolin / deploy (push) Has been cancelled
Phase 0: 容器化数据面 + CI/CD 自动部署
- 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>
2026-05-30 11:48:47 +08:00

12 KiB
Raw Permalink Blame History

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-boxlibbox(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 套餐

  • 免费:每日 12 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 验证线路 12 周
1 XBoard + Marzban,通注册/订阅/限速/卡密收款;靠分享订阅 + 三方软件验证付费意愿 24 周
2 先用 sing-box 官方 app 改品牌出客户端,接登录/信号灯/免费额度 24 周
3 Flutter 自研 UI、广告变现、多节点智能调度、宣传站 持续

先验证商业模式(有没有人付费),再投入客户端自研。


10. 待决事项 / 下一步

  • 阶段0:出 sing-box 服务端 REALITY 配置 + 一键部署脚本
  • 选定首批 VPS 服务商与地区(冷门小厂、可加密货币付款)
  • XBoard + Marzban 的 docker-compose 部署方案
  • 客户端品牌名 / 域名 / 收款通道确定
  • Flutter 客户端工程脚手架与 sing-box libbox 桥接 PoC