内核与客户端
客户端负责操作入口,内核负责处理连接。排查时分别记录客户端名称、内核名称与运行配置。
- mihomo代理内核 / Clash.Meta
- mihomo 是 Clash 生态中的代理内核,曾使用 Clash.Meta 名称,负责协议连接、DNS 处理、规则匹配和流量转发。Clash Verge Rev 等图形客户端可以集成该内核,但界面版本与内核版本是两件事。查找某个字段是否可用时,应以正在运行的内核及其文档为准,而不是只看客户端名称。
- 图形客户端GUI / 配置与系统集成
- 图形客户端提供订阅管理、策略选择、连接记录和系统代理开关等操作入口,再把配置交给内核执行。部分客户端会将界面选项、模板和覆写片段合并为运行配置,因此编辑订阅原文不一定改变最终行为。遇到设置重启后恢复,应先确认修改的是原始订阅、持久化覆写还是临时运行副本。
- 节点proxies / 出站连接参数
- 节点通常指一组代理服务器地址、端口、协议与认证参数,在完整配置中常对应
proxies下的一个条目。列表里的名称只是标签,不能证明服务器位置、实际出口地区或服务可用性。节点与策略组也不同:节点描述具体连接,策略组负责从若干连接或其他组中选择出站。
- 延迟测试测试 URL / timeout
- 客户端通常通过指定代理访问测试地址,再记录请求耗时;不同实现对连接复用和计时范围的处理可能不同。结果受测试 URL、目标站点、网络路径和超时设置影响,不等于下载带宽,也不能代表所有网站的访问速度。测试超时只说明这次探测未在期限内完成,应结合实际访问和日志判断。
- 外部控制器external-controller / 管理 API
external-controller指定内核管理 API 的监听地址,界面可通过它读取连接记录、查询状态或切换策略。示例127.0.0.1:9090是本机管理入口,不能填到浏览器的 HTTP 代理端口栏。除非明确配置访问控制和网络隔离,否则不要将管理接口绑定到可被外部访问的地址。
代理协议
区分应用连接本地代理的协议与内核连接远端服务器的协议。名称相似,不代表参数或传输行为相同。
- HTTP 代理HTTP / CONNECT
- HTTP 代理是应用主动把请求发送到代理监听地址的方式,HTTPS 访问通常借助
CONNECT建立隧道,再由应用与目标站点协商 TLS。应用连接本地 HTTP 代理,并不表示远端节点也使用 HTTP 协议,更不表示所有链路自动加密。是否经过代理取决于应用是否使用该设置。
- SOCKS5TCP / UDP ASSOCIATE
- SOCKS5 是通用代理协议,可承载 TCP,并在应用和代理均支持时转发 UDP。域名由本地解析还是交给代理端解析,取决于应用的调用方式;部分命令行工具会用不同的 URL scheme 区分两者。仅填写 SOCKS5 地址不能保证所有 DNS 查询都交给代理,也不能替不支持代理的应用接管流量。
- Shadowsockstype: ss
- Shadowsocks 用于客户端与代理服务器之间的加密转发,在 mihomo 节点配置中常写为
type: ss。服务器地址、端口、加密方法、认证参数及可选插件必须与服务端一致,不能只凭显示名称恢复连接。不同协议修订和加密方法的支持范围可能不同,导入失败时应检查内核能力与具体字段。
- Trojantype: trojan / TLS
- Trojan 通常基于 TLS 传输代理流量,除服务器地址和认证参数外,还需正确匹配证书相关的域名设置。服务器连接地址与证书验证域名可以承担不同作用,不能随意互换。遇到证书错误应检查系统时间、证书链和域名,直接跳过证书验证会削弱对服务端身份的确认。
- Hysteria 2type: hysteria2 / QUIC
- Hysteria 2 是基于 QUIC 的代理协议,底层依赖 UDP 连通性;网络限制 UDP 时,即使同一服务器的 TCP 服务正常,该协议也可能无法建立连接。它与第一代 Hysteria 不是可直接互换的配置名称。协议本身不保证吞吐量,实际表现仍受线路质量、服务端资源和拥塞条件影响。
规则与分流
先确认连接进入内核,再检查匹配顺序、目标策略与规则数据。规则中的名称必须有对应定义。
- 规则分流mode: rule / rules
- 在规则模式下,内核按
rules的书写顺序匹配连接,并交给命中项指定的出站或策略组。例如DOMAIN-SUFFIX,github.com,PROXY将相应域名及子域名交给名为PROXY的目标。调整顺序会改变结果,但无法修复应用根本没有经过内核的问题;排查时应查看连接记录中的命中项。
- 策略组proxy-groups / select / url-test
- 策略组将代理或其他策略组组织成一个可被规则引用的出站名称。
select用于手动选择,url-test根据定期探测结果选择,fallback按成员顺序和可用性进行切换。自动选择依赖测试地址与检查间隔,不意味着每个网站都会采用各自最快的线路。
- GeoIPGEOIP,CN,DIRECT
- GeoIP 使用 IP 地址库判断目标地址所属地区,常用于按地区决定直连或代理。它并不是根据公司所在地或域名后缀分类,CDN 调度与地址库更新都可能改变匹配结果。需要基于域名得出 IP 时还可能触发解析;
no-resolve可用于避免该条 IP 规则主动触发解析,但不代表整个连接过程不需要 DNS。
- 规则集rule-providers / RULE-SET
- 规则集把一组域名、IP 或其他规则独立存放,通过
rule-providers声明,再在rules中用RULE-SET引用。载荷格式需要与behavior、format等声明相符,规则集名称也必须一致。下载成功只代表取到了内容,不代表格式可用或相关连接一定会匹配。
- MATCH兜底规则 / 最后匹配
MATCH接住此前未命中的连接,通常应放在规则列表末尾。若把MATCH,PROXY放到开头,后面的规则便无法处理已经被它接住的连接。这里的PROXY是自定义目标名而非自动存在的保留项,使用前必须有同名代理或策略组;DIRECT与REJECT则是内置出站。
延伸阅读:配置文件与规则说明 →
网络接管模式
流量入口、DNS 解析和出站规则相互配合。单个开关的状态不足以证明整个链路已经按预期工作。
- 系统代理操作系统代理设置
- 系统代理向操作系统登记代理监听地址,让遵守该设置的应用主动连接本地代理。部分命令行工具、游戏或自带网络栈的应用不会读取它,因此浏览器可用不代表所有软件都已接管。关闭客户端前应确认系统代理已恢复,否则应用仍可能连接已经停止监听的本地端口。
- TUN 模式tun.enable / 虚拟网络接口
- TUN 通过虚拟网络接口及相关路由设置接管 IP 流量,可覆盖部分不遵守系统代理设置的应用。实际接管范围取决于自动路由、排除项、系统权限和 DNS 配置,并非启用
tun.enable就必然覆盖所有连接。stack指定协议栈实现,不是规则模式开关;启用后仍可根据规则选择直连或代理。
- mixed-port本地 HTTP + SOCKS 混合端口
mixed-port让同一个本地端口接受 HTTP 与 SOCKS 代理连接,例如mixed-port: 7890。它与远端节点端口、管理 API 端口分别承担不同职责,不能互相替换。应用使用时还需要指定正确的代理类型和监听地址;若希望其他设备访问,还需评估监听范围、局域网权限与防火墙设置。
- Fake-IPdns.enhanced-mode: fake-ip
- Fake-IP 模式向应用返回合成地址,并维护地址与域名的映射,让内核在后续连接阶段还原目标域名以进行分流。合成地址不是目标服务器的真实公网地址,需要 DNS 查询和后续连接都进入配套的处理路径。部分依赖真实解析结果的应用可能需要加入
fake-ip-filter,但排除项不应在缺少证据时大范围添加。
- DNS 泄漏解析路径 / 非预期解析器
- DNS 泄漏通常指查询经由预期之外的网络路径或解析器发送,使域名查询信息暴露给非预期方。浏览器安全 DNS、系统解析服务和内核 DNS 配置都可能参与,看到解析器地区不同并不能单独证明泄漏。排查应先明确预期路径,再检查查询是否经过内核、上游解析如何出站,以及应用是否使用了独立的加密 DNS。
机制对照:TUN 模式与系统代理的区别 →
订阅与配置文件
先识别输入内容,再选择导入方式。完整配置、代理集合与分享链接不是同一种数据。
- 订阅链接远程配置 / 定期更新入口
- 订阅链接是获取代理列表或完整配置的远程地址,常带有可识别账户的访问凭据,应按敏感信息保存。相同的 HTTPS 地址形式可能返回 YAML、编码后的分享链接列表或其他格式,不能仅凭后缀判断兼容性。导入后先检查配置是否启用、策略组是否出现,再验证连接;更新成功与节点可用是两个独立结论。
- YAML缩进层级 / 键值与列表
- YAML 是 mihomo 配置常用的数据序列化格式,以空格缩进表示层级,以
-表示列表项。Tab 缩进、重复键以及含特殊字符却未正确引用的值都可能造成解析错误或含义变化。YAML 能被解析不代表配置一定有效,还需检查字段类型、内核支持情况以及规则引用的策略名称。
- 配置文件config.yaml / 运行参数集合
- 配置文件描述本地监听端口、DNS、代理、策略组和分流规则等运行参数,
config.yaml是常见文件名,但扩展名本身不决定内容是否可用。图形客户端可能在启动前合并模板和覆写设置,因此订阅原文不一定等于最终运行配置。修改前保留可恢复副本,修改后检查启动日志,避免把加载失败误认为线路故障。
- 代理集合proxy-providers / use
- 代理集合通过
proxy-providers从远程或本地载入代理条目,再由策略组使用use引用。它通常只提供节点数据,并不负责完整配置中的 DNS、监听端口和分流规则,不能默认当作独立配置直接启用。集合的更新间隔与客户端完整订阅的刷新计划也可能分别管理,需要在对应层检查。
- 订阅转换载荷转换 / 目标格式
- 订阅转换将一种输入载荷整理成目标客户端可识别的格式,有些转换还会套用策略组和规则模板。转换无法补齐缺失的认证参数,也不能让内核支持原本不支持的协议字段。第三方转换服务通常能接触完整订阅链接,使用前应评估凭据暴露范围,优先确认客户端是否已能直接导入原始格式。