✧ 君と集まって星座になれたら ✦ ROKUTOSEI
1077 字
5 分钟
mihomo 链式代理(dialer-proxy)
更新于 2026-07-14

概述#

dialer-proxy 是 mihomo 内置于每个代理节点上的参数

当节点配置了此参数时,该节点的底层网络连接会通过指定的另一个代理建立,而不是直接从本机发出。

节点 A (dialer-proxy → 节点 B)
↓
节点 A 的底层连接:本地 → 节点 B 服务端 → 节点 A 服务端 → 目标

在这个过程中:

  • 目标网站看到的来源 IP 是节点 A 服务端的 IP
  • 本地网络运营商只能看到你在连接节点 B,不知道节点 A 和目标的存在
  • 节点 B 的服务端知道自己转发了流量到节点 A,但不知道最终访问的是什么目标

dialer-proxy 值#

值可以为任意已定义的代理节点名称或策略组名称。

proxies:
- name: "落地节点"
dialer-proxy: 拨号策略组
# ... 其他参数
- name: "前置节点"
# ...
proxy-groups:
- name: 拨号策略组
type: select
proxies:
- 前置节点

当 dialer-proxy 指向策略组时,内核会在每次建立连接时根据该策略组的选中的节点进行拨号,同时允许在运行时通过切换策略组中的节点来更换前置链路。

限制#

不允许在策略组上设置 dialer-proxy#

adapter/outboundgroup/parser.go:68-69
if _, ok := config["dialer-proxy"]; ok {
log.Errorln("The group [%s] with dialer-proxy configuration is not allowed, ...")
}

dialer-proxy 只能写在代理节点上,策略组上写此字段会报错且不生效。

禁止循环引用#

config/utils.go:171
return fmt.Errorf("proxy [%s] has circular dialer-proxy dependency", name)

如果 dialer-proxy 引用了自身,或引用的链路上存在环,启动时会报错并退出,允许链式嵌套,但不可成环。

不支持 relay 类型(已移除)#

adapter/outboundgroup/parser.go:217
return nil, fmt.Errorf("%w: The group [%s] with relay type was removed, please using dialer-proxy instead", ...)

过往的 relay 策略组类型已被移除,应统一使用 dialer-proxy 实现链式代理。

适用场景#

通过订阅节点中转自建节点#

当自建 VPS 的 IP 被封禁(或被限速)且不想更换 IP 时,可通过已有的机场订阅节点作为前置,中转流量到自建节点落地:

proxy-providers:
airport:
type: http
url: "https://example.com/sub"
proxy-groups:
- name: 拨号组
type: select
use: [airport]
proxies:
- name: "落地节点"
type: ss
server: <YOUR_VPS_IP>
port: 443
cipher: chacha20-ietf-poly1305
password: <YOUR_PASSWORD>
dialer-proxy: 拨号组
rules:
- MATCH,落地节点

流量路径为:

本地 → 订阅节点(前置)→ 自建 VPS 落地 → 目标网站
TIP

前置节点本质上是在为落地节点建立 TCP 隧道,因此落地节点应选择不依赖 UDP 的协议(SS/VMess/VLESS over TCP 等)。

若落地节点使用 hy2/tuic/wireguard 等纯 UDP 协议,或带有 REALITY/shadowtls 等 TLS 伪装层,前置节点(订阅节点)很可能无法正确转发这些连接。

落地节点推荐使用 ss + chacha20-ietf-poly1305 或 vmess + tcp。

总控模式切换#

个人玩法,不泛用

当同时维护自建直连、链式代理、机场订阅三种模式时,可借助 proxy-providers 的 override 机制,对同一份节点文件分别产生”直连”和”链式”两组配置:

proxy-providers:
# 机场订阅
airport:
type: http
url: "https://example.com/sub"
# 自建节点(原始)
mine:
type: file
path: ./proxy_provider/mine.yaml
# 自建节点(加了 dialer-proxy,用于链式模式)
mine-land:
type: file
path: ./proxy_provider/mine.yaml
override:
dialer-proxy: 链式前置
proxy-groups:
# 总开关
- name: PROXY
type: select
proxies: [机场节点, 链式代理, 自建直连]
- name: 机场节点
type: select
use: [airport]
- name: 链式前置
type: select
use: [airport]
- name: 链式代理
type: select
use: [mine-land] # 引用加了 override 的文件
- name: 自建直连
type: select
use: [mine] # 引用原始文件(无 dialer-proxy)
rules:
- DOMAIN-SUFFIX,google.com,PROXY
- MATCH,PROXY

override 会对 provider 中所有节点批量添加 dialer-proxy 字段(代码位置 adapter/provider/override.go:58-59)。同一份 mine.yaml 文件被引用两次,一次保持原样(自建直连),一次批量添加拨号配置(链式模式)。

flowchart LR
U[客户端流量]
P[PROXY 总开关]
A[机场节点]
L[链式代理<br/>mine-land]
M[自建直连<br/>mine]
D[链式前置]
AS[机场服务端]
LS[落地服务端]
MS[自建服务端]
T[目标网站]
U --> P
P --> A
P --> L
P --> M
A --> AS --> T
M --> MS --> T
L --> D --> AS --> LS --> T

参考#

虚空终端

友情推荐 草履虫也能学会的 Clash 配置:UI界面一键配置精确分流、链式代理

Rokutosei
Rokutosei ✦ 六等星
“君と集まって星座になれたら”
mihomo 链式代理(dialer-proxy)
https://blog.rokutosei.com/posts/proxy/dialer-proxy/
作者
Rokutosei
发布于
2026-03-06
修改于
2026-07-14
许可协议
CC BY-NC-SA 4.0
✧ 文章目录 ✦
1
概述
2
dialer-proxy 值
3
限制
不允许在策略组上设置 dialer-proxy
禁止循环引用
不支持 relay 类型(已移除)
4
适用场景
通过订阅节点中转自建节点
总控模式切换
5
参考