要对 Clash 的代理是否起作用做对照,必须先有可重复的直连基线。选择测试目标,不是去拼一份未文档化的网站清单,而是让目标的地址族、出站接口、建连方式和延迟统计与当前全局配置一致。配置不一致时,差异来自开关而不是路径,对照无效。下列依据全部来自全局配置项。
适用条件:什么时候才谈得上对照
当运行模式可以在规则匹配、全局代理、全局直连之间切换,并且出站接口、IPv6 开关、TCP 并发、统一延迟都已知时,才适合挑选对照目标。全局直连提供不经 GLOBAL 策略组的对照路径;全局代理必须在 GLOBAL 策略组选择代理或策略,不能当作直连基线。规则模式会把不同目标送入不同出站,同一批域名不能既当直连对照又当代理对照,除非能肯定规则不会把它们拆开。此项有默认值,默认为规则模式,对照前应显式确认当前值。
日志级别至少要能输出发生错误至无法使用的内容。静默不输出,不适合做对照。日志只在控制台和控制页面出现。GEO 文件、外部用户界面和 API 监听地址不是业务访问目标,不能拿来当直连样本。
按地址族、接口与并发条件筛选
第一,目标的地址族必须落在内核允许接受的范围内。IPv6 项默认为真,允许接受 IPv6 流量。若将其设为假,就不要选择仅有 IPv6 的目标作为直连对照,否则失败来自地址族开关。若保持为真,样本中应包含你真正关心的地址族,避免只测了另一族。
第二,目标必须能从当前出站接口到达。出站接口指定 mihomo 的流量出站接口,文档示例为 en0。对照时应保证直连样本与代理样本使用同一接口名,否则差异来自网卡。未填写接口时跟随系统默认路由,此时直连目标应是默认路由能到达的地址,而不是需要策略路由才能到达的地址。Linux 下若配置了出站路由标记(文档示例为 6666),直连样本也会带该标记,选择目标时要确认防火墙不会按标记丢弃这条对照路径。
第三,留意 TCP 并发与统一延迟。启用 TCP 并发后,会使用 DNS 解析出的所有 IP 进行连接,并采用第一个成功的连接。多地址目标会让“直连成功”只代表其中一个地址成功,与代理路径上实际使用的地址可能不同。需要可对照时,应选择解析结果简单、地址族单一的目标,或在记录中写明只保留第一个成功地址。统一延迟开启时会计算 RTT,以消除连接握手等带来的不同类型节点的延迟差异。若对照包含延迟数值,必须固定当时统一延迟是开还是关,否则节点类型差异会被抹平,失去对照意义。
GEO 相关项只决定 geoip 使用 mmdb 还是 dat、加载器类型、是否自动更新,并不提供推荐直连域名表。不要把 GEO 下载地址里的文件当成测试目标。自定义全局 UA 默认值为 clash.meta,以及 ETag 支持,只约束内核去拉外部资源,不能当作用户访问网站的对照样本。
判断依据、入站干扰与失败下一步
判断一个目标是否可对照,用以下依据:在全局直连下,该目标只经过出站接口与系统路由;在全局代理下,同一目标会进入 GLOBAL 策略组;两次测试的 IPv6 开关、出站接口、TCP 并发和统一延迟保持不变;日志级别足以留下失败原因。若目标在规则模式下有时直连有时代理,则它不是稳定对照,应改用模式切换来固定路径,而不是改目标清单。
若对照的是其他设备上的访问,还要满足允许局域网为真,绑定地址覆盖设备到达的那块地址,且源 IP 不在禁止地址段中。黑名单优先级高于白名单,文档示例包含 192.168.0.3/32。用户验证会挡住未提供账号的客户端;跳过验证的前缀文档示例为 127.0.0.1/8 与 ::1/128,可覆盖本机回环测试,但不能代替对真实出站目标的地址族选择。这些条件不满足时,失败发生在入站,目标本身无法用于直连对照。
Keep Alive 间隔、空闲与是否禁用主要用于耗电,在 Android 上禁用被强制为真,不作为选择目标的依据。进程匹配在路由器上推荐关闭,以免对照被进程规则打断。缓存可储存策略组选择与 fakeip 映射,对照前应理解这两项会在下次启动时复用,而不是把缓存开关当成选目标的手段。
若直连对照失败,下一步先改出站接口与 IPv6,使其与目标一致,而不是更换来源不明的域名。若直连成功、代理失败,下一步才进入策略组与节点,那已超出选择直连目标的范围。若日志为静默,下一步只调整日志级别。