1 为什么不该只会换节点
代理客户端的体感问题,表面上都是「慢、打不开、证书错误」,根因却经常落在两条完全不同的链路上:策略引擎有没有把连接送进你期望的策略组,以及应用发起请求前拿到的目标地址是否可靠。前者由 rules 顺序、RULE-SET、GEOIP、MATCH 与嵌套策略组决定;后者则由 dns 段、fake-ip、上游 nameserver、DoH 可达性与系统层 DNS(例如安卓私人 DNS、浏览器安全 DNS)共同塑造。
若不做区分,你会把「解析超时」当成「节点不稳定」,把「最后一条规则兜底到了错误的代理组」当成「机场线路爆炸」。connection 日志的价值,就是把一次 TCP / UDP 会话在内核眼里的最终走向写出来:命中了哪条规则、回落到哪条 MATCH、实际路由到的出站类型与节点名。配合适当等级的 DNS 日志,你还能看到查询是否发出、是否得到 NXDOMAIN、是否走了 fallback。读熟这两类信息后,再决定是改规则顺序、更新 Geo 数据,还是改 DNS 上游,比盲换节点有效得多。
记住:换节点治的是「出站链路质量」;日志治的是「决策是否正确」。决策错了,再好的节点也救不回来。
2 日志等级怎么选(silent 到 debug)
Mihomo / Clash Meta 系通常提供多档 日志等级,常见从安静到啰嗦依次为 silent、error、warning、info、debug(具体键名以你使用的发行版文档为准)。日常使用为了磁盘与性能,info 往往足够观察「哪条连接建立了、走了哪个策略」的概览;但若你要排查为何某域名没命中预期 RULE-SET、或 DNS 查询在内核里经历了什么分支,短时间提到 debug 几乎是必经之路。
实务建议分成两种模式:日常模式维持 warning 或 info,避免无意义刷盘;排障窗口在复现问题的几分钟内开到 debug,复现完成后立刻降回低档。许多图形客户端在外部控制器或设置页里就能改内核日志等级,无需手改 YAML;若你通过订阅覆盖 log-level,注意合并顺序,避免被远端模板静默改回 silent。
debug 可能打出完整域名、内网主机名与部分握手信息。排障时尽量在受信环境操作,排完即关;不要把整段 debug 日志不经脱敏发到公开群组。
3 在哪里看 connection 与 DNS 日志
常见路径有三类:本机图形客户端自带的「连接 / 日志」面板(最直观,适合按进程或域名筛选)、对接 外部控制器 的 Web 面板(如 Yacd 类仪表盘,适合同时看规则与实时连接),以及写入文件的运行日志(适合长时段抓取与事后对照配置版本)。无论你用哪一种,排障时请固定一个复现动作——例如「只打开某一个站点、同一浏览器、隐私模式」——这样日志时间线才不会被其它 App 搅动。
DNS 相关输出有时单独归类在日志里,有时与连接建立合在一起;若你看到大量 lookup、resolve、dns 字样而连接始终没有跟进,应先怀疑解析阶段卡死,而不是先怀疑代理协议。相对地,若解析很快完成而 connection 行显示命中 MATCH 进了你不想要的策略组,首要矛盾在规则顺序或数据文件。
4 读懂一行 connection:域名、规则、策略
不同前端展示的字段名略有差异,但内核语义相对稳定。你至少要能指出:目标标识(域名、IP 或「由 Sniffer 还原的 host」)、匹配到的规则类型与名称(例如某条 RULE-SET、GEOIP、或最后的 MATCH)、以及最终出站(DIRECT、REJECT、或某个 Proxy Group 及其实际子节点)。其中「规则类型」告诉你为什么会被这么路由;「策略组展开后的实际节点」告诉你当前包去了哪里。
若日志里目标始终是纯 IP,而你的规则大量依赖域名,往往要启用或检查 Sniffer,否则引擎只能按 IP 去做 GEOIP 或 IPCIDR,域名规则形同闲置。Sniffer 与 SNI 的原理可参考本站《Clash Meta Sniffer 与 HTTPS SNI》。读完一篇 Sniffer 文再回来看 connection 行,你会明显更容易理解「为什么这一行 suddenly 出现了域名」。
# What you mentally extract from one log line:
# target (host / IP), rule hit (RULE-SET / GEOIP / MATCH), final outbound (DIRECT vs proxy chain)
# If rule hit is MATCH → your explicit rules never matched; check order and data freshness.
5 当现象像「规则未命中」或「走错组」
用户口语里的「规则没生效」,在日志里最常见的落点是:你以为应该命中的那条 DOMAIN / GEOSITE / RULE-SET 根本没有排到前面,于是连接滑到了最后的 MATCH,而 MATCH 往往指向一个「全局代理」或「你的默认机场组」。这一类问题与节点质量无关,换一百个节点也只是换 MATCH 里那一跳的样子,不会魔法般地命中你缺省写在前面的那条规则。
排查时依次核对:规则顺序是否把更具体的条目放在更泛化的条目之前;RULE-SET 是否加载成功(订阅 403、本地路径错误都会导致静默失效或回退);GeoIP / Geosite 数据是否过旧,误判与「看似没命中」经常同源。Geo 数据维护步骤见《Clash Meta 手动更新 GeoIP 与 Geosite》;订阅拉取失败可参考《Mihomo 订阅 403 与 UA 排障》。
另一个高频误区是策略组嵌套:url-test、fallback、load-balance 组的父级名字出现在日志里时,你还要对照它当前选中的子节点;若父级配置成永远绕开你想要的地区,日志会诚实地显示「进组了,但子节点不是你脑补的那一个」。这类问题在 debug 下更容易一眼看出轮询与切换轨迹。
6 DNS 失败、FakeIP 与「网页间歇红屏」
DNS 失败在日志里的表现可能是:长时间没有任何连接建立、或解析阶段重复超时、或返回错误码后连接被内核中止。与规则问题不同,你往往先在 DNS 段或 debug 里看到异常,然后才看到零星的 connection。FakeIP 模式下,应用拿到的是内核分配的虚拟地址,真实解析发生在内核内部;若规则侧与 DNS 侧对「这个域名该用哪套 nameserver」理解不一致,就会出现表面上规则写了直连,实际却在错误的上游上撞墙的现象。
系统级 私人 DNS 或浏览器 安全 DNS 会改变「谁先发查询」这件事:有时应用绕过内核 DNS,有时双重查询顺序导致偶发竞态。安卓与 FakeIP 的叠床架屋可参考《安卓私人 DNS 与 Clash》;桌面浏览器侧见《Chrome 和 Edge 安全 DNS 与 Clash》。更系统的 FakeIP 与防泄漏框架见长文《Meta 内核 DNS 防泄漏实践》。
debug 里 DNS 阶段干净、解析结果稳定,而 connection 仍走错策略,优先改规则;若 connection 甚至进不了或大量 pending,先清 DNS 与环境冲突,再谈分流。
7 间歇性打不开:别忽略时间线
间歇性往往暴露的是超时、重试与缓存问题,而不是单条静态规则写错。举例:DoH 偶发 TLS 握手慢、fallback DNS 切换不及时、IPv6 优先却上游不可达、或策略组在执行 url-test 时短暂切节点导致长连接中断。此类问题在 info 档位可能只看到「时好时坏」,升到 debug 后对照时间戳,才能看到是同一次会话内多次解析,还是策略组在几十秒内发生了切换。
排障时建议缩短变量:暂时关掉浏览器多进程预连接、关掉不必要扩展、固定一个 DNS 上游、固定一个策略组子节点,再观察日志是否趋于稳定。稳定后再逐项恢复,比同时改五个选项更快定位。
8 与专项排障文章如何配合
本文刻意只做「日志阅读」这一件事,其它专题仍建议按需纵深:订阅与 UA 出问题时会直接影响 RULE-SET 是否最新;Geo 数据旧了会让 GEOIP 分支像「幽灵规则」;Sniffer 关着时 HTTPS 域名对策略引擎不可见;私人 DNS / 安全 DNS 则负责把 DNS 日志搅乱。把connection 当作判决笔录,把DNS 日志当作庭前证据,把各专项文当作法条释义,整套排障流程就不会散。
9 推荐排查顺序(可保存对照)
- 确认客户端与内核版本、配置merge结果无意外覆盖;必要时备份当前 YAML。
- 把日志等级提升到可复现窗口内的
debug,只做最小复现动作。 - 先看 DNS:是否有超时、拒绝、错误上游、或系统 DNS 抢答。
- 再看 connection:目标标识是 IP 还是域名;命中规则还是 MATCH;出站是否符合预期。
- 若缺域名:检查 Sniffer 与 TLS 场景;若 RULE-SET 疑似无效:检查订阅与 403。
- 若 GEOIP 可疑:更新
geoip.dat/ mmdb;若间歇:降级变量、固定节点再试。 - 排障结束降回
info或warning,避免长期全量 debug。
10 总结
Clash Meta / Mihomo 的 connection 日志是进阶用户最值得投入一小时学习的工具之一:它把「规则到底有没有用到」从主观体感推进到可核对的字段。日志等级则是能否在合理噪声下看到 DNS 细节的前提——日常低调、排障短期高调,是长期稳定与瞬时可诊断之间的平衡。把走错节点与 DNS 失败放在同一张表里对照,你会少做无数次无效换线,多省出时间来维护规则顺序、数据新鲜度与 DNS 拓扑。
相比漫无目的地在社区里问「我是不是被限速了」,先导出一段脱敏后的关键日志并标出「一条失败连接从解析到出站的完整时间线」,通常能更快得到高质量回复。若你需要在 Windows、macOS 或 Linux 上获取带图形界面的客户端以便边操作边看日志,建议优先从本站下载页获取安装包,再按本文步骤自测一轮。
当你习惯了先看日志再改配置,Clash 系列工具才真正从「能翻墙」变成「可工程化维护的网络护栏」——这也是本文希望帮你跨过的一道门槛。