Skip to content

客户端日志诊断与排错指南:看懂每一行日志找出断网幕后真凶 ​

适用客户端:Clash Verge Rev / Mihomo Party / ClashX Meta / sing-box / Surge / Stash / OpenClash / Shadowrocket 适用人群:从刚接触代理客户端的新手,到需要定位跨境链路故障的运维与开发者

一、TL;DR:先给结论,再看机理 ​

绝大多数人排查“断网”,顺序是错的。正确顺序应该是:看日志关键词 → 判断故障落在哪一层 → 用命令行验证 → 更换节点或配置,而不是一上来就疯狂切换节点。

三条能覆盖 80% 场景的结论:

  1. 看到 connection reset by peer,不代表节点坏了。它只说明 TCP 连接被对端或中间设备发了 RST。RST 可能来自目标站点的风控、GFW 的主动阻断、运营商的 QoS 清洗设备,也可能是节点服务端主动踢人。三者处置方式完全不同。
  2. 看到 TLS handshake timeout 或 unexpected EOF,优先怀疑 MTU、SNI 嗅探和中间盒干扰,而不是“机场垃圾”。同一节点用 curl 能通、用浏览器不通,问题通常出在本机 DNS 或分流规则。
  3. 日志级别设成 silent 的人,永远排不出问题。info 级别是排障的最低门槛,debug 级别才是抓 Connection Reset 和 TLS 报错的正确姿势。
💡 👑 2026 全网综合第一主推 · 【光速云】读者专享特惠通道:
IEPL 企业级内网专线 + 全球IPLC,单节点最高 2.5Gbps,全节点 x1 无倍率,原生解锁 ChatGPT / Claude / Netflix 全区:
8折立减AMM复制 📋
直达光速云官网 ↗

二、日志是怎么被写出来的:从内核 socket 到客户端输出 ​

理解日志之前,先理解日志的“生产者”。客户端日志本质上是代理内核在用户态对 socket 系统调用返回值的转述。一次 HTTPS 请求,内核要经历:

  1. getaddrinfo() 解析域名(可能被 fake-ip 拦截,直接返回 198.18.x.x);
  2. connect() 发起 TCP 三次握手,可能的返回是 ETIMEDOUT(超时)、ECONNREFUSED(端口无监听)���ECONNRESET(被 RST)、EHOSTUNREACH(路由不可达);
  3. TLS 握手,可能的返回是 tls: handshake failure、remote error: tls: unrecognized name(SNI 不被接受)、x509: certificate signed by unknown authority(中间人证书);
  4. 数据读写阶段,可能返回 EOF、unexpected EOF、broken pipe、context deadline exceeded。

代理内核把 errno 映射成人类可读字符串后写入日志。所以日志里的每一个词,都对应一个确定的内核返回码,不是玄学。

2026 年的链路环境还有几个新增变量必须纳入考量:

  • BBRv3 与拥塞控制:部分中转节点启用 BBRv3 后,高丢包链路吞吐提升明显,但在丢包率超过 20% 的极端线路上会加剧 bufferbloat,表现为“测速很快、网页卡死”,日志里看不到报错,只有 TTFB 异常拉高。
  • 双 ISP / 多线 BGP 回程:同一节点在不同省份出口落点不同。你在日志里看到 match GeoIP(HK),实际可能绕了日本 NTT 回程,延迟凭空多 60ms。
  • IEPL / IPLC 的物理隔离:内网专线不过公网国际出口,天然规避 QoS 清洗和 GFW 的 RST 注入。这也是为什么专线节点日志里几乎看不到 connection reset,而公网中转节点天天见。

想深入理解线路类型的物理差异,建议先读 /tech/bgp-iepl-iplc-explained/ 这篇底层拆解,再回来看日志会通透很多。

三、核心指标对照矩阵:什么算“好线路” ​

判断一条线路是否值得留,不要看宣传图上的“不限速”,看下面这张表。所有指标都能通过日志 + 命令行实测得到。

#量化指标及格线良好优秀观测手段
1TCP 握手 RTT(本地到入口)低于 120ms低于 60ms低于 25mstcping -p 443
2TLS 握手耗时(含证书链)低于 400ms低于 200ms低于 120mscurl -w "%{time_appconnect}"
3首字节时间 TTFB低于 900ms低于 500ms低于 250mscurl -w "%{time_starttransfer}"
4晚高峰丢包率低于 3%低于 1%低于 0.2%mtr -rwzc 100
5抖动(RTT 标准差)低于 30ms低于 12ms低于 5msmtr 逐跳抖动列
6单线程下载速率高于 30Mbps高于 120Mbps高于 400Mbpscurl -o /dev/null 大文件
74K 视频起播缓冲低于 5s低于 2s低于 1s客户端日志 + 播放器统计
8RST 注入频次(每千连接)低于 20 次低于 5 次0 次tcpdump 抓 RST
9晚高峰降速比(对比凌晨)高于 50%高于 80%高于 95%分时段 speedtest
10IP 纯净度(原生/广播)非机房段原生住宅段原生 + 解锁流媒体落地流媒体检测

一句话总结:RTT 决定手感,丢包决定稳定,TTFB 决定“卡不卡”,RST 频次决定“能不能用”,带宽只决定下载快不快。很多人只盯带宽,结果买到 1Gbps 端口但 RST 频发,体验反而更差。

四、日志关键词 × 根因判定总表 ​

把这张表存下来,90% 的报错可以直接对号入座。

日志关键词所属阶段最可能根因首选处置
connection reset by peer数据读写目标站风控 / GFW RST / 节点服务端踢人换落地 IP,或换专线节点
connect: connection refusedTCP 握手节点端口未监听、被防火墙 DROP 后回 RST核对端口与协议参数
i/o timeout / context deadline exceeded全阶段链路丢包、节点宕机、QoS 限速先 mtr 定位丢包跳点
TLS handshake timeoutTLS 阶段中间盒阻断 ClientHello、MTU 异常开 Sniffer、下调 MTU 至 1380
remote error: tls: handshake failureTLS 阶段SNI 被识别、服务端拒绝旧 TLS 版本强制 TLS1.3,开启 TLS 分片
x509: certificate signed by unknown authorityTLS 阶段中间人证书 / 本机根证书缺失检查是否被运营商劫持
unexpected EOF数据读写连接被中途切断,常见于长连接被清洗缩短 keepalive,换协议
dns resolve failedDNS上游 DNS 污染或超时切 DoH / 关闭 fake-ip 冲突
no route to host网络层本机路由表或 TUN 状态异常重启 TUN,检查默认路由
broken pipe数据读写客户端主动断开但内核仍在写一般无害,大量出现需关注

五、细分人群与场景选型 ​

日志反映的是链路,链路要匹配场景。以下是四类典型人群的取舍逻辑:

1)AI 重度用户(ChatGPT / Claude / Gemini) 痛点是风控而非速度。日志里高频出现 connection reset 与 403,说明落地 IP 被标记。此时带宽再大也无用,必须选原生住宅 IP 落地。参考 /scenario/ai-native-ip/。

2)4K / 8K 流媒体用户 痛点是晚高峰稳定性与解锁完整性。看日志重点抓 TTFB 和缓冲重试次数,而不是峰值带宽。IPLC 专线在这类场景的优势最明显。

3)游戏与实时协作 痛点是抖动。看 mtr 的 RTT 标准差,超过 30ms 就会出现明显卡顿。公网中转在晚高峰几乎不可能稳定,优先 IEPL。

4)开发者(Git / npm / PyPI / Docker Hub) 痛点是长连接被重置。日志里 unexpected EOF 反复出现,通常是并发连接数过高触发清洗。降低并发、开启连接复用比换节点更有效。

六、分平台实操:日志开关、级别与配置避坑 ​

Clash Verge Rev / Mihomo Party

  • 日志级别:设置 → 日志 → debug。排障结束后记得调回 info,否则 debug 日志会写盘数百 MB。
  • 内核日志文件位置:~/.config/clash-verge/logs/ 或应用内“运行日志”面板。
  • 关键开关:unified-delay: true(统一延迟测量口径)、tcp-concurrent: true(并发握手抢最快 IP)、find-process-mode。
  • 最大的坑:skip-cert-verify: true。它会让所有 x509 报错消失,但你的流量可能正在被中间人解密。

sing-box

  • log.level 设为 debug 或 trace;trace 会记录每一次连接的路由决策,定位分流错误极快。
  • 常见错误:sniff 未开启导致域名规则失效,日志里会看到用 IP 匹配的 match,于是分流全乱。

Surge / Stash

  • Surge 在 [General] 中设 log_level = verbose,用“请求”面板查看更直观。
  • 避坑:REJECT 规则过多会让日志被拒绝请求淹没,建议先按策略分组过滤。

OpenClash(OpenWrt)

  • 路由器内存有限,debug 级别可能触发 OOM。建议用 log-level: warning + tcpdump 组合排障。
  • 避坑:fake-ip 与局域网 NAS 域名冲突,会导致内网设备全部解析失败。

Shadowrocket / iOS

  • 日志导出后用文本工具搜 reset 与 timeout,iOS 端日志精简,关键词更集中。

七、抓包与命令行排障手册 ​

按顺序执行,基本能定位到具体层级。

bash
# 1) 逐跳丢包与路径(TCP 443 探测,100 个包)
mtr -rwzc 100 -T -P 443 www.google.com

# 2) 单端口握手延迟与抖动(30 次探测)
tcping -p 443 -t 30 -i 0.5 jp01.example.net

# 3) 分层耗时拆解:DNS / TCP / TLS / TTFB
curl -o /dev/null -s -w 'dns=%{time_namelookup} conn=%{time_connect} tls=%{time_appconnect} ttfb=%{time_starttransfer} total=%{time_total}\n' https://www.netflix.com/

# 4) 强制 TLS1.3 并打印完整证书链
openssl s_client -connect jp01.example.net:443 -servername jp01.example.net -tls1_3 -showcerts

# 5) 抓取 RST 包,判断断连由谁发起
tcpdump -i any -nn -c 50 'tcp[tcpflags] & tcp-rst != 0'

# 6) 区分 DNS 污染与线路问题
dig +short +time=3 +tries=1 www.google.com @8.8.8.8

判定流程:

  • mtr 第一条跳点就丢包,说明问题在本机或本地网关,与机场无关���
  • 中间某跳开始丢包且持续到终点,说明该运营商国际出口拥塞,换落地运营商;
  • 只有最后一跳丢包,说明节点入口被打,换节点;
  • tcpdump 显示 RST 由本机发往节点,说明是本地内核因超时主动断开;
  • RST 由节点侧发回,且伴随 time 值只有几百毫秒,说明是服务端拒绝或 GFW 注入;
  • openssl 能握手成功但浏览器失败,几乎可以断定是本机证书或 DNS 分流问题。

八、行业常见避坑矩阵 ​

宣传话术实际含义识别方法
“无限流量”通常限制单节点并发或做 QoS 隐性限速晚高峰单线程下载速率骤降
“BGP 直连”可能只是落地 BGP,入口仍是公网中转mtr 看中间跳数是否绕行
“原生 IP”常为广播 IP 冒充检测落地 IP 的 ASN 归属与注册地
“解锁全部流媒体”可能仅 DNS 解锁,非真正 IP 解锁播放时抓包看实际 CDN 归属
“1Gbps 端口”端口带宽而非单用户带宽高峰期实测单线程速率
“不超售”无法验证的承诺连续 7 天记录晚高峰速率曲线

核心判据只有一条:任何宣传都要用自己的日志和命令复现一遍。日志不会说谎,宣传会。

九、FAQ:7 个真实痛点 ​

Q1:日志刷屏 connection reset by peer,但网页还���开? 说明只有部分连接被重置,通常是对特定域名(如 AI 站点)的风控。检查分流规则,把该域名单独规划到原生 IP 节点。

Q2:节点测速很快,但看视频一直转圈? 典型的 BBRv3 + bufferbloat 症状。测速走高并发短连接,视频走单长连接。用 mtr 看抖动,用 curl 看 TTFB,抖动超标就换 IEPL 线路。

Q3:TLS 握手失败只在浏览器出现,curl 正常? 浏览器走系统代理链路,curl 走命令行环境变量,两者 DNS 解析路径可能不同。检查是否开启了 TLS 分片、ECH 或系统级证书拦截。

Q4:开了 TUN 模式后内网服务全挂? TUN 抢占了默认路由,需手动加内网网段(如 192.168.0.0/16)直连规则,并确认 fake-ip 过滤名单包含内网域名。

Q5:i/o timeout 频繁但 ping 得通? ICMP 通不代表 TCP 通。很多清洗设备只放行 ICMP,对 TCP 443 做丢弃。用 tcping 验证 TCP 层。

Q6:日志显示 match GeoIP(HK),但延迟像日本? 分流规则只决定“用哪个节点”,不决定“走哪条回程”。入口在 HK,回程可能绕 JP,mtr 一看便知。

Q7:换了很多节点都一样报错,是不是客户端问题? 先看是不是所有节点都走同一个 DNS。DNS 污染是全局性的,换节点无效。切 DoH 通常立刻见效。

十、延伸阅读内链矩阵 ​


结语:日志不是给客服看的,是给你自己看的。当你能从一行 connection reset by peer 里读出“这是风控、不是线路问题”,你就已经脱离了“换节点祈祷”的初级阶段。真正的排障能力,来自对每一层协议返回值的敬畏。

标签:#客户端日志排错 #Clash日志分析 #ConnectionReset #TLS握手失败 #网络卡死定位 #跨境链路优化 #AirPick

数据仅供参考,请以机场官网实时信息为准。遵守法律法规,文明合规出海。