docs: 客户端可配置分流设计+原型(并入 v2 作开发基线) #7
Reference in New Issue
Block a user
Delete Branch "design/configurable-proxy"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
把 configurable-proxy 设计+原型(移动+桌面)并入 pay-v2 分支(其有全版 ui-kit),作为后续开发基线。
🤖 Generated with Claude Code
sing-box route 的 ip_cidr 匹配的是已解析的连接目的地地址;客户端若发的是域名 形式(如 nas.51yanmei.com:5001)而不先解析,ip_cidr + port 的拒绝规则不命中, 请求会绕过 ACL 直接落到 final:direct——DSM/RDP/SSH 因而对任何持有有效 dp_uuid 的 pangolin 用户可达,不受白名单约束。攻击者只需让客户端连接目的地时使用域名 而非 IP 即可绕过。 用户已拍板方案:在 sniff 之后紧跟加一条 {"action":"resolve"},让节点自己解析 目的地,使域名形式收敛到 ip_cidr 规则上(已用本机 sing-box 1.13.13 确认接受 [{"action":"sniff"},{"action":"resolve"},...] 这个形状,TestRenderedConfig_ PassesSingBoxCheck 也覆盖了这条产物)。route 规则顺序变为: sniff → resolve → ACL 放行 → ACL 拒绝 → WARP。resolve 与 sniff 同条件——只在 产出 route 块时才出现,唯一且紧跟 sniff。 代价(用户已知情接受):节点从此会对连接目的地做 DNS 解析,是对"节点只见不透明 dp_uuid、不知道目的地"这条隐私姿态的一次主动后退,详见设计文档 §12。 TDD:更新 TestBuildRoute_Matrix 的四态断言(规则数 2/3/4 → 3/4/5,新增 resolve 计数/位置断言),新增 TestBuildRoute_ResolvePositionedRightAfterSniff(RED:此前 resolve 不存在)与 TestBuildRoute_NeverConfigured_NoResolve(未配置态不受影响)。 确认既有 TestRender_Warp_InjectsEndpointAndRoute(只断言首条 sniff、末条 warp, 不断言精确条数)未受影响,原样绿。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>Pull request closed