diff --git a/.claude/skills/pangolin-design.md b/.claude/skills/pangolin-design.md new file mode 100644 index 0000000..2ae62ea --- /dev/null +++ b/.claude/skills/pangolin-design.md @@ -0,0 +1,48 @@ +--- +name: pangolin-design +description: Use this skill to generate well-branded interfaces and assets for 穿山甲 (Pangolin) — for production (Flutter client, Go backend, web) or throwaway prototypes/mocks. Contains the full design system (tokens, type, brand assets), four React UI kits (mobile / desktop / website / usercenter), a ready-to-run Flutter token+widget package, and a backend architecture blueprint. Invoke whenever building or reproducing any Pangolin surface. +user-invocable: true +--- + +# 穿山甲 · Pangolin — 设计与实现技能 + +这套技能让你(含 Claude Code)**完全还原**穿山甲的设计并落地为产品。UI 以 `ui_kits/` 的 React 原型为像素基准;客户端生产代码用 Flutter;后端按 `server/ARCHITECTURE.md` 蓝本实现。 + +## 第一步:必读(顺序固定) +1. **`CLAUDE.md`** — 设计铁律 13 条(§1)、套餐口径单一来源(§7)、页面清单(§5)、**实施工作步骤(§9)**。先读它,§9 就是工作流。 +2. **`README.md`** — 品牌语境、内容基础、视觉基础、图标系统、文件索引。 +3. 按需:`colors_and_type.css`(令牌真相源)、`flutter/README.md`(Flutter 接入)、`server/ARCHITECTURE.md`(后端)。 + +## 这是什么品牌 +**穿山甲 / Pangolin** — 极简、轻量、亲和的跨平台消费级**网络加速应用**(对外一律不用"VPN"等红线词,见 CLAUDE.md 铁律 13)。暖大地色(穿山甲鳞甲)+ 大量留白 + 双语单显 + 深浅双主题。核心卖点:一键连接、智能选线、即开即用。 + +## 仓库地图 +| 路径 | 内容 | 用途 | +|---|---|---| +| `CLAUDE.md` | 铁律 / 套餐口径 / 页面清单 / **工作步骤 §9** | 一切工作的总纲 | +| `colors_and_type.css` | CSS 令牌(唯一真相源) | HTML/Web 直接链入 | +| `flutter/` | Dart 令牌镜像 + widgets + pubspec + main.dart | Flutter 客户端起步包,拿来即跑 | +| `ui_kits/mobile/` | 移动 App 完整原型(登录/引导/4 Tab/账户子页/滑动切换) | 客户端像素验收标准 | +| `ui_kits/desktop/` | 桌面客户端(920×600 侧栏布局 + 登录/引导) | 同上(桌面) | +| `ui_kits/website/` | 官网(产品/定价/下载/文档/Blog,响应式+i18n) | 官网迁移样板 | +| `ui_kits/usercenter/` | Web 用户中心(概览/订阅导入/兑换/邀请/设置含 2FA,移动适配) | 用户中心样板 | +| `server/ARCHITECTURE.md` | Go 控制面 + WireGuard 数据面蓝本(数据模型/API/流程/实现顺序) | 后端实现总纲 | +| `assets/` `preview/` | 品牌 SVG / 设计系统 specimen 卡 | 资产与规范预览 | + +## 工作步骤(交给 Claude Code 的执行计划) +完整版见 **CLAUDE.md §9**,摘要: + +1. **进场必读**:CLAUDE.md §1 → §7 → §5;再读 `colors_and_type.css` + 目标端的 UI Kit 源码。 +2. **Flutter 客户端**:用 `flutter/` 起步包建工程(pubspec 覆盖 → 拷 theme/widgets/main → 配字体 → `flutter run` 即出演示态);再对照 `ui_kits/mobile/` 逐屏补齐(智能选择推荐卡、免费额度卡+看广告解锁、Tab 滑动切换);先演示数据,后按 `server/ARCHITECTURE.md` §3 契约接 API。 +3. **后端(Go)**:按 `server/ARCHITECTURE.md` §7 模块顺序:openapi → auth → codes → devices → nodes → usage → 管理端。每模块:单测 + OpenAPI 同步 + 双语错误文案 + 脱敏。 +4. **官网 / 用户中心**:以 `ui_kits/website/`、`ui_kits/usercenter/` 为样板迁移到正式框架,保留 i18n 单显、响应式与脱敏文案;用户中心接 me/redeem/devices,2FA 用 TOTP。 +5. **每个界面提交前自查**(完整清单见 CLAUDE.md §9 第 4 步):语义 token 无硬编码色 / 明暗+中英四态验证 / 无红线词 / 套餐数字与 §7 一致 / Lucide 图标无 emoji / 连接键三态与原型一致 / 无 App 内支付。 + +## 铁律摘要(完整 13 条见 CLAUDE.md §1) +暖大地色调,**绝不纯黑纯白大面积填充**;主色 clay `#B96A3D`,**绝不蓝紫渐变**;圆角偏大;阴影柔和暖调;**单语言显示**(中/英切换,不并排);状态用色点+文字胶囊(无 emoji);国家用 2 字母码块(无 emoji 国旗);Lucide 细线图标;**App 内无支付**(兑换码+外部渠道:发卡店/USDT/TG/LINE/邮箱);品牌母题=行走穿山甲(拷 `assets/*.svg`,绝不重绘);不堆砌、留白即设计;**全站脱敏**(红线词清单见铁律 13)。 + +## 套餐口径(单一来源 = CLAUDE.md §7,改数字先改那里) +注册享 **7 天免费试用**(不限时长节点)→ 之后免费版 **1 个基础节点 + 每日 10 分钟 + 每日使用前看激励视频解锁**;PRO ¥25/月(年付 ¥20/月),80+ 线路,5 设备;团队版 ¥99/月 10 席位。 + +## 无指令时 +若用户只调用技能未说要做什么:问他要建/设计什么,问几个聚焦问题,作为本品牌专家输出 —— 按需产出 HTML 原型、Flutter 生产代码或后端模块。 diff --git a/.claude/worktrees/arch-doc b/.claude/worktrees/arch-doc new file mode 160000 index 0000000..3ae96ef --- /dev/null +++ b/.claude/worktrees/arch-doc @@ -0,0 +1 @@ +Subproject commit 3ae96ef22946eb56799edd94a8492613853335f8 diff --git a/.claude/worktrees/iridescent-sleeping-lampson b/.claude/worktrees/iridescent-sleeping-lampson new file mode 160000 index 0000000..4bff859 --- /dev/null +++ b/.claude/worktrees/iridescent-sleeping-lampson @@ -0,0 +1 @@ +Subproject commit 4bff8593e7a6bf4589d5c2e8e1ad22e1bc1b5b2b diff --git a/doc/04-infra.html b/doc/04-infra.html index 46bd2c7..fd66708 100644 --- a/doc/04-infra.html +++ b/doc/04-infra.html @@ -5,6 +5,89 @@ 04 机器与网络拓扑 · 穿山甲架构设计 + @@ -27,50 +110,456 @@
Chapter 04 · Infrastructure & Topology

机器与网络拓扑

-

目标:弹性可变的网络拓扑——所有节点可一键更换或自动更换,IP 可随时轮换;任何单点被识别、被阻断都不影响整体服务。设计核心是「节点是牲口不是宠物」:节点无状态、可丢弃、分钟级重建。

+

本章分两层描述拓扑:§0 是现网实际在跑的 EC2 单机部署(具体到端口与容器),§1–§5 是目标弹性多节点架构。两者均严格区分「数据面」(用户 VPN 流量)与「控制面」(API / 管理 / 运维流量),数据面与控制面在物理路径上彻底分离。

+
+ 图例: + 数据面 Data Plane — VPN 代理流量(用户→节点→互联网) + 控制面 Control Plane — API / Web / 面板流量 + 运维面 Ops — 证书续签 / CI/CD / 心跳 +
+ + +
+

网络请求流向总览 · Network Request Flow

+ + + + + + + + + + DATA PLANE 数据面 — VPN 代理流量 + + + + 用户 + 客户端 + Flutter · sing-box + + + + + + GFW + 防火长城 + 封锁 · 识别 + + + 穿透 + + + + 接入点 + Entry Node + tcp:443 REALITY + udp:443 Hysteria2 + 消耗品 IP · 唯一公网暴露 + + + 可选 + + + + 转发点 + Relay + 大带宽 · 低价 + — 可选 — + + + + + + 落地节点 + Exit Node + 精品 IP · 用户不可见 + 稳定出境 + + + + + + 目标网站 + 互联网 + Google / Netflix + 任意境外服务 + + + ▲ Phase 0: 接入=落地(单跳直出) + ▲ Phase 1+: 独立落地节点 + + + + 控制面 Control Plane — 独立路径,不经过代理节点 + + + CONTROL PLANE 控制面 — 管理 / API / 节点配置 + + + + Flutter App + 账户 / 订阅 + HTTPS + + + + + + Cloudflare + CDN / 域名池 + 源站 IP 隐藏 + + + + + + API Server + Go · 独立机器 + MySQL + Redis + 用户 / 节点 / 订阅 + + + + + mTLS gRPC + 配置下发 · 心跳 + + + + 探针系统 + 境内多 ISP 拨测 + 判封 · 5min 周期 + + + + 上报 + + + + 拨测节点 + +
-
-

§1三层弹性拓扑

+ +
+

§0当前 EC2 单机部署(仅供测试,非生产 VPN 网络)

+
重要说明:EC2 是个人测试机,与 VPN 网络架构彻底分离 + 当前 EC2(18.136.60.128)是运维者个人的测试机,上面跑着与 Pangolin VPN 业务无关的个人服务(marzban/jiu/blog)。后续 Pangolin VPN 生产网络将使用独立专用机器,与这台 EC2 完全无关。EC2 只是当前验证 edge/singbox 容器可行性的临时环境。VPN 正式上线后,EC2 上不会再部署 Pangolin 的任何组件,以保护个人服务不受 VPN 业务影响(封锁、扫描、流量特征关联等)。
+

当前所有服务共用 一台 EC2(ap-southeast-1,18.136.60.128,ec2-user)。Pangolin 数据面容器(edge / singbox)与现网已有服务(marzban / jiu / blog / billing)并存;Marzban REALITY 提供线上代理,绝不能中断

+ +

0.1 在跑服务与端口一览

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
服务容器/进程监听地址:端口网络模式流量类型所属
pangolin-edgeDocker · pangolin-edge:local:80/tcp :443/tcphost数据面 控制面Pangolin
pangolin-singboxDocker · sing-box:v1.13.12:443/udphost数据面 Hysteria2Pangolin
Marzban REALITYmarzban 服务(宿主)127.0.0.1:10443loopback数据面 VLESS+REALITY现有(勿动)
Marzban 面板marzban 服务(宿主)127.0.0.1:8899loopback控制面 Web UI现有(勿动)
jiu.servicesystemd(Go 二进制)127.0.0.1:8080loopback控制面 电商 API现有(勿动)
blog(Next.js)Docker / pm2127.0.0.1:3000loopback控制面 Blog现有(勿动)
Umami 统计Docker127.0.0.1:3001loopback控制面 统计后台现有(勿动)
billing.servicesystemd:18080/tcphost(独立,不经 edge)控制面 计费现有(勿动)
+ +

0.2 SNI 分流路由表(pangolin-edge · stream 层)

+

pangolin-edge 以 host 网络绑定 :443/tcp,在 TCP 层(ssl_preread)读取 SNI,不解密,直接按域名把连接 proxy_pass 到不同后端:

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SNI(客户端发送的域名)→ 后端(容器内 127.0.0.1)再经 nginx http vhost最终落点类型
www.cloudflare.com127.0.0.1:10443——(直通)Marzban REALITY 数据面 → 互联网数据面
default(其他 SNI)127.0.0.1:10443——(直通)同上(兜底)数据面
vpn.51yanmei.com127.0.0.1:8443SSL 终止 → :8899Marzban 管理面板控制面
blog.51yanmei.com127.0.0.1:8444SSL 终止 → :3000 / :3001Next.js 博客 + Umami 统计控制面
jiu.51yanmei.com127.0.0.1:8445SSL 终止 → :8080jiu.service API + 静态控制面
+
为什么用 tcp stream 层分流而非 http 层? + SNI 分流在 TCP 层完成,TLS 连接不在 edge 里解密再到 Marzban REALITY。这让 REALITY 的 TLS 流量完整透传:Marzban 收到原始 ClientHello,保留 REALITY 协议的所有防识别特征。只有 vpn/blog/jiu.51yanmei.com 的 HTTPS 流量才在 edge 内部做 SSL 终止(TLS → 明文 → 反代后端)。
+ +

0.3 数据面:VPN 流量跳转路径

+
+
+
路径 A:REALITY(TCP)主线
+
+
VPN 客户端· Flutter + sing-box libbox
+
GFW(穿越)· REALITY 流量伪装成 HTTPS 到 cloudflare.com
+
EC2 :443/tcp· 公网 IP 18.136.60.128
+
pangolin-edge· ssl_preread SNI=www.cloudflare.com → proxy_pass
+
127.0.0.1:10443· Marzban REALITY(宿主进程,loopback)
+
🌐 互联网· Marzban 作为出口,EC2 的公网 IP 出境
+
+
TLS 握手在 Marzban(⑤)内完成 · edge(④)零解密 · 完整 REALITY 防识别
+
+
+
路径 B:Hysteria2(UDP)备线
+
+
VPN 客户端· Flutter + sing-box libbox
+
GFW(穿越)· QUIC over UDP · masquerade=www.bing.com
+
EC2 :443/udp· TCP 与 UDP 共用 443,互不干扰
+
pangolin-singbox· sing-box Hysteria2 inbound(host 网络)
+
🌐 互联网· direct outbound · EC2 公网 IP 出境
+
+
TLS(ALPN=h3)在 singbox 内终止 · 自签证书(secrets/hy2/)· 端口跳跃抗 QoS
+
+
+
关键:数据面不经过任何 API 服务 用户的代理流量(路径 A/B)完全不经过控制面(API Server、MySQL、Redis)。节点(当前即 EC2 上的 Marzban/singbox)不保存任何用户身份信息——零用户库、零浏览日志。计费数据(字节数)由控制面独立上报,不在数据面节点产生。
+ +

0.4 控制面:Web / 面板流量跳转路径

+

所有 Web 流量(Marzban 面板、jiu 管理端、博客)均经 Cloudflare CDN 前置隐藏源站 IP,到 EC2 后再由 pangolin-edge 做 SNI 分流 + SSL 终止 + HTTP 反代:

+ +
+
控制面通用路径(以 vpn.51yanmei.com 为例)控制面
+
+
浏览器 / 管理员
+
Cloudflare CDN· DNS 解析 → CF 边缘节点 · 源站 IP 隐藏
+
EC2 :443/tcp· CF→EC2 段为 HTTPS(CF Origin Certificate)
+
pangolin-edge · tcp stream· ssl_preread 读 SNI=vpn.51yanmei.com → proxy_pass :8443
+
127.0.0.1:8443 nginx http vhost· SSL 终止(Let's Encrypt 证书)· X-Real-IP=$http_cf_connecting_ip
+
127.0.0.1:8899 Marzban 面板· HTTP 反代 · 宿主进程 · loopback
+
+
blog → :8444 → :3000(Next.js) + /stats/ → :3001(Umami)  |  jiu → :8445 → :8080(jiu.service) + 静态(/opt/jiu/)
+
+ +
注意 :80 的行为 pangolin-edge 的 nginx http 模块监听 :80(default_server)。所有业务域名均配置了 return 301 https:// 跳转;未匹配域名直接返回 404。不存在明文 HTTP 落地的业务路由。
+ +

0.5 运维面:证书自续签循环

-
用户REALITY / Hysteria2
+
pangolin-edge 容器内后台进程(启动后 60s 开始)
+
每 12h
+
certbot renewDNS-01 验证 · --quiet
-
入口层 Entry消耗品 IP 池 · 多厂商 · 高频轮换
+
Cloudflare DNS API/etc/cloudflare.ini · TXT record
-
中转层 Relay(可选)内部隧道转发
-
-
落地层 Exit精品 IP · 稳定出口 · 用户不可见
+
Let's Encrypt证书颁发
-
-
免费用户:直连消耗品池入口(单跳直出)。付费用户:入口 → 落地两跳为主,中转层在入口与落地间链路质量差时按需启用。
+
+
若有续期
+
+
nginx -s reload--deploy-hook · 容器内热重载
+
+
/etc/letsencryptrw 挂载卷(宿主 + edge 共享)
-
被识别阻断的永远是入口 IP(暴露面);落地 IP 只对内部隧道可见,几乎不会被烧
+
无宿主 cron · 无 docker socket · 无跨容器信号 · edge 自续签自己用的证书
+

证书覆盖:vpn.51yanmei.comblog.51yanmei.comjiu.51yanmei.com(Let's Encrypt · DNS-01 / Cloudflare)。Hysteria2 用自签证书(secrets/hy2/),与 LE 无关。

+
+ + +
+

§1三层弹性拓扑(目标多节点架构)

+

§0 是单机现状;§1 开始描述 Pangolin 自有节点架构的目标形态。核心原则:入口 IP 是唯一公网暴露面(消耗品);落地 IP 只对隧道内部可见(精品);控制面独立部署,完全不跑用户流量

+ +

1.1 数据面:用户 VPN 流量路径

+
+
+
VPN 客户端Flutter · sing-box libbox
+
REALITY
或 Hy2
+
入口节点 Entry消耗品 IP · :443 · sing-box
+
内部隧道
(付费用户)
+
中转节点 Relay可选 · 大带宽低价
+
内部隧道
+
落地节点 Exit精品 IP · 稳定出口
+
+
🌐 目标网站Netflix / Google / etc.
+
+
+
免费用户:入口 = 落地(单跳直出),消耗品池;付费用户:入口 → 落地两跳,中转层按需启用;客户端 URLTest 实测择优,服务端目录只缩小候选集。
+
+
被识别/封锁的永远是入口 IP(唯一公网暴露);落地 IP 几乎不会被烧
+
+ +

1.2 控制面:API 管理与节点注册路径

+
+
+
客户端 ↔ API 服务器
+
+
Flutter App / Web 用户中心
+
Cloudflare 域名池· 多域名轮换 · 源站 IP 隐藏
+
API Server(Go)· 独立机器 · 不跑任何代理流量
+
MySQL 8 + Redis· 用户/订阅/节点/激活码
+
节点目录(带版本)· if_version 增量轮询 · 客户端缓存兜底
+
+
+
+
节点 Agent ↔ API 服务器
+
+
新节点开机· cloud-init 脚本拉起 agent
+
mTLS gRPC 注册· 引导 token → API 签发节点证书
+
配置下发· UUID 表 / 伪装 SNI / 隧道密钥
+
sing-box 启动· agent 管理进程生命周期
+
心跳 + 指标上报· 每 30s · 在线数/带宽/延迟
+
+
+
+ +
+
+
探针系统境内多 ISP 拨测
+
5min 周期
+
API · Scheduler判封逻辑 · 状态机
+
blocked_confirmed
+
节点 Down立即出目录
+
+
自动补新厂商 API 开机
+
+
探活通过入池 · version bump
+
+
+
控制面负责全部节点生命周期管理;数据面节点不保存任何用户信息;两面物理隔离,互不干扰。
+
+
判封三路互证:境内探针 + 境外对照 + 流量侧骤降 · 避免误判
+
+ +

1.3 三层节点角色对照

- + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + +
角色暴露面IP 等级更换频率跑什么
角色暴露面IP 等级更换频率运行内容
entry 入口直面用户与审查(唯一公网暴露)消耗品池:冷门小厂、便宜、可隐私购买被封即换;常态每 2–4 周主动轮换sing-box(REALITY + Hy2 端口跳跃)+ agent
relay 中转仅入口可见低价大带宽低频内部隧道转发 + agent
exit 落地仅中转/入口可见精品池:稳定厂商、原生 IP、解锁好极低频出口 + agent
probe 探针境内多 ISP 拨测点 + 境外对照点探测脚本,结果回报控制面
entry 入口直面用户与 GFW(唯一公网暴露)消耗品池:冷门小厂 · 便宜 · 可隐私购买被封即换;常态每 2–4 周主动轮换sing-box(REALITY + Hy2)+ agent
relay 中转仅入口节点可见低价大带宽低频内部隧道转发 + agent
exit 落地仅中转/入口节点可见精品池:稳定厂商 · 原生 IP · 解锁好极低频出口 + agent
probe 探针——境内多 ISP 拨测点 + 境外对照点——探测脚本 · 结果回报控制面
+

§2节点无状态化(可丢弃的前提)

+

§3节点生命周期状态机

@@ -87,7 +576,7 @@
destroyed销毁 · IP 释放
-
up → down(跳过 draining):判封确认时立即下架。probing 失败 → 直接 destroyed(坏 IP 不入池)。每次迁移写 node_events 并 bump 目录 version。
+
up → down(跳过 draining):判封确认时立即下架。probing 失败 → 直接 destroyed(坏 IP 不入池)。每次迁移写 node_events 并 bump 目录 version,客户端收到新 version 即平滑迁移。
+

§4一键更换与自动更换

4.1 一键更换(管理端按钮 / CLI 一条命令)

@@ -134,8 +626,8 @@
  • 疑似:境内 ≥2/3 拨测点连续 2 个周期失败,且境外正常 → blocked_suspect,节点降权(weight→10),加密探测频率。
  • 确认:连续 6 个周期(30 分钟)维持上述状态 → blocked_confirmed → 立即 down 出目录 + 自动触发 §4.1 补新流程。
  • 故障(境内外同挂):走告警人工介入,不消耗 IP 配额重建。
  • -
  • 容量保护:自动补新失败(厂商 API 错误、新机探活不过)连续 3 次 → 升级为告警;池内 up 节点低于水位线(如 tier 内 <70%)→ 无条件告警。
  • -
  • 熔断:1 小时内同池自动更换 >N 台(疑似大面积事件)→ 暂停自动重建、保留现场、人工决策(可能需要换厂商/换区域/换伪装 SNI 而非头铁补机)。
  • +
  • 容量保护:自动补新失败连续 3 次 → 升级为告警;池内 up 节点低于水位线(tier 内 <70%)→ 无条件告警。
  • +
  • 熔断:1 小时内同池自动更换 >N 台(疑似大面积事件)→ 暂停自动重建、保留现场、人工决策(可能需要换厂商/换区域/换伪装 SNI)。
  • 主动降低被封概率(比换得快更重要)
      @@ -146,6 +638,9 @@
    +

    §5调度、容量与厂商池

    5.1 节点目录排序(服务端)与智能选择(客户端)

    @@ -161,17 +656,453 @@ 精品池(exit/pro entry)稳定厂商 1–2 家,原生 IP、带宽质量好同样隐私注册;区域:HK / JP / SG / US 起步 + +

    5.2.1 消耗品池候选厂商(接入节点 · 被封即换)

    +

    数据来源:各厂商官网 + LowEndTalk / VPSBenchmarks 社区实测,调研日期 2026-06。价格以美元计,¥ 人民币标注为国内商家。

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    厂商最低月价亚洲节点Crypto / 匿名API 自动开退机中国网络KYC推荐场景
    HostHatch~$2.4/月HK · SG · TYOBTC;接近匿名✓ REST API
    支持创建/删除实例
    普通 BGP,无 CN2无需API 自动化首选;三亚洲节点全覆盖;NVMe 性能好;适合批量消耗自动轮换
    Servury$3.99/月
    $0.55/天
    新加坡 · 欧洲BTC / XMR / ETH;完全零 KYC(无需邮箱,32 位随机凭证)普通 BGP完全无需极匿名消耗品;按日计费便于快速轮换;凭证无账号体系,极隐私
    ExtraVM$4.5/月SG · TYO · LAX · AMS50+ 币种(BTC/XMR/USDT等);零 KYC普通 BGP无需(仅邮箱)多区域同时部署;币种最全;AMD Ryzen/EPYC NVMe 高性能
    RackNerd$1.88/月
    年付特惠
    新加坡 · LA(DC-02)BTC 等 30+ 种;接近匿名✗ 仅管理已有机LA-DC02 部分 CN2;SG 普通 BGP无需价格最低($1.88);无 API 开退机,需手动;适合预算极紧且愿意手动维护的场景
    Vultr$6/月HK · SG · TYO · OsakaBTC via BitPay✓ REST API v2
    Terraform provider
    普通 BGP;HK 走 163 骨干,晚高峰丢包 5–15%信用卡或 BTCAPI 完整成熟;覆盖 HK/JP/SG;IP 段曝光度高,需频繁换;不适合做长期精品节点
    AkileCloud
    HK Lite 系列
    ¥9/月
    ≈ $1.3
    HK · JPUSDT;无 KYCNTT/PCCW,非大陆优化线路无需国内 USDT 付款最方便;HK Lite 延迟低适合消耗接入;Pro 系列升精品池
    Hetzner
    通过 Caasify/BitLaunch
    €3.99/月
    小时计费
    新加坡(唯一亚洲)官方不接受;需 Caasify 等第三方 BTC 购买✓ 行业最强 API
    Terraform/Pulumi
    普通 BGP;SG 无中国优化第三方付款可绕过API 能力最强 + 真正小时计费;SG 无 CN2 是缺点;适合工程化自动化程度高的场景
    + +

    5.2.2 精品落地池候选厂商(Exit 节点 · 稳定保留)

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    厂商月价范围推荐节点线路类型延迟→大陆IP 质量 / 解锁支付方式推荐场景
    DMIT
    Pro 系列
    TYO: $21.9/月
    HK: $39.9/月
    LAX: $36.9/年起
    TYO · HKG · LAXCN2 GIA 三网全向
    CN2 + AS9929 + CMIN2
    HK: 30–60ms
    TYO: ~80ms
    LAX: 150ms
    DC IP;HK/TYO 部分解锁 Netflix 港/日区;换 IP:每 15 天免费 1 次BTC + 支付宝 + WeChat;无 KYC精品落地首选;CN2 GIA 行业口碑最佳;晚高峰稳定无抖动;TYO Pro 性价比最高
    Misaka Network$4.75/月起HK · TYO · SG自有 AS + Equinix 接入
    高质量 IP Transit
    HK: 10–30ms
    TYO: 50–80ms
    原生 IP;Equinix HK2 顶级机房;流媒体解锁能力强(Netflix / YouTube Premium)Alipay / Visa;无 KYC原生 IP 精品;对 IP 纯净度和解锁效果要求最高的落地场景;价格较低
    AkileCloud
    HK Pro 系列
    ¥35/月
    ≈ $4.9
    HK电信 CN2
    联通 CUG
    移动 CMI
    广州: 8–15ms
    上海: 30–70ms
    三网全优化
    香港原生 IP;Netflix 港区可解锁;B 站 / YouTube PremiumUSDT + 支付宝;无 KYC性价比最高精品;CN2+CUG+CMI 三网全覆盖;价格仅 DMIT HK 的 1/8
    搬瓦工
    BandwagonHost
    LAX: $17/月
    HK: $90/月
    Osaka: $50/月
    HK · LAX · OsakaCN2 GIA-E 三网
    (KiwiVM 可一键迁机房 = 换 IP)
    HK: 55ms
    LAX: 140–160ms
    原生 IP;各区域解锁对应区 Netflix;换 IP 可迁机房(免费)信用卡 / PayPal;无 KYC;未明确 Crypto行业稳定性标杆;HK 价格贵但质量天花板;换 IP 有机房迁移机制;适合预算充足场景
    V.PS
    TYO Focus 系列
    €25/月TYOCN2 GIA + AS9929
    三网回程双优化
    ~80msDC IP;解锁能力未明确;需实测Crypto / PayPal;无 KYC东京 CN2+AS9929 备选;库存受限,需关注补货;价格适中
    GreenCloudVPS
    HK CN2 GIA
    $15/月起HK · SG · TYOHK: CN2 GIA / GT
    SG: 普通 BGP
    HK: ~50msDC IP;流媒体解锁弱;⚠ HK 中国直连限速 10 MbpsBTC;无 KYC预算受限备选;HK 带宽上限 10 Mbps 是硬伤,大流量不适合;BTC 支付方便
    +
    选厂商优先顺序
    + 消耗品池:HostHatch(API自动化)→ Servury/ExtraVM(极匿名)→ RackNerd(最便宜但手动)→ Vultr(API好但IP脏)
    + 精品落地池:DMIT TYO/HK Pro(首选,CN2 GIA口碑最佳)→ Misaka(原生IP/解锁)→ AkileCloud HK Pro(性价比)→ 搬瓦工(预算充足时)
    + 每家厂商使用独立账号体系,不产生关联(见 §6.5)。
    + + +

    5.2.3 域名注册商候选(接入域名 · 控制面域名)

    +

    数据来源:各注册商官网 + KYCnot.me 隐私评级 + 社区实测,调研日期 2026-06。

    + +
    消耗品接入域名(批量注册 · 频繁轮换)
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    注册商.COM 年价加密货币支付WHOIS 隐私API 自动化KYC 要求管辖地推荐场景
    Porkbun$9.73 注册
    $10.91 续费
    BTC / BCH / ETH / LTC / USDC✓ 永久免费✓ REST API
    注册/删除/DNS 全支持
    标准(美国 ICANN)美国(俄勒冈)消耗品首选;价格最低 + 多 Crypto + API 齐全;轮换成本约 $10/域/年
    Dynadot~$10.88 续费BTC / ETH / LTC 等多种✓ 永久免费✓ REST API
    含 dropcatch(抢注到期域名)
    标准(美国 ICANN)美国(加州)API 含抢注 + 后市场功能;适合需要回收旧域名的场景;400+ TLD
    Namecheap$8.99 注册
    $18.48 续费
    BTC / BCH via Cryptomus⚠ 首年免费,次年 $2.88/年✓ XML API
    功能最全但续费价涨幅大
    标准(美国 ICANN)美国注册价最低 $8.99;续费涨价严重($18.48),批量长期使用需注意成本
    + +
    控制面 / 高隐私稳定域名(稀少 · 长期保有 · 极匿名)
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    注册商.COM 年价加密货币 / 匿名WHOIS 隐私APIKYC管辖地推荐场景
    Njalla
    njal.la
    $17.47/域/年XMR(Monero)主要支付;最匿名;可 Tor 登录✓ 最强
    Njalla 是法律上的域名所有人,你持使用权
    ✓ JSON-RPC 2.0完全零 KYC;支持 XMPP 注册无邮箱瑞典(Pirate Bay 创始人 Peter Sunde 创立)控制面首选;域名所有权法律隔离 + XMR + 零KYC + Tor,身份隔离最彻底
    1984.is请直接询价
    冰岛注册商
    BTC + XMR✓ 免费保护✗ 无公开 API低 KYC;隐私优先冰岛(非 14 眼联盟成员)管辖地多样化备选;BTC+XMR;冰岛法律体系与美国/EU 独立;适合备用控制面域名
    OrangeWebsite请直接询价BTC;匿名注册✓ 免费保护✗ 无公开 APILevel 2 KYC(Crypto 付款时)冰岛(2009 年创立,自由言论导向)冰岛第三选;不推荐主力,API 缺失 + 部分 Crypto 需 KYC
    Gandi$11 注册
    ⚠ $38 续费(高!)
    无 Crypto;信用卡/转账✓ GDPR 强制保护✓ REST APIEU 标准 GDPR法国(EU)EU 司法管辖备选;续费 $38 价格贵;无 Crypto 是硬伤;不推荐为首选
    + +
    DNS 解析服务选择
    +
    + + + + + + + + + + + + + + + + + + + + + +
    服务价格特点注意事项
    Cloudflare DNS(免费版)免费最快 anycast 解析;全球 TTFB 最低;API 完整;支持 Proxy 模式(CDN + 源站 IP 隐藏)⚠ 必须使用与个人 EC2 完全独立的 Cloudflare 账号——两个账号一旦被关联(同邮箱/支付方式),VPN 域名被封会连累 51yanmei.com 个人账号
    Cloudflare DNS(付费 $20/月)$20/月起DDoS 保护增强;高级防火墙规则;适合控制面 API 域名控制面 API 域名量少,可考虑 Pro 增强防护
    HE.net(Hurricane Electric)免费老牌 DNS,完全免费;适合作 Cloudflare 的 Secondary DNS 备份仅做备份,不作主 DNS;主 DNS 出问题时 HE.net 接管防止域名失联
    + +
    ⛔ 绝对禁用 —— 中国大陆注册商 / DNS 服务
    + 阿里云域名(万网)/ DNSPod / eName / West.xyz / 中国万网及其他陆资注册商:均受《网络安全法》管辖,政府可随时强制接管域名或 DNS 记录,无法用于 VPN 基础设施
    + .CN / .中国 TLD 同样禁止:域名受 CNNIC 管辖,实名制,无匿名性。
    + +
    域名选购优先级
    + 消耗品接入域名:Porkbun(最低成本 + 多 Crypto + REST API)→ Dynadot(API 含抢注)→ Namecheap(注册便宜但续费贵)
    + 控制面域名:Njalla(XMR + 零KYC + 法律代持,首选)→ 1984.is(冰岛管辖多样化备选)
    + DNS 解析:Cloudflare(独立账号)+ HE.net 作 Secondary 备份
    + 账号隔离:注册商账号 / Cloudflare 账号均独立于 EC2 个人账号体系(见 §6.5)
    +

    5.3 监控告警

    + +
    +

    §6节点选购、扩容方案与轮换策略

    +

    本节回答三个实操问题:买什么机器从 1 台到 N 台怎么演进哪些机器需要频繁轮换。VPN 生产网络与 EC2 个人测试机彻底分离,独立账号、独立支付、独立域名体系。

    + +

    6.1 首台测试机推荐

    +

    第一台机器用来跑通「接入点+落地节点」合一的单跳架构,验证 REALITY / Hy2 可用性。

    +
    + + + + + + + + + +
    维度推荐说明
    厂商Vultr / Racknerd / BuyVM / 搬瓦工支持加密货币付款、隐私注册;避免 AWS/GCP/Azure(IP 段被重点封锁)
    区域HK / JP / SG(首选)· LA / 韩国(备选)靠近大陆,延迟低(50–120ms);HK 被封风险高但速度好,SG 稳定
    规格1 vCPU / 1 GB RAM / 20 GB SSD / 1 TB 带宽sing-box 极轻量,实际流量带宽是瓶颈;1 TB/月约够 100 用户日常使用
    计费按月 $3–8,或按小时(消耗品机器)接入点用按小时,落地和控制面用包月稳定套餐
    OSUbuntu 22.04 LTS(minimal)社区脚本最多,cloud-init 支持好;不用 CentOS
    网络原生住宅或数据中心 IP(非共享 NAT)共享 NAT 的 IP 通常已被批量标记;要独立 /32 IP
    +
    首台机器不要买大厂 AWS / Google Cloud / Microsoft Azure 的 IP 段被 GFW 重点盯防,REALITY 伪装效果大幅降低。测试首选 Vultr Tokyo 或 Racknerd HK,几美元/月,被封直接换。
    + +

    6.2 单机到 N 台:演进路径

    + + +
    +
    + 1 台 + 单跳直出(接入 = 落地)— 测试 / 极小规模 +
    +
    +
    机器1 台 VPS(消耗品 or 精品)· 接入点和落地节点合一
    +
    部署sing-box(REALITY + Hy2)· 用户 tcp:443 + udp:443 直接进来、直接出去
    +
    优点最简单,1 台搞定,配置量最小
    +
    缺点IP 被封 = 全部用户断线· 没有隔离,IP 换了客户端配置也要更新
    +
    控制面可暂时手动管理(无 API Server)· 仅适合 <10 人内测阶段
    +
    +
    适合阶段:Phase 0 验证 · 个人测试 · 不建议用于正式上线
    +
    + + +
    +
    + 2 台 + 接入 + 落地分离(推荐起步架构) +
    +
    +
    台 1接入点(消耗品 VPS)· 用户看见的 IP · 运行 sing-box · 被封即换
    +
    台 2落地节点(精品 VPS)· 用户看不见 · 实际出境 IP · 稳定不换
    +
    流量用户 → 接入点 → 内部隧道(WireGuard)→ 落地节点 → 互联网
    +
    好处接入点被封:换台 1 即可· 台 2(精品IP)几乎不会被烧 · 客户端只需更新接入 IP
    +
    控制面可以用 API Server(第 3 台独立机器)或暂时手动
    +
    +
    适合阶段:Phase 1 · 正式上线起步 · 推荐从这里开始
    +
    + + +
    +
    + 3 台 + 多接入点 or 加入中转层 +
    +
    +
    方案 A2 台接入点 + 1 台落地· 多地区接入(如 HK + SG),提升覆盖和可用性
    +
    方案 B1 台接入 + 1 台中转 + 1 台落地· 接入→中转隧道→落地:隐藏落地 IP 更彻底,抗溯源
    +
    推荐方案 A(更实用)· 方案 B 适合落地 IP 极难获取的情况(如解锁用原生 IP)
    +
    控制面此时强烈建议上 API Server· 手动管 3 台节点的配置/密钥同步成本已很高
    +
    +
    适合阶段:Phase 1+ · 开始商业化 · 几十到几百用户规模
    +
    + + +
    +
    + N 台 + 完整弹性架构(§1 目标形态) +
    +
    +
    入口池N 台消耗品接入点(自动开退机)· 分布 HK/JP/SG/LA · 免费用户/付费用户独立池
    +
    中转池2–4 台中转节点(可选)· 大带宽低价 · 各区域就近
    +
    落地池3–5 台精品落地节点· 不同解锁特征(Netflix/Disney+ 原生 IP)
    +
    控制面1 台 API Server(稳定云,可 HA)· MySQL + Redis · 管理所有节点生命周期
    +
    探针境内多 ISP 拨测节点· 自动判封 → 触发补新 · 详见 §4
    +
    +
    适合阶段:Phase 2–3 · 千级用户规模 · 需要 Terraform + 多厂商账号体系
    +
    + +

    6.3 各类机器规格与预算参考

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    角色规格厂商画像区域预算
    接入点
    消耗品
    1 vCPU / 512 MB–1 GB / 1 TB 带宽冷门小厂 ≥3 家:Vultr / Racknerd / CloudSilk / BuyVM · 支持加密货币HK / JP / SG / LA$3–6 / 月 · 按小时更佳
    中转节点
    低频换
    1 vCPU / 1 GB / 2–5 TB 带宽大带宽便宜厂商:BandwagonHost / Vultr / HetznerJP / SG / 法兰克福$5–12 / 月
    落地节点
    稳定
    1 vCPU / 1 GB / 1 TB 带宽 · 原生 IP稳定精品厂商:Linode / DigitalOcean / GreenCloudVPS · 原生住宅 IP 优先HK / JP / SG · US West$6–15 / 月
    API 控制面
    永久
    2 vCPU / 2 GB / 40 GB SSD最稳定厂商:DigitalOcean / Linode / Hetzner · 不需要靠近中国US East / 法兰克福(低延迟不是首要)$10–20 / 月
    + +

    6.4 轮换频率策略

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    机器角色轮换频率触发条件轮换方式
    接入点高频① 被封即换(自动触发)
    ② 主动:每 2–4 周轮换一次,防止 IP 被画像
    厂商 API 自动开新机 → 探活 → 替换旧机 → 删旧机;全程无需手动 SSH
    中转节点中频① 带宽严重限速时
    ② 每季度主动评估
    手动 or 半自动替换;中转 IP 不直面用户,被封概率低
    落地节点极低频① 极少数情况被目标网站 ban IP
    ② 解锁需求变化
    手动替换;精品 IP 轮换成本高,需提前备份配置;draining 期 ≥1h
    API 控制面不轮换不轮换机器本身,只升级软件版本HA 蓝绿部署(API 有状态,MySQL 主从);IP 可绑定 CF Access,不公开暴露
    +
    最重要的轮换原则 接入点是消耗品,被封不是事故而是预期;落地节点是资产,应尽量保护不暴露。用户看见的 IP = 接入点 IP = 可以随时换掉的;落地 IP 只在内部隧道中传递,GFW 无法直接观测。
    + +

    6.5 账号隔离红线(与 EC2 彻底分开)

    + +
    +