diff --git a/doc/04-infra.html b/doc/04-infra.html index fd66708..46bd2c7 100644 --- a/doc/04-infra.html +++ b/doc/04-infra.html @@ -5,89 +5,6 @@ 04 机器与网络拓扑 · 穿山甲架构设计 - @@ -110,456 +27,50 @@ code.port.ops { background: var(--bg-subtle); color: var(--fg2); border: 1px so
Chapter 04 · Infrastructure & Topology

机器与网络拓扑

-

本章分两层描述拓扑:§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 周期 - - - - 上报 - - - - 拨测节点 - -
+

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

- -
-

§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 运维面:证书自续签循环

-
-
-
pangolin-edge 容器内后台进程(启动后 60s 开始)
-
每 12h
-
certbot renewDNS-01 验证 · --quiet
-
-
Cloudflare DNS API/etc/cloudflare.ini · TXT record
-
-
Let's Encrypt证书颁发
-
-
-
若有续期
-
-
nginx -s reload--deploy-hook · 容器内热重载
-
-
/etc/letsencryptrw 挂载卷(宿主 + edge 共享)
-
-
无宿主 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 流量路径

+

§1三层弹性拓扑

-
VPN 客户端Flutter · sing-box libbox
-
REALITY
或 Hy2
-
入口节点 Entry消耗品 IP · :443 · sing-box
-
内部隧道
(付费用户)
-
中转节点 Relay可选 · 大带宽低价
-
内部隧道
-
落地节点 Exit精品 IP · 稳定出口
+
用户REALITY / Hysteria2
-
🌐 目标网站Netflix / Google / etc.
+
入口层 Entry消耗品 IP 池 · 多厂商 · 高频轮换
+
+
中转层 Relay(可选)内部隧道转发
+
+
落地层 Exit精品 IP · 稳定出口 · 用户不可见
-
-
免费用户:入口 = 落地(单跳直出),消耗品池;付费用户:入口 → 落地两跳,中转层按需启用;客户端 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
+
免费用户:直连消耗品池入口(单跳直出)。付费用户:入口 → 落地两跳为主,中转层在入口与落地间链路质量差时按需启用。
-
-
控制面负责全部节点生命周期管理;数据面节点不保存任何用户信息;两面物理隔离,互不干扰。
-
-
判封三路互证:境内探针 + 境外对照 + 流量侧骤降 · 避免误判
+
被识别阻断的永远是入口 IP(暴露面);落地 IP 只对内部隧道可见,几乎不会被烧
- -

1.3 三层节点角色对照

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

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

-

§3节点生命周期状态机

@@ -576,7 +87,7 @@ code.port.ops { background: var(--bg-subtle); color: var(--fg2); border: 1px so
destroyed销毁 · IP 释放
-
up → down(跳过 draining):判封确认时立即下架。probing 失败 → 直接 destroyed(坏 IP 不入池)。每次迁移写 node_events 并 bump 目录 version,客户端收到新 version 即平滑迁移。
+
up → down(跳过 draining):判封确认时立即下架。probing 失败 → 直接 destroyed(坏 IP 不入池)。每次迁移写 node_events 并 bump 目录 version。
-

§4一键更换与自动更换

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

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

    §5调度、容量与厂商池

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

    @@ -656,453 +161,17 @@ code.port.ops { background: var(--bg-subtle); color: var(--fg2); border: 1px so 精品池(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 彻底分开)

    - -
    -