-
-
Notifications
You must be signed in to change notification settings - Fork 5
Architecture
川意 · MiChongs edited this page Jul 22, 2026
·
1 revision
WutherCore 是一个 Cargo workspace。配置、入站、解析、路由、选择、出站、流量接管、API 与持久化拆成独立 crate,由 wuther-core 负责装配。
flowchart TB
CLI["wuther-core CLI"] --> Config["core-config"]
Config --> Runtime["core-runtime"]
Inbound["core-inbound"] --> Runtime
Capture["core-capture"] --> Runtime
Runtime --> Resolver["core-resolver"]
Runtime --> Route["core-route"]
Route --> Ruleset["core-ruleset"]
Runtime --> Smart["core-smart"]
Runtime --> Outbound["core-outbound"]
Feeds["core-feeds"] --> Runtime
Runtime --> Store["core-store"]
Runtime --> Observe["core-observe"]
API["core-api"] --> Runtime
Process["core-process"] --> Route
依赖方向不是严格分层模型:core-runtime 负责把多个能力组合成一条连接路径,core-capture 和 core-outbound 也会调用解析、规则与观测能力。新增跨模块调用前,应先判断它属于配置编译、运行时编排还是协议细节。
sequenceDiagram
participant App as 应用
participant In as Mixed / Capture
participant Rt as Runtime
participant Dns as Resolver
participant Rule as Route + Ruleset
participant Sel as Group Selector
participant Out as Outbound
App->>In: TCP/UDP 流量
In->>Rt: 目标、源地址、进程与捕获元数据
Rt->>Dns: 域名解析或 Fake IP 反查
Dns-->>Rt: IP / 域名映射
Rt->>Rule: 连接上下文
Rule-->>Rt: 动作或策略组
Rt->>Sel: 选择可用节点
Sel-->>Rt: 节点与选择理由
Rt->>Out: 建立出站或转发 UDP
Out-->>App: 双向数据
运行时同时把连接、流量、节点选择与错误交给 core-observe,并通过 core-api 暴露给管理端。
| Crate | 主要职责 | 不应承担 |
|---|---|---|
wuther-core |
CLI、进程启动、组件装配 | 协议细节和路由算法 |
core-config |
YAML 模型、Profile、默认值、迁移、RuntimePlan
|
网络 I/O |
core-inbound |
HTTP/SOCKS5 监听与入站会话 | 节点选择 |
core-capture |
TUN、TPROXY、REDIRECT、系统路由与平台适配 | 协议握手 |
core-runtime |
生命周期、调度、健康检查和组件编排 | 平台命令拼装 |
core-resolver |
DNS、缓存、Fake IP、上游策略 | 通用路由决策 |
core-route |
规则执行、嗅探结果和匹配上下文 | 订阅下载 |
core-ruleset |
外部规则集解析、匹配和格式转换 | 连接调度 |
core-smart |
节点评分、学习、Pin/Avoid 和选择解释 | 节点协议 |
core-outbound |
出站协议、传输层和 UDP 能力 | 顶层配置加载 |
core-feeds |
订阅拉取、缓存、解析和更新 | 出站握手 |
core-api |
原生 API、兼容 API、鉴权与限流 | 系统权限管理 |
core-observe |
日志、流量、连接表和 watchdog | 路由配置 |
core-store |
redb 持久化 | 业务策略 |
core-process |
进程识别 | 连接转发 |
core-mesh |
Mesh 相关抽象 | 顶层 CLI |
- CLI 解析子命令和配置路径。
-
core-config加载 YAML,应用 Profile 默认值并编译为RuntimePlan。 - Store、订阅与规则集管理器准备运行状态。
- Runtime 创建解析器、路由器、策略组和出站注册表。
- Mixed 入站、管理 API 与配置指定的 Capture 方式启动。
- 退出或启动失败时,已安装的系统路由和捕获规则按 guard/事务路径回滚。
check 只执行配置加载与编译;explain 输出最终 RuntimePlan,适合确认默认值和路由展开结果。
- 在
core-outbound实现统一 Outbound 接口; - 在节点解析模型中加入协议与字段映射;
- 在 registry 中完成构造与错误处理;
- 覆盖握手、异常输入、关闭、UDP 能力和敏感日志测试;
- 更新 功能矩阵 与示例。
- 先在配置模型中定义输入形式;
- 编译到稳定的运行时匹配结构;
- 明确多个字段之间的 AND/OR 语义;
- 覆盖字符串简写、对象形式、错误提示和外部规则集交互。
- 权限探测与安装必须分开;
- 系统修改需要幂等清理和部分失败回滚;
- 说明与其他 VPN、防火墙和路由软件的冲突;
- 在无法覆盖的平台上提供可读诊断,而不是静默降级。
- API 密钥、订阅、节点密码、UUID、PSK 和私钥不得写入普通日志。
- 管理 API 暴露到非本机地址时必须配置
ui.secret和 CORS allowlist;缺少ui.secret时配置编译失败。 - 系统路由与防火墙修改应保留恢复路径。
- 协议规定的固定向量、测试凭据和真实硬编码凭据必须在安全扫描中区分处理。
- 外部输入包括 YAML、订阅、规则集、DNS 响应和管理 API;解析失败应返回边界清楚的错误。
WutherCore · Releases · Issues · Discussions · MIT License