49 lines
2.3 KiB
Markdown
49 lines
2.3 KiB
Markdown
# 架构说明
|
|
|
|
## 控制路径
|
|
|
|
1. 管理员在控制面创建服务器、客户和链路草稿。
|
|
2. 编排器为每位客户生成独立凭据,并从各服务器端口池分配端口。
|
|
3. 转发线路为每位客户生成一个出口资源和一个或多个入口资源;单机直连只生成入口资源。
|
|
4. Agent 通过 HTTPS 主动轮询任务,控制面无需登录目标机。
|
|
5. Agent 把资源片段写入 `/etc/nexusgate/xray/resources/`,合并为完整配置。
|
|
6. Agent 运行 `xray run -test`;只有通过校验才替换生效配置并重启 Xray。
|
|
7. Agent 回报 Reality 公钥、任务结果、心跳、流量增量和 IP 观察。
|
|
|
|
## 数据路径
|
|
|
|
数据流量不经过控制面:
|
|
|
|
```mermaid
|
|
flowchart LR
|
|
C[客户端] --> R[入口资源]
|
|
R --> E[出口资源]
|
|
E --> I[互联网]
|
|
C -. 单机直连 .-> D[直连资源]
|
|
D --> I
|
|
```
|
|
|
|
入口协议和链路传输协议使用独立适配器,因此无需相同。例如入口可以是 VLESS Reality Vision,而中转到落地使用 Shadowsocks 2022。
|
|
|
|
## 资源隔离
|
|
|
|
- 每个客户在每条链路中拥有独立 UUID 或密码。
|
|
- 每个资源使用唯一 inbound、outbound 和 routing tag。
|
|
- 入口资源只把对应 inbound 路由到对应出口 outbound。
|
|
- 出口资源只把对应 inbound 路由到独立 freedom outbound。
|
|
- 单机资源把对应 inbound 直接路由到独立 freedom outbound。
|
|
- Reality 私钥位于 `/etc/nexusgate/keys.json`,权限 `0600`。
|
|
|
|
## 故障行为
|
|
|
|
- 新配置校验失败:删除或恢复刚修改的资源片段,不切换运行配置。
|
|
- Xray 重启失败:恢复上一份完整配置并再次尝试启动。
|
|
- Agent 离线:控制面保留任务;运行任务租约超时后自动重试,最多 3 次。
|
|
- Agent 重新注册:撤销旧密钥,为该设备重新生成已有部署的对账任务。
|
|
- 任务失败:部署标记为失败、线路标记为异常,可只修复失败项或完整重建。
|
|
- 控制面离线:已运行的数据面继续工作,只有新配置和统计暂停。
|
|
|
|
## 存储
|
|
|
|
当前版本使用单个 JSON 数据文件和原子 rename。它减少了中小规模部署的依赖与维护成本。写入通过进程内队列串行化,不适合多个控制面实例共享写入;需要主动—主动高可用时应迁移到后续 PostgreSQL 存储。
|