从六环色块加深到结构化 chain_break(reason/owner/sla);显式 sms 单点、 号池额度历史烧速、出口 path_id;串线 crit 自动 ensure-direct;总览 Top break。
177 lines
8 KiB
Markdown
177 lines
8 KiB
Markdown
# 蛮荒 · 网络供应链(VPN / 机场 / 出站路径)
|
||
|
||
> 状态:**已落地(可运维)** · 更新 2026-07-13
|
||
> 仓库:`joy-cli` · 相关 commit 见 `git log --oneline --grep=net-path`
|
||
|
||
## 0. 一句话
|
||
|
||
把 **机场 / Clash / 系统代理 / 出口身份** 当作供应链一环,而不是用「公开代理 46 万 alive」冒充出口能力。
|
||
神州生产域必须 **DIRECT**;蛮荒 clearnet 探价可用 mixed-port;鬼市 onion 走 **Tor 分轨**。
|
||
|
||
## 1. 定位
|
||
|
||
| 是 | 不是 |
|
||
|----|------|
|
||
| 出站路径健康 + 串线检测 + Board 闭环 | 暗网成交 / 代付 / 洗钱 |
|
||
| 订阅 hash、节点数 Δ、延迟、geo/ASN | 订阅 URL / 节点 server 明文进面板 |
|
||
| scutil 系统代理是否指向 789x | 把 free proxy dump 当 KPI |
|
||
|
||
## 2. 五层模型(N0–N5)
|
||
|
||
| 层 | 内容 | 实现 |
|
||
|----|------|------|
|
||
| **N0** | 配置/订阅元数据 hash、profile 文件数、节点数 Δ | `probe-proxy-path.py` → `n0_subscription_meta` |
|
||
| **N1** | Clash Meta controller `:9090` / Verge `:9097` | `n1_controllers` + `primary` |
|
||
| **N2** | 选中节点 `/delay` 抽样 | `n2_delays` |
|
||
| **N3** | 双出口 IP + geo/ASN | `n2_n3_egress`(ipify + ip-api) |
|
||
| **N4** | scutil 系统代理 ON/OFF → 789x(**期望 ON**) | `system_proxy` |
|
||
| **N5** | global 模式 / 生产域未 DIRECT(串线) | `n4_n5_isolation` |
|
||
|
||
## 3. 文件地图
|
||
|
||
| 路径 | 职责 |
|
||
|------|------|
|
||
| `scripts/manhuang/clashctl` | **控制面入口**(status/mode/ensure-direct/probe/regression) |
|
||
| `scripts/manhuang/clash-api.py` | vendored 通用 API CLI(Hsiifu3/clash-verge-skill) |
|
||
| `scripts/manhuang/probe-proxy-path.py` | 主探针(默认 / `--deep`) |
|
||
| `scripts/manhuang/check-net-path-regression.sh` | 回归:crit 串线 → exit 2 |
|
||
| `scripts/manhuang/actions-to-board.sh` | findings → Board observe |
|
||
| `scripts/manhuang/run-quote-probe.sh` | 管线内嵌 net-path |
|
||
| `configs/launchd/com.feibisi.manhuang-net-path.plist` | 每 15min `--deep` |
|
||
| `configs/manhuang/proxy-path.example.yml` | controller / never_via_proxy |
|
||
| `configs/manhuang/clash-rules-shenzhou-direct.snippet.yaml` | **生产 DIRECT 规则草案** |
|
||
| `~/.cache/manhuang/net-path/status.json` | 最新状态 |
|
||
| `~/.cache/manhuang/net-path/history/YYYYMMDD.jsonl` | 历史曲线 |
|
||
| `docs/ops/manhuang-net-path.md` | 本文 |
|
||
|
||
## 4. 日常命令
|
||
|
||
```bash
|
||
cd ~/Projects/joy-cli
|
||
|
||
# —— 控制面 CLI(现成 API 客户端 + 本仓缺口)——
|
||
# 通用 status/mode/切节点:vendored clash-api.py
|
||
# upstream https://github.com/Hsiifu3/clash-verge-skill (MIT,零依赖)
|
||
# 本仓封装:
|
||
bash scripts/manhuang/clashctl status
|
||
bash scripts/manhuang/clashctl mode rule
|
||
bash scripts/manhuang/clashctl ensure-direct # rule + 生产 DIRECT 检查/热加载
|
||
bash scripts/manhuang/clashctl sys-proxy # 期望 ON
|
||
bash scripts/manhuang/clashctl groups
|
||
# 亦可用:python3 scripts/manhuang/clash-api.py --api http://127.0.0.1:9090 status
|
||
|
||
# 深探(延迟 + 串线 + scutil + geo)
|
||
bash scripts/manhuang/clashctl probe --deep
|
||
# 或: python3 scripts/manhuang/probe-proxy-path.py --deep
|
||
|
||
# 回归(期望改完 Clash 后 PASS)
|
||
bash scripts/manhuang/clashctl regression
|
||
# 更严:系统代理+global 也失败
|
||
bash scripts/manhuang/clashctl regression --strict
|
||
|
||
# findings → Board(12h 节流;--force 重发)
|
||
bash scripts/manhuang/actions-to-board.sh
|
||
bash scripts/manhuang/actions-to-board.sh --dry-run
|
||
|
||
# 装/重载定时(若未 load)
|
||
cp configs/launchd/com.feibisi.manhuang-net-path.plist ~/Library/LaunchAgents/
|
||
launchctl bootout gui/$(id -u)/com.feibisi.manhuang-net-path 2>/dev/null || true
|
||
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.feibisi.manhuang-net-path.plist
|
||
```
|
||
|
||
### 4.1 现成 CLI 调研结论(2026-07-13)
|
||
|
||
| 工具 | 结论 |
|
||
|------|------|
|
||
| **clash-verge-skill** | 已 vendoring 为 `clash-api.py`,本机 ClashX Meta `:9090` 实测可用 |
|
||
| **mihomosh** | 更全的独立 Mihomo 工具箱;需配 mihomo-path,与 ClashX Meta GUI 目录不完全一致,未默认采用 |
|
||
| **clashtui / mihoro** | 自管内核,易与 ClashX Meta 双开冲突,**不装** |
|
||
| 官方 | 无业务 CLI,只有 external-controller REST |
|
||
|
||
## 5. 2026-07-13 实测与处置记录(Mac 麟悦)
|
||
|
||
### 5.1 处置前
|
||
| 项 | 值 |
|
||
|----|-----|
|
||
| Clash | Meta · **global** · mixed `:7893` |
|
||
| 系统代理 | **ON** → 127.0.0.1:7893 |
|
||
| 串线 | **crit**(global + 系统代理 + 生产域未 DIRECT) |
|
||
| 回归 | FAIL |
|
||
|
||
### 5.2 已执行处置(脚本/API,非 GUI)
|
||
1. `PATCH /configs` → **mode=rule**(live controller `:9090`)
|
||
2. 从当前订阅缓存生成增强配置,**rules 顶部 prepend 生产 DIRECT**,`PUT /configs?force=true` 热加载
|
||
- 落地文件:`~/.config/clash.meta/config-shenzhou-direct.yaml`(含订阅节点,**勿提交 git**)
|
||
3. Clash Verge enhance:`profiles/rnT7uCOncus6.yaml` prepend 同步
|
||
4. `~/.config/clash.meta/config.yaml` 基线 mode=rule + DIRECT 列表
|
||
5. 串线探针改为:**以 live DIRECT 规则覆盖为主**(mixed-port 200 ≠ 走机场)
|
||
|
||
### 5.3 处置后
|
||
| 项 | 值 |
|
||
|----|-----|
|
||
| mode | **rule** |
|
||
| 生产 DIRECT | weixiaoduo / feicode / support / mall 等 **已在 rules 前 16 条** |
|
||
| 系统代理 | **必须保持 ON** → 127.0.0.1:7893(本机否则上不了外网) |
|
||
| 串线 risk | **ok / info**(系统代理 ON 是常态,不是缺陷) |
|
||
| 回归 | **`check-net-path-regression.sh` → PASS** |
|
||
| 出口 geo 例 | HK · 节点延迟 ~145ms |
|
||
|
||
### 5.4 运维约定(2026-07-13 菲比斯确认)
|
||
|
||
**系统代理必须开着。** 本机外网依赖 Clash「设置为系统代理」;关掉之后浏览器和多数 App **上不了外网**。
|
||
|
||
| 要做 | 不要做 |
|
||
|------|--------|
|
||
| Clash **mode=rule** | 用 **global** 把所有流量(含生产域)塞进节点 |
|
||
| 生产域 **DOMAIN-SUFFIX … DIRECT** 置顶 | 靠 **关闭系统代理** 来「隔离」神州 |
|
||
| 蛮荒 clearnet 探价走 **mixed-port** | 把 scutil 系统代理 ON 当成故障去关 |
|
||
| 订阅更新后重跑 `--deep` / 回归,确认 DIRECT 仍在最前 | 为了回归绿而去关系统代理 |
|
||
|
||
隔离手段 = **rule + 生产 DIRECT**,不是关代理。
|
||
|
||
|
||
## 6. 与 collect / 面板
|
||
|
||
- `manhuang.net_path` 由 `collect_manhuang()` 读 status.json
|
||
- **出口环**不再用 `proxies_alive` 大数刷绿
|
||
- 通道 tab:N0–N5 卡、延迟表、串线 findings、系统代理 ON/OFF、geo
|
||
- 公开代理池默认折叠
|
||
|
||
## 7. Board 闭环
|
||
|
||
| 项 | 值 |
|
||
|----|-----|
|
||
| 项目 | `P-manhuang-net`(owner linuxjoy) |
|
||
| family | `observe` |
|
||
| capability | `observability_ops`(威胁类用 `security_ops`) |
|
||
| 节流 | 同 title hash **12h**(`MANHUANG_BOARD_THROTTLE_S`) |
|
||
| 任务正文 | 含 next + 规则草案路径 |
|
||
|
||
## 8. 铁律
|
||
|
||
- 订阅 URL / 节点私钥 **永不**进 git / dashboard JSON
|
||
- 不成交、不代付、不对第三方写 exploit
|
||
- 神州生产变更仍走 devops / 人工;Board 只 observe
|
||
- **系统代理必须保持 ON**(本机否则上不了外网;菲比斯 2026-07-13 确认)
|
||
- **隔离靠 rule + 生产 DIRECT,绝不靠关系统代理**
|
||
|
||
## 9. 相关文档
|
||
|
||
- [manhuang-supply-chain.md](./manhuang-supply-chain.md) — 六环总览
|
||
- [manhuang-handbook.md](./manhuang-handbook.md) — 管线总手册
|
||
- [manhuang-README.md](./manhuang-README.md) — 文档索引
|
||
- linuxjoy:`docs/setup/flclash-proxy.md` · `docs/infrastructure/nas-unified-proxy.md`
|
||
|
||
## 10. 与供应链 chain_v2
|
||
|
||
- `status.json` 含 **`path_id`**(controller+mode+selected+egress 哈希)
|
||
- 串线 `risk=crit` 时探针默认跑 `clashctl ensure-direct`(`MANHUANG_AUTO_ENSURE=0` 可关)
|
||
- collect 将 path_id / system_proxy 并入 `chain.breaks`(如 `path_serial` / `path_sys_proxy_off`)
|
||
|
||
## 11. 下一步(未做)
|
||
|
||
- 本地 mmdb 解析 ASN(现用 ip-api;maxminddb 因 PEP668 未装)
|
||
- scutil 异常列表与生产域是否在 ExceptionsList
|
||
- 神州健康检查强制 direct 的自动化(与 joy web / 监控联动)
|
||
- 出口 IP 信誉列表对撞(可选)
|
||
- Board 按 `chain.breaks[].reason` 自动发 observe 任务
|