sing-box 排查指南
sing-box 是一个跨平台的通用代理内核,与 Clash、Xray 并列。它的定位与前两者不同:sing-box 更接近"内核 + 配置"的原始形态,多数图形界面(各平台的 sing-box GUI、Hiddify、部分定制客户端)都构建在它之上。这带来两个直接后果——配置能力最强,出错时的报错也最直白。
配置模型与其他客户端的差异
Clash 系使用 YAML 配置、以代理组和规则为中心;sing-box 使用 JSON 配置,结构围绕 inbounds(本地入口)、outbounds(出站节点)、route(路由规则)三块组织。
这个差异的实际影响是订阅格式的兼容性:服务商下发的 Clash 订阅或 v2ray 订阅不能直接喂给 sing-box,需要服务商提供 sing-box 格式的订阅地址,或由 GUI 客户端内置转换。购买前确认服务商是否标注支持 sing-box,是避免这一步卡住的最简单办法——本站在推服务的客户端标注见排行榜总览。
不要使用来源不明的在线订阅转换服务:那需要把完整节点配置交给第三方,等于主动制造一次凭据暴露,理由见订阅泄露处理。
日志级别是它最有用的工具
sing-box 的日志比多数图形客户端详细,且级别可调(trace、debug、info、warn、error)。排查时把级别调到 debug,能看到:
- 配置解析阶段的字段错误——报错会直接指出哪个字段不被识别,这是它相对 Clash 系最省时间的地方;
- 每个连接匹配到的路由规则,用于判断流量走了代理还是直连;
- 出站连接的建立与失败原因。
配置解析失败时内核不会启动,本地入口端口自然不监听。一条命令确认:
connproof doctor端口不在监听列表,对照 PROXY-003:本地代理端口未监听——在 sing-box 上这个错误几乎总是配置问题,去日志里找那个字段名。
常见现象对照
| 现象 | 可能原因 | 对应文档 |
|---|---|---|
| 内核无法启动、端口未监听 | JSON 配置字段错误或版本不兼容 | 本地代理端口未监听 |
| 订阅无法导入 | 订阅格式不是 sing-box 格式 | 订阅返回网页 |
| 节点连不上 | 节点不可达或协议参数不符 | 建连超时 |
| 已连接但部分域名不通 | route 规则匹配到直连或拒绝 | 已连接却无法上网 |
| TUN 模式开启后断网 | 虚拟网卡与系统路由冲突 | 网络不可达 |
| 证书校验失败 | 系统时间偏差 | 系统时钟偏差 |
版本兼容:升级前先看变更说明
sing-box 的配置结构在大版本之间有过调整,旧配置在新版本上可能解析失败,反之亦然。升级前的两个习惯能避免大部分麻烦:备份当前可用的配置文件;升级后先用日志确认内核正常启动,再谈使用。
同样的道理适用于协议:Hysteria 2、TUIC 等较新协议需要对应版本支持,协议与兼容性的完整说明见机场协议怎么选。
跨平台与 GUI 选择
sing-box 本身是内核,日常使用通常通过 GUI:桌面端有官方及第三方图形客户端,移动端有基于它的封装应用(如 Hiddify 系)。选 GUI 时关注两件事:它跟随的内核版本是否较新、是否支持你的服务商提供的订阅格式。
对不需要精细配置的用户,Clash 系客户端(Clash Verge)或 v2rayN 上手成本更低;sing-box 的价值在于配置能力与跨平台一致性。
取证与责任划分
配置层面的问题在日志里,链路层面的问题用分层检测:
connproof diagnose 节点域名 --port 节点端口connproof tls 节点域名 --port 443 --verbose分层检测全部通过而 sing-box 仍连不上,问题在配置;分层检测就失败,问题在链路或节点侧,此时换客户端无济于事。完整的责任判断方法见是机场问题还是我的问题。