diff --git a/docs/superpowers/plans/2026-07-23-private-dest-acl.md b/docs/superpowers/plans/2026-07-23-private-dest-acl.md index bfe16d7..68df1ef 100644 --- a/docs/superpowers/plans/2026-07-23-private-dest-acl.md +++ b/docs/superpowers/plans/2026-07-23-private-dest-acl.md @@ -1231,9 +1231,12 @@ git commit -m "docs(agent): 私有目的地 ACL 配置样例与常驻校验测 ``` 2. 写 `/etc/pangolin-agent/acl.json`(权限 `0600`,属主 `pangolin`),`systemctl reload pangolin-agent`。 3. `journalctl -u pangolin-agent -n 30` 确认已重渲染、无 `[acl] ERROR` / `[acl] ALERT`。 -4. `sudo python3 -c "import json;print(json.load(open('/etc/sing-box/config.json'))['route'])"` 确认规则顺序为 sniff → 放行 → 拒绝 → warp。 +4. `sudo python3 -c "import json;print(json.load(open('/etc/sing-box/config.json'))['route'])"` 确认规则顺序为 sniff → resolve → 放行 → 拒绝 → warp(resolve 见 I3:堵住 ip_cidr 目的地的域名形式绕过)。 + **`config.json` 内容正常不等于线上生效**——SIGHUP 走的是 sing-box 自身校验,若新配置被 sing-box 拒绝,它会保留旧实例继续跑,agent 侧仍记"渲染成功"。reload 后必须额外确认: + - `systemctl is-active sing-box` → `active`; + - `journalctl -u sing-box -n5 | grep -v FATAL`(有 FATAL 说明 sing-box 拒绝了新配置,旧实例还在跑,config.json 上的内容其实没生效)。 5. **我的设备**:brain 首页 200、DSM 5001 可登录、`ssh nas-r` 通。 -6. **另一账号的设备**:以上全部被拒(连接被 reject,不是超时)。 +6. **另一账号的设备**:以上全部被拒(连接被 reject,不是超时)。**分别用域名和裸 IP 两种形式各测一遍**(如 `curl https://brain.51yanmei.com` 与 `curl --resolve brain.51yanmei.com:443:103.119.13.48 https://brain.51yanmei.com`;DSM 同理分别用 `nas.51yanmei.com:5001` 与 `182.92.213.171:5001`)——I3 表明目的地表达形式(域名 vs IP)会走到不同的 sing-box 匹配路径,只测一种形式验证不到位。 7. **公开站不受影响**:jiu / travel / sudoku / pay 在两个账号下均正常。 8. **WARP 未被破坏**:reddit 仍走 warp 出口。 9. **fail-closed 实证**:把 `acl.json` 改坏 → `systemctl reload pangolin-agent` → 规则仍在、日志有 ERROR;恢复文件。