Skip to content

Chain Proxy

Jyanbai edited this page Jul 22, 2026 · 3 revisions

链式代理

链式代理用于让 ping-rust 受管入站的受支持 TCP 流量通过一个上游代理节点访问互联网。 它不是 WARP、多跳链或分流规则编辑器。

进入菜单

sudo prs
→ 9) 其他
→ 1) 链式代理
1) 添加节点(分享链接)
2) 选择出口节点
3) 启用/关闭链式代理
4) 测试节点(完整代理)
5) 查看节点
6) 删除节点
0) 返回

使用流程

  1. 选择“添加节点”,粘贴上游分享链接;
  2. 确认解析出的协议、地址和名称;
  3. 选择当前出口节点;
  4. 启用链式代理;
  5. ping-rust 生成 shoes client_chains,执行 dry-run 后重启服务。

第一个节点会自动成为当前出口,但不会自动启用。删除正在使用的节点会自动关闭链式代理并恢复直连。

支持的分享链接

  • socks5://
  • http:// / https://
  • ss://
  • vless://:TCP、TLS、Reality、WebSocket
  • trojan://:TLS、WebSocket

HTTP、SOCKS5 与 Trojan 在当前 shoes 客户端中不支持 UDP-over-TCP。选择这类节点时会提示 UDP 请求失败;ping-rust 不会在失败后自动回退直连。

Hysteria2、TUIC、WireGuard/WARP 以及未经验证的链接格式会被提前拒绝,不会生成近似配置。

完整代理测试

“测试节点(完整代理)”不再只检查目标端口。ping-rust 会复用已安装的 shoes,为选中的节点 生成权限为 0600 的临时配置和本机 SOCKS5 入口,再通过它请求 https://www.gstatic.com/generate_204。只有以下步骤全部成功才显示“节点可用”:

  1. 临时配置通过 shoes --dry-run
  2. 上游地址可达;
  3. 密码、UUID、TLS 或 Reality 等协议握手成功;
  4. HTTP 请求确实经上游节点完成。

测试结束后会关闭临时 shoes 进程并删除临时配置,不修改当前出口、管理状态或线上 shoes.service。若该测试失败,应先修正分享链接或检查上游服务器,不能仅凭端口开放认定 节点可用。

Hysteria2 / TUIC 入站限制

固定 shoes 0.2.8 的 Hysteria2/TUIC UDP 服务端路径在完成规则选择后仍会直接创建 UDP socket, 没有使用选出的 client chain。为避免用户误以为 UDP 已经过链式出口,只要当前受管配置包含 Hysteria2 或 TUIC,ping-rust 就会拒绝启用全局链式代理;链式代理已经启用时也会拒绝新增这 两类入站。错误信息会列出需要处理的配置文件。

这是 fail-closed 安全限制,不是菜单缺失。只有上游 shoes 实现 UDP chain 并通过真实 UDP 流量测试后才会解除。

安全与回滚

  • 节点凭据保存在权限为 0600 的管理状态和配置文件中;
  • 配置写入使用跨进程锁和原子替换;
  • shoes dry-run 失败时不修改线上配置;
  • systemd 激活失败时恢复配置与原服务状态;
  • “测试节点”通过临时 shoes SOCKS5 入口执行认证、完整协议握手和 HTTP 出口请求;
  • CI 在 Debian 12 与 Ubuntu 24.04 的真实 systemd 环境中使用 PTY 操作生产菜单,并用两个 独立网络命名空间提供可区分的 Shadowsocks 出口;它验证完整测试、启用、重启、切换、 关闭、删除,以及上游离线时无法抵达 origin 且不会静默直连。

Clone this wiki locally