Files
proxy-station/docs/FFSB-SURGE-CHECK-2026-11-02.md
YANG JIANKUAN a5d980a5e9 feat: 添加 WireGuard 设备管理并完善客户端分流
实现独立加密设备身份、网关 agent、持久生命周期任务和 Surge/FlClash 专属订阅凭证。

完善 Shadowrocket 规则转换与 Clash AI DNS,增加 Surge FFSB 适配、规则快照、运维工具及验收文档。
2026-11-02 22:44:23 +08:00

56 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 本机 Surge + FFSB 检查(2026-11-02)
本次为只读检查,未修改生产数据、托管配置、策略选择或客户端设置,未重连 FFSB、未重启 Surge。依据当前本机状态,不沿用 10 月 19 日的连接验收结果。
## 当前状态
- Surge 6.11.0 build 12670,活动配置为 `Proxy Station`,规则模式、增强模式开启,系统代理关闭。
- `🦀 Claude → 🦁 FFSB`;FFSB direct 策略绑定 utun100、启用 dns-follow-interface。有效配置省略 allow-other-interface,官方默认 false,因此省略本身不改变失败时不回落的设置。[官方参数说明](https://manual.nssurge.com/policies/parameters.html)
- 集合外 Claude 规则经 `Claude-Surge-Internal → 🧠 AI Nodes → US LA Trojan Direct`;AI 同样选择该美国节点。普通 Proxy 选择 Japan → JP Trojan Direct。
- FFSB CLI/daemon 均为 0.1.27;有效设置为 disableDns=true、disableClientRoutes=false,utun100 MTU 1280。
- 系统默认 resolver 是 Surge 的 198.18.0.2,没有 FFSB 的系统分域 resolver。系统查询 API 返回 fake-IP;Surge DNS trace 使用 100.70.255.254 返回真实地址。既定 25 项未加入 always-real-ip。
- FFSB daemon 状态为 Connected,4 个 peer Connected、1 个 Connecting。资源所在的 a6 peer 为 P2P。此状态单独不能证明业务成功。
## 实际请求与规则
约 09:57(本机 UTC+8)新建 8 个无鉴权 HTTPS GET,全部完成 TLS 并收到 HTTP 响应:
| 请求 | 结果 | 原生请求记录中的实际策略/接口 |
|---|---|---|
| api.anthropic.com 根路径 | 404,约 0.34 秒 | #358,FFSB/utun100 |
| api.ipify.org 系统入口 | 200 | #357,FFSB/utun100 |
| api.ipify.org 显式 Surge 入口 | 200,与系统入口出口相同 | #359,FFSB/utun100 |
| join.fufeishangban.com | 302 | #360,FFSB/utun100 |
| claude.ai 根路径 | 403 | #361,FFSB/utun100 |
| github.com | 200 | #362,日本代理/en0 |
| downloads.claude.ai | 403 | #363,隐藏 Claude 组 → AI Nodes → 美国代理/en0 |
| http-intake.logs.datadoghq.com | 403 | #364,Proxy → 日本代理/en0 |
后者是普通 Datadog 地址;另外原生规则解释确认 Claude 使用的 `http-intake.logs.us5.datadoghq.com` 及 `anthropic.auth0.com` 都经隐藏 Claude 组转美国 AI 节点。现有 ChatGPT 活动请求也走 AI Nodes/美国代理。FFSB daemon 的活动控制连接 #34/#35/#37 命中实际进程路径 DIRECT/en0,均有双向字节;本次未另行抓包验证外层 UDP。
源清单 25/25 项通过 Surge 原生规则解释进入 FFSB;通配项使用样本名,仅验证规则匹配,不证明全部子域业务可用。有效配置通过官方 CLI 原生解析。
`scripts/check-surge.py --fetch-rulesets` 的两次运行均通过原生配置、唯一末尾 FINAL、组测速参数、控制口令与 MITM 检查,但均在远程规则集下载阶段失败,未通过全量在线快照校验。不能将当前缓存下的规则匹配成功表述为全部上游规则集当前可下载;本轮未进一步定位具体失败源。
## 新发现的范围差异
FFSB 当前 Selected 资源为 27 项,比本项目既定 25 项新增 `hcaptcha.com` 与 `*.hcaptcha.com`。Surge 当前没有将其加入 FFSB:根域命中 FINAL → Mainland → DIRECT,`newassets.hcaptcha.com` 命中 CDN → Proxy → 日本。这说明客户端上游资源清单已变化,不代表原有 25 项失效,也不能仅凭新增资源推断用户已授权扩展分流范围。本次保留原规则,未修改生产设置或清单。
## 验收边界
本轮证明当前观测窗口内的既定分流和新建 HTTPS 传输可用。404/403 不代表模型调用、登录或验证码业务成功。Surge 启动后的早期 GUI 请求记录曾有仅上行、无下行的连接;后续成功不覆盖这段历史,也不证明间歇性问题已修复。本次没有切组、断开 FFSB、测试计费模型流,或验证睡眠、换网与长时间稳定性。
含凭据的有效配置与原生请求原始记录仅存于本机 `/private/tmp/surge-ffsb-audit-20261102/`(目录 700、文件 600),不入 Git。
## 追加:FFSB 客户端 DNS 劫持横幅
用户随后提供 FFSB 0.1.27 的警告:Claude 域名解析为 fake-IP,且当前 a6 服务器的系统路由为 Surge utun5,因此界面断言 Claude 走了机场出口。
两项观测都属实,但不能据此推出实际出口。复查 `route -n get` 确认为默认 utun5;这描述内核首先把包交给 Surge,没有展示 Surge 的后续 DIRECT/接口绑定。本方案本来就让普通应用取得 fake-IP,再由 Surge 恢复域名并交给 FFSB direct 别名。[官方 fake-IP 机制](https://manual.nssurge.com/dns/advanced.html)、[接口绑定 direct 别名](https://manual.nssurge.com/policies/built-in.html)
追加 8 次新建 HTTPS 探测仍全部收到响应。原生记录 #999(API)和 #1001(claude.ai)均为 FFSB/utun100、双向有字节;API 根路径约 0.33 秒返回 404。系统与显式 Surge 的 ipify 探测 #997/#998 均走 FFSB/utun100,出口一致且与上一轮相同。外层控制连接仍为真实 daemon 进程 DIRECT/en0。a6 状态为 P2P Connected、WireGuard 握手持续刷新。这些证据支持当前既定分流有效,不支持横幅所说的 Claude 已经走机场出口。未取得 sudo 抓包权限,本轮没有独立验证外层 UDP 的物理网卡包路径,不能声称它完全绕开 Surge。
本机应用内嵌前端确认该横幅由独立 `CheckDNSHijack` 检测结果触发,每 20 秒刷新;未取得其后端源码,不将检测名称或二进制符号当成完整算法证明。
不以消除横幅为目的关闭增强模式或把 Claude 业务域名加入 always-real-ip:现有手动方案需要 fake-IP 保证普通应用先由 Surge 按组选择出站,真实地址可能被 FFSB 已有系统路由提前接走。`link.fufeishangban.com` 已单独设置真实解析和 DIRECT。用户贴出的 IP-CIDR DIRECT 是 Surge 的策略规则,并不等同于 VIF 路由排除;已有实际 daemon 进程 DIRECT 规则也已覆盖该进程的服务器请求。本次没有改变这些设置。