文档 配置 dialer-proxy

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-providersoverride 批量设置 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 出站,效果等价于原来的链式代理。