Files
MoShiro/TODO.md
T
justme cd193378a6
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline failed
ci/woodpecker/push/dev-image Pipeline failed
probe: add native OpenWrt deployment and signed automatic updates [CI]
2026-10-20 14:15:01 +08:00

4.1 KiB
Raw Blame History

TODO

按主题记录还没做的事,做完就删掉对应的条目。已经实现的东西以 docs/ 和代码为准。

测量

  • 路由跳数、路径漂移和 trace
  • QUIC 握手耗时:TCP 建连和 TLS 握手已经有了(connect 任务)。.NET 的 QUIC 依赖系统里的 msquic 原生库,和节点「只依赖 OpenSSL、NativeAOT 单文件」冲突,要做只能自己写最小的 QUIC Initial 握手探测;另外 .NET 还没有 QUIC datagram(dotnet/runtime#123418 只是提案),System.Net.Quic 只有可靠的流,重传会盖住丢包,测不了 UDP 丢包率
  • 网页长截图
  • pcap / eBPF 采集

任务与面板

  • 单个 Agent 的任务(目前是线路模板加按 Agent 的覆盖,没有只属于某一个 Agent 的独立任务)
  • 原生 webhook 投递;告警(基于 webhook)。实现之前先定约束(只允许 HTTPS、禁止私网和回环、不跟随重定向、限制超时和响应大小、解析后再检查地址),见 docs/security/security.md 第 9.2 节

访客页面

  • 人机验证:访客页面要通过验证才能拉数据,前端访问时静默触发。候选 tiago2/cap 和 Cloudflare Turnstile。

更新

  • 更新遥测(现在面板只有每个节点的「当前更新状态」)
  • 回滚路径的实机测试:容器节点更新后观察 20 秒、失败回滚,只有单元和脚本测试,没有在真实节点上触发过。
  • 更新的灰度和自动策略:按标签分批发布;POLICY=auto 的长期验证。
  • 纯二进制节点的更新:OpenWrt Probe 已有独立的签名更新器、procd 适配和 CI dev/release 源(见部署文档),仍需真实 ARM64 路由器验证、发布密钥轮换和原生软件包。其他平台的通用 fleet-updater、fleet-release、Windows 服务适配仍待实现。设计要点:
    • 信任来自签名:只接受离线发布密钥签名的清单,发布源可以是面板、GitHub Releases 或任意 HTTP 服务;面板被攻破也推不出恶意二进制。
    • 本地说了算:更新策略(auto / notify / pinned:<version>)和信任的公钥写在节点本地配置里,面板只能「建议」;支持多把公钥以便轮换。
    • 清单带 app、channel、version、min_from、各 RID 制品的 sha256 和大小、key_id、签名(对规范化 JSON 签名);本地记录已装过的最高版本,拒绝降级和旧清单重放。
    • 流程:下载 → 校验 → 解包到 versions/<v>/ → 原子切换 current(Linux 符号链接,Windows 目录联结)→ 重启服务 → 等健康信标确认 → 失败切回旧版本并把该版本标记为坏版本。
    • 权限分离:更新进程只能写安装目录和重启被管理的服务,读不到节点身份私钥。
    • OpenWrt:keep_versions = 1,下载前检查闪存剩余空间。
    • 容器节点已经实现的那一套(清单签名、seq 防重放、按 digest 拉取、回滚)见 docs/ops/deployment.md。

安全

  • 零信任:设计和各缺口的状态在 docs/security/security.md。已完成:协议方向声明表、Probe 自己生成密钥、Agent 预握手敲门、操作员集合与创世固定、服务器身份和安全链路、属主固定。还没做:测量数据的产生者签名和归属校验、入库配额、Probe 只拨公网地址、管理端 CSP 之外的输入校验、extension 框架(敏感能力都放进可选安装的独立 extension,核心保持 NativeAOT)、吊销表;可选的 UDP 单包授权、UDP 会话迁移的路径验证。
  • extension(Web SSH、TTY、更新遥测,敏感 operator):设计时必须保住「节点是纯采集器」这条边界,见 README.md 的项目边界。
  • 对 UDP 包、控制帧、RawChunk、JSON-RPC 做模糊测试;伪造签名和重放的专项测试。

打包

  • OpenWrt:procd 脚本、ipk/apk 包、sysupgrade 保留列表,在 aarch64 路由器上长时间运行验证。
  • Windows 服务适配。