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 周期 上报 拨测节点

§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-edge Docker · pangolin-edge:local :80/tcp :443/tcp host 数据面 控制面 Pangolin
pangolin-singbox Docker · sing-box:v1.13.12 :443/udp host 数据面 Hysteria2 Pangolin
Marzban REALITY marzban 服务(宿主) 127.0.0.1:10443 loopback 数据面 VLESS+REALITY 现有(勿动)
Marzban 面板 marzban 服务(宿主) 127.0.0.1:8899 loopback 控制面 Web UI 现有(勿动)
jiu.service systemd(Go 二进制) 127.0.0.1:8080 loopback 控制面 电商 API 现有(勿动)
blog(Next.js) Docker / pm2 127.0.0.1:3000 loopback 控制面 Blog 现有(勿动)
Umami 统计 Docker 127.0.0.1:3001 loopback 控制面 统计后台 现有(勿动)
billing.service systemd :18080/tcp host(独立,不经 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.com 127.0.0.1:10443 ——(直通) Marzban REALITY 数据面 → 互联网 数据面
default(其他 SNI) 127.0.0.1:10443 ——(直通) 同上(兜底) 数据面
vpn.51yanmei.com 127.0.0.1:8443 SSL 终止 → :8899 Marzban 管理面板 控制面
blog.51yanmei.com 127.0.0.1:8444 SSL 终止 → :3000 / :3001 Next.js 博客 + Umami 统计 控制面
jiu.51yanmei.com 127.0.0.1:8445 SSL 终止 → :8080 jiu.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 流量路径

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

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

§3节点生命周期状态机

provisioning厂商 API 开机中
probing探活:境内外可达性验证
up在目录 · 接受连接
draining不接新连接 · 排空存量
down已出目录
destroyed销毁 · IP 释放
up → down(跳过 draining):判封确认时立即下架。probing 失败 → 直接 destroyed(坏 IP 不入池)。每次迁移写 node_events 并 bump 目录 version,客户端收到新 version 即平滑迁移。

§4一键更换与自动更换

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

replace(node)管理端触发
开新机厂商 API(同区域 · 厂商池内可换家)
cloud-init装 agent · 自注册
probing境内外探活通过
新机入池version bump
旧机 draining→ destroy · IP 释放
先建后拆(make-before-break):任何更换动作期间容量不下降

4.2 自动更换:判封 → 下架 → 补新

判封信号(三路互证,避免误判)

信号源采集说明
境内探针电信 / 联通 / 移动 ≥3 个拨测点,每 5 分钟:TCP 连通 + TLS 握手 + 真实协议握手核心信号;探针点用境内云函数/拨测服务,与运营身份隔离
境外对照境外探针同款探测区分「被墙」与「机器挂了」:境内挂 + 境外通 = 疑似被封;两边都挂 = 故障
流量侧agent 上报在线数/带宽,环比骤降(如 15 分钟内 −80%)辅助信号,提早怀疑

判定与处置规则(scheduler 驱动,阈值可配)

主动降低被封概率(比换得快更重要)
  • REALITY 伪装 SNI 定期评估更换(目标站不可被墙、延迟特征合理);密钥/short_id 随节点轮换。
  • Hysteria2 端口跳跃(区间随机),抗 UDP QoS 与端口特征。
  • 新 IP 上线前先「养」:探活通过后小流量灰度 24h 再放满 weight,避免新 IP 行为突变被标记。
  • 免费池与付费池物理隔离(不同厂商账号),免费池被批量烧不殃及付费池。

§5调度、容量与厂商池

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

5.2 厂商池策略

厂商画像要求
消耗品池(entry/free)冷门小厂 ≥3 家,按量/小时计费,IP 便宜量大有 API 可自动开退机;支持加密货币付款、隐私注册;避开被重点封锁的大厂 IP 段
精品池(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 · TYO BTC;接近匿名 ✓ REST API
支持创建/删除实例
普通 BGP,无 CN2 无需 API 自动化首选;三亚洲节点全覆盖;NVMe 性能好;适合批量消耗自动轮换
Servury $3.99/月
$0.55/天
新加坡 · 欧洲 BTC / XMR / ETH;完全零 KYC(无需邮箱,32 位随机凭证) 普通 BGP 完全无需 极匿名消耗品;按日计费便于快速轮换;凭证无账号体系,极隐私
ExtraVM $4.5/月 SG · TYO · LAX · AMS 50+ 币种(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 · Osaka BTC via BitPay ✓ REST API v2
Terraform provider
普通 BGP;HK 走 163 骨干,晚高峰丢包 5–15% 信用卡或 BTC API 完整成熟;覆盖 HK/JP/SG;IP 段曝光度高,需频繁换;不适合做长期精品节点
AkileCloud
HK Lite 系列
¥9/月
≈ $1.3
HK · JP USDT;无 KYC NTT/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 · LAX CN2 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 Premium USDT + 支付宝;无 KYC 性价比最高精品;CN2+CUG+CMI 三网全覆盖;价格仅 DMIT HK 的 1/8
搬瓦工
BandwagonHost
LAX: $17/月
HK: $90/月
Osaka: $50/月
HK · LAX · Osaka CN2 GIA-E 三网
(KiwiVM 可一键迁机房 = 换 IP)
HK: 55ms
LAX: 140–160ms
原生 IP;各区域解锁对应区 Netflix;换 IP 可迁机房(免费) 信用卡 / PayPal;无 KYC;未明确 Crypto 行业稳定性标杆;HK 价格贵但质量天花板;换 IP 有机房迁移机制;适合预算充足场景
V.PS
TYO Focus 系列
€25/月 TYO CN2 GIA + AS9929
三网回程双优化
~80ms DC IP;解锁能力未明确;需实测 Crypto / PayPal;无 KYC 东京 CN2+AS9929 备选;库存受限,需关注补货;价格适中
GreenCloudVPS
HK CN2 GIA
$15/月起 HK · SG · TYO HK: CN2 GIA / GT
SG: 普通 BGP
HK: ~50ms DC IP;流媒体解锁弱;⚠ HK 中国直连限速 10 Mbps BTC;无 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;匿名注册 ✓ 免费保护 ✗ 无公开 API Level 2 KYC(Crypto 付款时) 冰岛(2009 年创立,自由言论导向) 冰岛第三选;不推荐主力,API 缺失 + 部分 Crypto 需 KYC
Gandi $11 注册
⚠ $38 续费(高!)
无 Crypto;信用卡/转账 ✓ GDPR 强制保护 ✓ REST API EU 标准 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 / Hetzner JP / 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 彻底分开)