dialer-proxy
指定某个 proxies 通过另一个策略组/出站代理来建立网络连接,从而组成一条代理链——常用来保护自己 VPS 落地节点的真实 IP,或者穿透内外网隔离环境。
基本用法
config.yaml YAML
proxies: - name: "ss1" dialer-proxy: dialer # ... - name: "ss2" # ... proxy-groups: - name: dialer type: select proxies: - ss2 rules: - MATCH,ss1
上面这个例子里,ss1 通过 ss2 建立连接,代理链变成:内核 --ss1--> ss2 包裹 --ss2--> ss2 服务端 --ss1--> ss1 服务端 --> 目标。最终表现是:
- 目标网站只看到 ss1 的 IP不知道 ss2 的存在
- 你的宽带运营商只看到在访问 ss2不知道 ss1 的存在
- ss2 服务端只知道在转发到 ss1不知道最终访问的是什么网站
常见场景:保护自建 VPS 落地
config.yaml YAML
proxies: - name: "ss1" dialer-proxy: dialer # ... proxy-providers: provider1: type: http url: "http://test.com" proxy-groups: - name: dialer type: select use: - provider1 rules: - MATCH,ss1
把订阅地址填入 provider1,把自己 VPS 上搭建的节点填入 ss1,浏览器访问时显示的就是 ss1 的 IP。
没有特殊需求时,被中转的落地 VPS 节点请不要选 hy2/tuic/wg 等 UDP 类协议,也不要用 reality/shadowtls 等带 TLS 伪装的协议——订阅节点可能无法正常承载这些协议,建议选最简单的 SS-AEAD 或 VMess。
从 relay 迁移
relay 类型的策略组已经被弃用(见 relay),但策略组本身并不直接支持 dialer-proxy,如果原来的 relay 里包含多个 select 分组,可以用 proxy-providers 的 override 批量设置 dialer-proxy 来迁移:
config.yaml YAML
proxies: - { name: "proxy1", type: "socks" } - { name: "proxy2", type: "socks" } proxy-groups: - { name: "select1", type: select, proxies: ["proxy1", "proxy2"] } - { name: "select2", type: select, use: ["provider1"] } proxy-providers: provider1: type: inline override: dialer-proxy: select1 payload: - { name: "proxy3", type: "socks" } - { name: "proxy4", type: "socks" } rules: - MATCH,select2
思路是把原来 relay 后半段的节点(proxy3/proxy4)定义在一个 inline 类型的 proxy-providers 里,用 override.dialer-proxy 统一设置它们都经过 select1 出站,效果等价于原来的链式代理。