升级 mihomo 后提示字段已废弃怎么办
升级 mihomo 后日志提示字段已废弃:relay 代理组、interface-name、global-client-fingerprint、旧 sniffing 写法等。说明怎么按官方文档改成新写法。
适用:mihomoClash Verge RevFlClashClash PartyClash Meta for AndroidClashX MetaClash Mi
你看到的现象
客户端或内核更新后,日志里出现 Deprecated、removed、please use ... instead 之类的英文提示;有的配置还能用,有的直接加载失败。
先看日志的级别和内容:
- 警告(warning)且配置能加载:旧写法暂时还能用,但以后的版本可能会删掉,建议趁现在改掉。
- 错误(error):有的是“这个字段已经没有效果”,配置照样加载,只是你写的设置不起作用;有的会让整份配置加载失败。
下面每一条都用 mihomo v1.19.33 实测过,并对照了官方文档和源码。日志里的字段名就是你要在配置文件里找的位置;配置来自订阅的,把提示发给服务商更新即可。
可能的原因和解决办法
用了 relay 类型的代理组
怎么判断:加载失败,报错:
proxy group[0]: unsupported type: The group [组名] with relay type was removed, please using dialer-proxy instead
怎么解决:官方文档写明 relay 策略已被弃用,改用节点上的 dialer-proxy 实现链式代理。写法见 mihomo 官方文档:dialer-proxy(在新窗口打开)。
代理组里写了 interface-name、routing-mark 或 dialer-proxy
怎么判断:日志报错(配置仍能加载,但这些设置不起作用):
The group [组名] with interface-name configuration was removed, please set it directly on the proxy instead
The group [组名] with routing-mark configuration was removed, please set it directly on the proxy instead
The group [组名] with dialer-proxy configuration is not allowed, please set it directly on the proxy instead
怎么解决:把这些字段从代理组里删掉,写到具体的节点(proxies 下的各项)上。
用了全局的 global-client-fingerprint
怎么判断:日志报错(配置仍能加载,但设置不起作用):
The `global-client-fingerprint` configuration is removed, please set `client-fingerprint` directly on the proxy instead
怎么解决:删掉顶层的 global-client-fingerprint,在需要的节点上写 client-fingerprint。按官方文档,它只适用于 VMess、VLESS、Trojan、AnyTLS 节点。
域名嗅探用了旧的 sniffing 写法
怎么判断:日志警告 Deprecated: Use Sniff instead。配置里 sniffer 下面用的是 sniffing: 列表。
怎么解决:改成官方文档里的 sniff: 写法,按协议分别写端口:
sniffer:
enable: true
sniff:
HTTP:
ports: [80, 8080-8880]
TLS:
ports: [443, 8443]
DNS 的 fallback-filter 里用了 geosite
怎么判断:日志警告 replace fallback-filter.geosite with nameserver-policy, it will be removed in the future。
怎么解决:官方文档写明该字段已废弃,改用 dns 下的 nameserver-policy。见 mihomo 官方文档:DNS(在新窗口打开)。
TUN 用了 inet4-route-address 等旧字段
怎么判断:配置的 tun 下有 inet4-route-address、inet6-route-address、inet4-route-exclude-address、inet6-route-exclude-address。官方文档把它们列为“旧写法,即将废弃”。
怎么解决:改用 route-address 和 route-exclude-address。官方文档说明这两项一般无需配置。见 mihomo 官方文档:TUN(在新窗口打开)。
常见问题
日志太多,找不到这些提示?
把配置粘贴到 配置文件检查器,它会检查已废弃字段并标出行号。直接运行 mihomo 的,也可以用 mihomo -t -f 配置文件路径 只检查配置,报错和警告会直接打印出来。
是不是降级内核就好了?
不建议。旧写法迟早要改,降级会错过新版本的修复。按上面改成新写法即可。
还是没解决?
把客户端名称、版本和完整的报错信息发给我们(不要包含订阅链接),我们会补充到这一页。提交反馈