Candytally(糖果云)

sing-box 连接超时怎么办?按日志、DNS、端口逐层排查

更新于 2026-11-03 · candytally.buzz

简答:sing-box 连接超时,先不要批量换节点或修改配置:第一步看日志里最早出现的 ERROR/FATAL,第二步分别测试节点域名解析和远端端口,第三步确认本地 HTTP、SOCKS 或 mixed 代理端口是否真的在监听。若订阅本身更新超时,查下载链接与网络;若节点端口可达但 TLS 握手超时,重点核对 SNI、证书、Reality 或传输参数;若代理已启动但网页打不开,再查 DNS、IPv6、规则、TUN 和系统代理。

定义:sing-box 连接超时,是 sing-box 在规定时间内未完成订阅下载、DNS 查询、远端 TCP/UDP 连接、TLS 握手或目标请求中的某一环节。

先做一分钟判断:超时发生在哪一层

本文是第三方使用指南站,只帮助你核验 sing-box 的配置和连接链路,不代表任何品牌官方。先关闭批量改配置的想法,保留当前配置副本,并按下面顺序判断。

常见报错与优先检查项
现象或日志关键词通常对应的层级先做什么
timeout 出现在订阅更新订阅地址、DNS、下载链路用浏览器或系统网络单独测试订阅地址;不要把它当成节点握手失败。
connection refused目标端口拒绝连接检查地址、端口和节点状态;确认本地网络没有连错端口。
handshake failure、TLS 超时TLS、SNI、证书或传输参数核对 server_name、证书校验、Reality 或 WebSocket/gRPC 参数。
DNS resolution failed域名解析测试节点域名的 A、AAAA 记录,并比较 IPv4 与 IPv6。
no route、代理启动但网页打不开规则、路由、TUN 或系统代理先确认本地代理端口可访问,再检查路由和代理冲突。

最短路径:看第一条错误 → 测节点域名 → 测节点端口 → 测本地代理端口 → 最后才改 DNS、TLS 或 TUN。

第一步:查看第一条 ERROR 或 FATAL,并先校验配置

连续出现多条超时日志时,不要只看最后一行。向上查找同一请求最早出现的 ERROR 或 FATAL,记录发生时间、出站标签、目标域名、错误类型和是否涉及 DNS、TLS、路由。UUID、订阅链接、用户标识、域名中的私有信息应先脱敏。

命令行配置可以先执行配置检查。官方配置文档提供了 sing-box check 检查入口;不同构建版本的配置参数可能不同,先运行 sing-box check --help 查看当前帮助,再按该版本支持的写法指定配置文件,例如:

sing-box check -c config.json

如果检查返回 JSON 语法错误、未知字段或字段类型错误,先恢复到上一次可用配置,不要继续排查网络。sing-box 配置使用 JSON,官方文档还提供格式化与合并命令说明,可对照配置结构与检查文档核对。

第二步:区分 DNS 失败与节点端口不可达

在节点配置中找到服务器域名,先做 DNS 测试。Windows 可使用:

nslookup 节点域名

macOS 或 Linux 可使用:

dig 节点域名 A
dig 节点域名 AAAA

如果 A 记录正常、AAAA 记录异常,临时优先测试 IPv4;如果只有 AAAA 而本地网络没有可用 IPv6,可能出现连接等待后超时。sing-box 的 DNS 配置支持 prefer_ipv4、prefer_ipv6、ipv4_only 和 ipv6_only 等策略,但不要因为一次失败就永久固定某个策略,应在当前网络和节点地区下复测。官方 DNS 文档说明了默认查询超时、解析策略与缓存关系,可参考sing-box DNS 配置。

如果 DNS 能返回地址,再测试远端端口。Windows 可使用:

Test-NetConnection 节点域名 -Port 端口

macOS 或 Linux 可使用:

nc -vz 节点域名 端口

端口测试失败,优先检查节点地址、端口、当前网络、防火墙和传输协议;端口测试成功但 sing-box 仍超时,故障更可能位于 TLS、认证、传输参数或后续路由。

第三步:确认本地代理端口和代理链路没有冲突

如果 sing-box 图形客户端显示已启动,但应用仍然超时,先确认本地入站端口确实在监听。Windows 可使用:

netstat -ano | findstr LISTENING

macOS 或 Linux 可使用:

lsof -nP -iTCP -sTCP:LISTEN

将结果与 sing-box 配置中的 HTTP、SOCKS 或 mixed 入站端口对照。若端口没有监听,说明核心没有成功启动、配置未加载或端口被其他程序占用;若端口被其他程序占用,先停止冲突程序或改入站端口,然后重新启动并复测。

本地端口监听不代表远端节点可用。可以用支持代理的工具测试,例如在确认代理类型和端口后使用:

curl -v --proxy http://127.0.0.1:本地端口 https://example.com/

如果返回连接建立信息,说明本地代理至少接收到了请求;如果显示无法连接本地端口,先不要修改 DNS 或 TLS,应回到入站端口、核心进程和系统代理检查。

第四步:端口可达但 TLS 握手超时,检查 SNI、证书和传输参数

节点端口可以连接,但日志出现 TLS handshake、certificate、SNI、Reality 或传输层相关错误时,重点核对以下项目:服务器名称是否填写为服务端要求的域名;证书校验模式是否被错误改动;Reality 的 public key、short ID 等字段是否完整;WebSocket、gRPC 的路径、服务名或 Host 是否与服务端配置一致;节点协议是否与当前出站类型匹配。

不要为了“先连上”直接关闭证书校验,也不要照抄其他节点的 TLS 参数。官方 TLS 文档说明,TLS 握手有单独的 handshake_timeout 字段,默认值和可用字段会随当前版本变化;如果配置使用了版本新增字段,应先核对当前内核版本与对应文档,而不是把未知字段当成网络故障。可参考sing-box TLS 配置。

系统时间明显错误也可能导致证书验证异常。先将设备日期、时间和时区改为自动同步,再重启 sing-box 复测。若只在某一类传输协议上失败,而同一服务器的其他协议正常,优先怀疑该协议的参数或兼容性,而不是立刻判定节点失效。

第五步:代理已启动但网页仍超时,检查 DNS、规则、TUN 与 IPv6

这类情况常见于 sing-box 核心正常运行,但应用没有真正走代理,或者 DNS 请求和目标连接走了不同路径。按顺序检查:

  1. 确认应用使用了正确端口:系统代理中的 HTTP、HTTPS 端口应与 sing-box 入站端口一致;浏览器自有代理设置不要覆盖系统代理。
  2. 确认规则没有误判为直连:临时切换到明确的代理出站或简化规则测试;若简化后恢复,说明原规则或 DNS 路由需要逐条核对。
  3. 确认 TUN 权限和路由:TUN 需要系统权限或 VPN 权限,启动后应看到对应虚拟网卡或 VPN 状态;如果同时运行其他 VPN、代理客户端或安全软件,先停用一个再测试。
  4. 检查 DNS 路由:sing-box 的 DNS 服务器、规则和最终服务器要能实际访问。不要把某个公共 DNS 地址当成所有地区的通用答案,应分别测试当前网络、节点地区和目标域名。
  5. 复测 IPv4 与 IPv6:先用 curl -4 和 curl -6 对比;若只有 IPv6 路径超时,可暂时选择 IPv4 优先进行验证,确认后再决定是否调整长期策略。

对于 TUN 模式,官方路由文档说明 auto_detect_interface 可将出站连接绑定到默认网卡,以减少 TUN 下的路由环路;但是否适用取决于系统、当前配置和其他 VPN 软件,修改前应备份配置。可参考sing-box 路由配置与TUN 入站配置。

第六步:订阅更新超时与节点连接超时要分开处理

订阅更新超时:发生在下载配置之前,检查订阅 URL 是否仍有效、设备能否访问该地址、DNS 是否能解析订阅域名,以及客户端是否设置了错误的系统代理。先在浏览器或命令行单独测试 URL;不要因为订阅下载失败就修改节点的 TLS 参数。

节点连接超时:发生在配置已经加载之后,重点看节点域名、端口、TLS、认证和路由。可以先用一个已知格式正确的节点做对照,但不要将一次对照结果写成节点永久失效。

代理启动但目标网站超时:本地入站可能正常,问题集中在规则、DNS、TUN、IPv6、目标站点响应或应用自身代理设置。此时应使用同一个代理端口测试多个目标,避免把单一目标的拒绝或响应慢误判为整个节点故障。

复测、回滚与提交日志的正确方式

每次只改一个变量:例如先恢复原 DNS,再单独测试 IPv4 优先;不要同时改 DNS、TLS、TUN 和规则,否则无法知道是哪一步产生变化。复测至少记录配置版本、设备系统、网络类型、节点协议、第一条错误和修改前后结果。

如果修改后仍超时,立即回滚到备份配置,确认基础连接是否恢复。提交日志前删除订阅链接、UUID、密码、私钥、完整域名中的敏感部分和设备标识。官方文档的故障支持入口列出了问题反馈渠道,具体可参考sing-box 支持页面。

可执行的回滚顺序:恢复原配置文件 → 关闭新增的 DNS 覆写或 TUN 选项 → 重启核心 → 清理应用代理设置 → 再按“日志、DNS、端口、TLS、路由”顺序复测。

常见问题

sing-box 出现 timeout,是不是节点已经失效?

不一定。timeout 可能发生在订阅下载、DNS 查询、远端端口、TLS 握手或目标请求阶段。先看第一条 ERROR/FATAL,再分别测试域名解析、远端端口和本地代理端口,确认故障层级后再判断节点。

sing-box 连接超时,应该先换节点还是先改 DNS?

建议先检查日志和配置,再测试 DNS 与端口。只有在确认域名解析异常或 DNS 查询超时时,才针对 DNS 做最小修改;不要在未备份配置前批量换节点或同时修改多个字段。

为什么节点端口能连通,但 sing-box 还是 TLS 超时?

端口可达只说明 TCP 层可能建立,不代表 TLS、认证和传输参数正确。重点核对 server_name、证书、Reality 参数、WebSocket/gRPC 路径以及节点协议类型,同时确认系统时间正常。

sing-box 本地代理已经启动,但浏览器仍然连接超时怎么办?

先确认浏览器或系统代理使用的端口与 sing-box 入站端口一致,再检查是否有其他 VPN、代理软件或安全软件覆盖代理设置。随后测试规则、DNS、TUN 和 IPv4/IPv6,判断是请求未进入 sing-box 还是进入后出站失败。

可以直接把 DNS 超时时间调大吗?

可以把它作为单变量实验,但不应把调大超时当成首选修复。sing-box 当前文档提供 DNS 默认超时及规则级覆盖字段;如果根因是错误的 DNS 路由、不可达服务器或 IPv6 路径异常,调大数值只会让等待更久。

相关阅读

参考资料

  1. sing-box 配置结构与检查命令
  2. sing-box DNS 配置文档
  3. sing-box TLS 配置文档
  4. sing-box 路由配置文档
  5. sing-box TUN 入站配置文档
  6. sing-box 支持页面