Files
dsh_ai1net_server/dsh-server-docs/ops/接续包_覆盖网络线_20260916.md
T
admin 04776af4b1 docs: 工作区根项目文档批量入仓(04-调整方案 113–128 / 交接单 T09–T21 / ops / archive)
起因:用户 2026-09-17 明确「所有文档都要同步,都放在开发仓库 docs 对应文件夹下」。
判据:工作区根 *.md 中在仓库(git ls-files --quotepath=false)搜不到的那些。

入仓 33 份(一律复制,工作区根原件保留不动,避免引用断链):
- 04-调整方案/113–128(16 份 · 原子占号后落盘):覆盖网络 传输方案取舍 / 应用场景与待完善清单 /
  插件化vs改内核 / 问题逐条推演 / 参数表与观测口径;会合中继拆分取证与改造方案;
  集群化改造方案 Manager-Worker;跨节点迁移与节点自举;项目代码分层范式与迭代风险评估;
  搬运与共享重建方案 guest w47→w106;方案规划方法提炼;文档无效信息审计报告;
  会话接续机制复盘与修复;会话接续规范;dsh 客户端化部署方案;dsh 桌面客户端开发方案
- 交接单/archive/交接单-已完成/T09–T21(13 份 · 覆盖网络线已完成单归档)
- ops/(2 份运行态指针:接续入口 / 接续包 · 覆盖网络线)
- archive/(2 份临时与内部简报)

已排除(无需重复入仓):覆盖网络线 10 份方案正文已入档案 103–112(文件名不同)。

登记:INDEX.md §二 新增 04-113–128 共 16 行 + §四 追加 T09–T21 说明 + 机器摘要行刷新
(⛔ 未跑 docs-index-stats.py --write:该脚本会按 \r\n 归一化全文件行尾,故改为字节级单行替换);
README.md 追加 1 条入仓指针;docs-manifest.json 复跑 scripts/docs-manifest.py 刷新。

验收:工作区根 47 份 .md —— 同名已入仓 8 / 本次内容一致 29 / 已知改名映射 10 / 未入仓 0;
git status 待提交清单只含本次新增与登记 3 件(未涉 src/ 与 relay 代码面)。
2026-09-17 18:24:19 +08:00

5.5 KiB
Raw Blame History

接续包 · 覆盖网络线 · 2026-09-16 18:3x(v3)

用法:新会话只读这一份 —— ⛔ 不许先 Glob/Grep 全库摸底、⛔ 不许"再确认一下待办"。 v3 改了什么:① 上次自动接续(17:03)跑了 9 次调用 / 1.5 分钟 / 零产物 ⇒ 「下一步」已从"两件事混装"改成单一机械动作(根因见「给下一棒」);② 全文压到 3KB 内;③ 传输选型结论已更新(撤销"首选 frp")。

接续点 · 覆盖网络线 · 2026-09-16 18:3x

  • 来源会话:408636f2(覆盖网络线:规划复核 → 落地执行 → 收口)| 结束原因:水位 42 万强制收口
  • 原目标(用户原话):①「查看覆盖网络任务的相关文档,规划落地步骤方案,检查方案确认有误调整,准备执行」②「有稳定可行的落地步骤方案了吗,确认是最佳落地方式就开始执行,保证每一步完成后项目都保持可用,逐步交付」③「覆盖网络的功能开发完成了吗」④「重新创建接续会话 看看是否有改善」
  • 基线:HEAD=640813e | 远端 master=640813e(15:0x 实测,未复验)| 全局锁=已释放 | ⚠️ 工作区 13 改 + 1 新增,未 commit(未授权)
  • 产物:
    1. 交接单_覆盖网络落地执行_20260916.md —— §8 = P1/P2/P3 执行记录 + 全部实测证据
    2. 覆盖网络_传输方案取舍_开放端口与自研relay_20260916.md —— §7 成熟件对照 / §8 撤销 frp + 六条判据 + R0
    3. 会合中继拆分_取证与改造方案_20260916.md —— §9 第二轮勘误
    4. 技能 dsh-decision-method v2.8.0(新增 §4.6 选型判据轴;三副本 md5 一致)
  • 校验命令(只读、≤30s):
    ssh [email protected] 'md5sum /opt/dshs/lib/supervisor/spawn.js; grep INSTANCE_PORT /etc/dshs-worker.env; PGPASSWORD=dshs_cluster_2026 psql -h 127.0.0.1 -p 15432 -U dshs -d dshs -At -c "select id,via from dsh_hosts order by id"'
    
    期望:e75427d06fa94cadac800e1570cec273 + DSHS_INSTANCE_PORT_BASE=20000 / SPAN=1000 + w-106|manager-ssh、w-47|local。不符 ⇒ 停下只报告,⛔ 不许照文字硬做。

给下一棒(⛔ 先读这段:上次为什么零产物)

上次(17:03)自动化会话 9 次调用 / 1.5 分钟 / 零产物。根因 = 旧「下一步」把两件事(补判据表 + 测链路画像)混成一句话,且没给可交付的产物路径 ⇒ 会话做完开机四步就无从下手。本次已改成单一机械动作(见下),照做即可闭合。

下一步(唯一动作 = R0-b 链路画像测量,全程只读)

要产出:本机 ↔ 47 ↔ 106 的 RTT / jitter / 带宽实测,写进 覆盖网络_传输方案取舍_开放端口与自研relay_20260916.md 的新 §9(含命令原文 + 数字)。

命令骨架:

  1. 本机 → 47 / 106:ping -n 20 <ip>(jitter 取 mdev 或手算标准差)
  2. 下载带宽:curl -o /dev/null -w '%{speed_download}\n' http://<47或106>/<一个 ~50MB 文件>(无现成文件就先在 47 临时生成,用完删)
  3. 47 ↔ 106 互联:在 47 上 ping -c 20 106.54.21.172 + 同样方式测一次 TCP 吞吐
  4. 记 NAT / 公网可达性结论:从本机能否直连 106 的 19000(决定"打洞"可行性)

⛔ 只做测量 + 写 §9;不装任何 relay、不改配置、不开端口。工具调用 ≤ 8 次。

未完成

  1. R0-b 链路画像 ← = 下一步,唯一动作
  2. R0-a 判据打分表(把 §8.2 那六条补成可打分版)→ 排 R0-b 之后
  3. 功能本体 0/3:presence / 游戏服放 L1 / 块级内容寻址 —— 一个都没开工
  4. S5(443/TCP 兜底) 未做;relay 实现未定(P4 SSH 版判不做)
  5. 本机(客户端类型节点)三项验证 未做
  6. 未 commit(13 改 + 1 新增;红线:未授权不得 commit/push)
  7. ⏳ 待用户裁决:「自动接续」通道留不留(18:2x 已问,未答)

关键决定(勿推翻)

  1. S3 不回环别名、不 portMap —— 实测被 sshd 静默改写;改用实例端口区间隔离(w-47=20000+ / w-106=21000+,避开 OS 临时段 32768-60999)—— 已上线
  2. S2 只加 via(不加 address);via 省略时 COALESCE 不覆盖旧值;回填 w-47=local / w-106=manager-ssh
  3. proxy.ts:109 = 发给上游 dsh 的 Host 头,⛔ 永不可改(连接目标 :136-137)
  4. 控制面已在 PG ⇒ 不存在"改造为 PG"
  5. worker 永远只拨出、不开入站端口;relay 实现未定(撤销 frp:CVE-2026-40910 影响 ≥0.53.0 / dashboard 默认弱口令 / proxyBindAddr 默认绑公网 / 单一静态 token + frpc 明文存 / 服务端默认不强制 TLS)
  6. ⛔ P4(SSH 版中继 + 新开 32023)判不做

回滚点

  • P1:/opt/dsh/backups/lib-pre-S0-20260916-1555.tgz → systemctl stop dshs → 还原 lib → start dshs
  • P2:via 列有默认值 ⇒ 旧代码读 endpoint 不受影响,列可留着不删
  • P3:删 /etc/dshs-worker.env 的 DSHS_INSTANCE_PORT_BASE/SPAN ⇒ 回 listen(0)(零代码回滚)

⛔ 不要重做

P1(47 对齐 640813e)/ P2(via 列 + 回填)/ P3(端口区间隔离)均已完成并验收 —— 证据在交接单 §8。 也不要再论证「S3 用回环别名」(已实测证伪)、「需要改造为 PG」(已经是 PG)、「首选 frp」(已撤销)。