sing-box连接不上怎么办?按日志、节点、DNS和TUN排查
简答:先不要急着换节点:sing-box连接不上通常要先区分“配置没启动、节点连不上、DNS失败、系统代理未接管”四类问题。第一步备份配置并查看第一条 ERROR 或 FATAL 日志;第二步用 sing-box check 校验配置;第三步暂时关闭TUN和复杂分流,只用一个节点测试。这样可以快速判断问题是在配置、远端节点,还是本机代理链路。
定义:sing-box连接失败排查,是按照配置、进程、代理端口、节点握手、DNS、路由和应用接管顺序,逐层缩小故障范围的过程。
先做这三步:确认故障发生在哪一层
本文面向已经安装并导入配置、但 sing-box 无法连接或启动后无法访问网页的情况。本站是独立使用指南站,不代表 sing-box 官方;配置字段和客户端菜单可能随版本变化,涉及版本差异时应以当前官方文档为准。本文核验时间为 2026-11-03。
- 备份配置:复制当前 JSON 文件,保留一份原始副本。不要直接覆盖唯一配置。
- 校验配置:在命令行进入 sing-box 所在目录,运行
sing-box check -c config.json;如果当前版本参数不同,以sing-box help显示的参数为准。官方文档确认 sing-box 使用 JSON 配置,并提供 check 命令用于检查配置。查看配置与命令说明 - 最小化启动:暂时关闭 TUN、复杂规则集和多个节点,只保留一个确定可用的出站和一个本地代理入口,再观察日志。
如果第二步就报错,优先修配置;如果配置能通过但启动后没有请求记录,优先检查本地端口、系统代理或 TUN;如果有请求记录但出现超时或握手失败,重点检查节点、TLS和网络出口。
按现象分流:不要把四种“连接不上”混在一起
| 现象 | 优先检查 | 预期结果 |
|---|---|---|
| 订阅或远程配置下载失败 | 订阅地址、返回内容、认证和本机DNS | 能取得预期格式的配置内容,而不是登录页或错误页面 |
| 程序启动即退出 | JSON语法、字段名称、文件路径、权限 | check通过,进程保持运行 |
| 节点连接超时 | 节点域名解析、远端端口、网络出口和防火墙 | 域名能解析,目标端口至少能建立TCP连接 |
| 启动成功但网页打不开 | 本地代理端口、系统代理、DNS、路由规则和TUN | 代理端口有监听,浏览器请求能出现在日志中 |
| 只有部分应用不能用 | 应用是否遵循系统代理、分流规则和TUN权限 | 目标应用的请求能被代理入口接收或被明确直连 |
sing-box 的 mixed 入站可以同时提供 SOCKS 和 HTTP 服务,但实际监听地址与端口仍要以配置中的 listen、listen_port 为准,不能凭经验填写固定端口。查看 mixed 入站说明 查看监听字段说明
配置能启动但节点连不上:看第一条关键日志
在配置中临时把日志级别调到 debug,并保留时间戳;官方支持的日志级别包括 trace、debug、info、warn、error 和 fatal。排查结束后可恢复为 info,避免长期产生过多日志。查看日志配置
| 日志关键词 | 通常表示 | 处理顺序 |
|---|---|---|
connection refused | 目标地址主动拒绝连接,或端口没有服务 | 确认服务器地址、端口和服务端状态;不要先改DNS |
i/o timeout 或 context deadline exceeded | 在规定时间内未完成连接或响应 | 先解析域名,再测试目标端口;同时排除本地网络和防火墙 |
handshake failure | TLS或传输层握手参数不匹配 | 核对传输方式、TLS开关、SNI、ALPN、认证参数和系统时间 |
certificate 或 unknown authority | 证书校验失败 | 核对SNI与证书域名;不要为了绕过错误长期开启不安全证书校验 |
no route 或 network is unreachable | 系统路由或TUN接管出现问题 | 先关闭TUN复测,再检查自动路由和默认网卡 |
permission denied | 进程没有创建TUN、读取文件或监听端口的权限 | 按当前系统给客户端授权,或改用普通本地代理入口验证 |
TLS中的 server_name 用于证书主机名校验,也会参与握手中的服务器名称发送;因此它不能简单等同于服务器IP。查看TLS字段说明
本地代理端口没有请求:检查系统代理和端口监听
- 先在 sing-box 配置中找到对应入站的
listen和listen_port,确认地址不是当前设备无法访问的地址。 - Windows 可用
netstat -ano | findstr 端口号检查端口是否监听;macOS 或 Linux 可用lsof -nP -iTCP:端口号 -sTCP:LISTEN。如果没有监听,回到启动日志检查配置或权限。 - 如果端口正在监听,但浏览器无请求记录,检查系统代理是否填写了正确的协议、地址和端口。不要把 SOCKS 端口误填到 HTTP 代理栏,也不要把远端节点端口当成本地代理端口。
- 暂时退出其他代理软件、VPN、网络过滤器或重复的系统代理设置,再只启动一个客户端复测。
如果 sing-box 配置启用了 HTTP 入站并设置自动系统代理,启动和停止时可能会修改系统代理;这类行为取决于当前配置和客户端平台,发现异常时应先停止 sing-box并恢复原来的系统代理设置。查看HTTP入站说明
网页打不开但节点日志正常:排查DNS、规则和TUN
此时先判断是“所有域名都打不开”,还是“只有某些域名打不开”。可以先用本地代理端口访问一个普通网页,再用命令行测试域名解析;如果直连解析失败、代理解析正常,问题偏向本地DNS;如果解析正常但连接失败,继续看路由和节点日志。
- 关闭TUN复测:保留普通 HTTP 或 SOCKS 入站,手动让一个支持代理的应用使用它。如果这样能访问,问题多半在TUN权限、自动路由、严格路由或DNS接管。
- 检查DNS模式:确认DNS服务器能被当前路由访问,避免DNS请求被错误地再次送回代理入口形成环路。
- 检查规则:把复杂规则集、远程规则集和按应用分流暂时移除,只保留一个明确的默认出站。sing-box支持本地和远程 rule-set,远程规则集下载失败也可能造成启动或运行阶段异常。查看rule-set说明
- 恢复TUN:确认普通代理已能工作后,再开启TUN;一次只改一个选项,并在每次修改后复测。
TUN的 auto_route 会设置默认路由,strict_route 会强化路由约束;Windows下严格路由还会影响DNS泄漏行为,并可能使部分虚拟化软件等应用异常。Linux下官方文档建议在合适场景配合 auto_redirect,但具体能力取决于系统权限、内核和客户端实现。查看TUN、auto_route与strict_route说明
最小复现、复测与回滚清单
- 最小复现:备份原配置,只保留一个节点、一个普通代理入口、基础DNS和默认出站;暂时关闭TUN、远程规则集、复杂分流和特殊传输。
- 复测顺序:先确认程序持续运行,再确认本地端口监听,再让单个支持代理的应用发起请求,最后测试浏览器和其他应用。
- 逐项恢复:按“DNS→规则→系统代理→TUN→其他节点”的顺序一次恢复一项。哪一步恢复后再次失败,就锁定该层继续检查。
- 回滚:停止 sing-box,恢复原系统代理和原配置;如果修改了DNS或网络适配器设置,也一并恢复,然后重新启动系统网络。
- 反馈前脱敏:日志中删除订阅链接、UUID、密码、私钥、访问令牌、完整服务器地址和个人域名,只保留报错行、客户端平台、配置字段名称和复现步骤。
如果官方文档与当前客户端界面不一致,优先以已安装版本的帮助信息、配置校验结果和当前官方文档为准;本文不对未核实的版本行为、节点状态或服务可用性下结论。
常见问题
sing-box check通过了,为什么还是连接不上?
check主要解决配置结构、字段和路径等启动前问题,不代表远端节点一定可达。下一步应检查本地端口监听、节点域名解析、远端端口、TLS握手和系统代理是否真正接管。
sing-box显示运行中,但浏览器没有网络怎么办?
先确认浏览器是否使用了正确的HTTP或SOCKS代理地址与端口,再看日志中有没有浏览器请求。如果没有请求记录,优先检查系统代理或应用是否支持代理;如果有请求记录,再按DNS、规则和节点日志继续分流。
关闭TUN后能用,打开TUN就断网怎么办?
这通常把排查范围缩小到TUN权限、自动路由、严格路由、DNS接管或路由环回。先保留普通代理作为可用基线,再一次只恢复一个TUN选项,并查看启动日志和系统网络变化。
为什么不能直接把Clash配置文件导入sing-box?
不同客户端使用的配置格式和字段模型并不相同。sing-box使用JSON配置,导入前应确认内容确实是sing-box格式;如果是其他客户端格式,需要使用对应的转换工具或重新生成配置,不能只修改文件扩展名。
日志中出现TLS错误,要不要直接开启insecure?
不建议把关闭证书校验当作默认修复方案。先核对服务器名称、SNI、证书域名、系统时间、传输方式和服务端参数;只有在明确理解风险并有临时测试目的时,才按当前官方文档确认相关字段。
常见问题
sing-box check通过了,为什么还是连接不上?
check主要验证配置层面,不代表远端节点、DNS或系统代理可用。继续检查本地监听、节点域名、远端端口、TLS握手和请求日志。
sing-box运行中但浏览器打不开怎么办?
先核对浏览器使用的代理协议、地址和端口,再看日志是否有浏览器请求。没有请求记录查系统代理,有请求记录则查DNS、规则和节点。
关闭TUN后能用,打开TUN就断网怎么办?
优先检查TUN权限、auto_route、strict_route、DNS接管和路由环回。先以普通HTTP或SOCKS代理作为基线,再逐项恢复TUN设置。
TLS握手失败可以直接开启insecure吗?
不建议。先核对SNI、证书域名、系统时间、传输方式和服务端参数;关闭证书校验会降低安全性,只能作为明确风险下的临时测试。
相关阅读
- 如果你同时使用 Clash Verge Rev,可参考连接失败分层排查方法
- 需要排查另一款客户端的订阅导入与连接问题,可看 Hiddify 使用教程
- Android 用户还可以对照 v2rayNG 的订阅导入和连接排查步骤