代理工具的日志审计:如何阅读 Clash 与 sing-box 运行日志
在使用代理工具时,遇到网页打不开或软件报错,大多数人只能盲目切换节点。掌握代理内核(如 Clash 或 sing-box)的运行日志阅读技巧,是进阶排错的关键。
1. 为什么需要阅读日志?
代理客户端看似黑盒,但其底层引擎会在后台记录每一条网络请求的处理过程,包括:
- 客户端接收到了哪个域名的 DNS 查询?
- 该请求命中了哪一条路由分流规则?
- 流量最终交给了哪个出站节点,还是被直连或拦截?
- TCP/UDP 握手是否成功,或在哪个阶段抛出了 EOF 断流错误?
2. Clash 内核日志解析
在 Clash Verge Rev 或 OpenClash 中,日志通常分为 info、warning 和 error 三个级别。
一条典型的 info 日志如下:
[TCP] 192.168.1.10:54321 --> google.com:443 match GeoSite(geolocation-!cn) using Proxy[香港节点]
- 解读:局域网设备 (
192.168.1.10) 尝试通过 TCP 访问谷歌 443 端口。该请求命中了geolocation-!cn规则,最终通过“香港节点”转发。 - 排障价值:如果某国内应用卡顿,你在日志里发现它命中了
Proxy,说明分流规则写错,导致国内流量被强行绕了海外一圈。
3. sing-box 内核日志特点
sing-box 的日志风格更偏向 JSON 和结构化。
例如:[Info] [123456] outbound/vless: proxy google.com:443
如果发生连接失败,往往会伴随:
[Error] [123456] proxy google.com:443: context deadline exceeded
- 排错线索:这种“deadline exceeded”或“i/o timeout”通常表示您的节点服务器宕机,或者本地网络在向节点发起握手时被防火墙拦截。
4. 安全与隐私考量
默认情况下,建议将日志级别设置为 info 以便日常排错,而不要开启 debug 或 trace。更高级别的日志会记录海量的底层数据包细节,不仅大幅消耗磁盘读写寿命(尤其是软路由),而且存在泄露过多明文行为轨迹的风险。