贤者云 | xianzhey.shop

sing-box 节点连不上怎么办?7 步定位配置、DNS 与 TUN 问题

更新于 2026-11-12 · xianzhey.shop

简答:导入后所有节点超时,或节点显示连接成功但浏览器打不开?先备份配置并运行 <code>sing-box check -c config.json</code>,再直接查看日志对照表,判断问题属于配置、版本、DNS、TCP 端口、TLS、认证还是本地流量转发。不要一开始同时更换节点、DNS 和 TUN;按下面 7 步一次只改一个变量,定位会更快。

定义:sing-box 节点连接失败,是指配置读取、版本兼容、域名解析、TCP 建连、TLS 或协议握手、身份认证,以及本地入站或 TUN 转发中的一个或多个环节没有完成。

先试这一步:命令检查配置,再看日志速查表

如果 sing-box 启动即报错,先关闭 TUN,备份当前 JSON 配置,并在配置文件所在目录打开终端。官方文档确认 sing-box 使用 JSON 配置,并提供 sing-box check 检查命令;带文件参数时可执行:

sing-box check -c config.json

  1. 把 config.json 换成实际文件名;文件路径含空格时,按当前系统的路径规则加引号。
  2. 如果命令提示未知字段、类型错误、JSON 语法错误或缺少必填项,先修复第一条报错。
  3. 检查通过后再启动客户端,并临时把日志级别设为 debug。问题定位后恢复为 info。
  4. 不要公开包含订阅链接、UUID、密码、私钥、Reality 密钥或完整服务器地址的配置。

配置检查通过只代表文件可以被当前内核读取,不代表节点域名、端口、证书、身份信息或网络路径有效。需要核对命令和配置结构时,可参考 sing-box 配置文档;日志字段和输出文件规则见 sing-box 日志文档。

现象或日志先判断什么下一步检查
unknown field、invalid type、JSON 解析错误配置结构或内核版本不匹配执行 sing-box check,再对照迁移文档和当前字段名称
no such host、lookup、resolve节点域名解析失败,或 DNS 规则没有按预期生效执行 nslookup,检查 DNS server、规则和 final
connection refused目标端口主动拒绝,地址或端口可能不对核对节点信息,再测试 TCP 端口
i/o timeout、context deadline exceeded路径不可达、端口过滤、丢包或超时分别测试 DNS 与 TCP,并换另一条网络作对照
TLS handshake、证书、SNI、ALPN 错误TLS 或传输层参数不匹配,时间也可能异常核对 server_name、ALPN、证书和设备时间
EOF、connection reset,或认证相关错误服务端可能在认证或握手阶段关闭连接,客户端未必显示“authentication failed”逐字段核对 UUID、密码、密钥和协议参数,不要只搜索固定错误词
节点已连接,但浏览器或应用打不开本地入站、系统代理、路由或 TUN 没有接管应用流量先测 SOCKS/HTTP 入站,再检查系统代理和 TUN

第 1 步:确认 sing-box 内核版本与配置版本匹配

配置来自转换工具或较早版本时,字段兼容性是需要优先排查的原因。官方迁移文档列出了多个版本的弃用和迁移变化:例如旧版 DNS server 格式在 sing-box 1.12.0 起弃用,并在 1.14.0 移除;部分旧的特殊出站、TUN 字段和 DNS 规则也有迁移要求。查看 sing-box 迁移文档 查看 sing-box 更新记录

  1. 在终端执行当前发行版支持的版本查看命令,常见形式是 sing-box version;如果该命令不可用,使用 sing-box --help 查看本机帮助,以当前版本命令行为准。
  2. 记录内核版本、配置来源和报错字段,不要只记录客户端界面上的“连接失败”。
  3. 如果报错集中在 dns.servers、旧特殊出站、旧 TUN 地址字段或 DNS 规则,打开迁移文档搜索对应字段。
  4. 不要把新旧配置字段混用。先复制一份配置,再按迁移文档逐项改动。

配置检查失败时,先解决版本和格式问题;配置检查通过但节点仍失败,才继续进入 DNS、TCP 和 TLS 层。不同图形客户端可能内置不同内核版本,界面显示的应用版本不能替代实际内核版本确认。

第 2 步:测试节点域名和 TCP 端口

节点地址使用域名时,先把 DNS 解析和 TCP 建连分开测试。假设节点地址为 node.example.com,端口为 443,请替换为自己的脱敏测试值。

系统DNS 查询TCP 端口测试
Windows PowerShellnslookup node.example.comTest-NetConnection node.example.com -Port 443
macOSnslookup node.example.comnc -vz node.example.com 443
Linuxnslookup node.example.comnc -vz node.example.com 443
  1. DNS 查询失败:检查域名拼写、当前网络、系统 DNS 和 sing-box DNS 规则。
  2. DNS 成功但 TCP 失败:核对端口、节点地址和本地网络,不要直接把问题归因于 TLS。
  3. TCP 成功但 sing-box 握手失败:进入 TLS、传输层和身份参数检查。
  4. 命令显示端口开放,也不代表协议参数正确;它只能说明该地址和端口完成了基础 TCP 测试。

如果系统 DNS 可以解析,sing-box 日志却仍然提示解析失败,重点查看 DNS server tag、DNS rules、final 和出站使用的解析器。DNS 配置字段请以 sing-box DNS 文档 当前内容为准。

第 3 步:核对 TLS、传输层、时间和身份字段

出现 TLS handshake、证书、SNI、ALPN、EOF 或连接被重置时,不要继续反复切换 DNS。先把原始节点信息与当前配置逐项对照。

  1. 确认设备日期、时间和时区自动同步。时间异常可能影响证书校验或依赖时间容差的协议握手。
  2. 确认节点类型与出站类型一致,不要把一种协议的字段复制到另一种协议。
  3. 核对服务器地址、端口、server_name、UUID、密码、传输层路径、ALPN,以及协议要求的公钥、短 ID 或其他密钥字段。
  4. 如果只有一个节点失败,优先检查该节点参数是否完整;如果多个节点同时失败,优先回到配置版本、本地网络、系统时间和 DNS。
  5. 不要为了绕过报错而关闭证书校验、删除服务器名称或放宽安全设置。这样可能掩盖字段错误,并降低连接安全性。

如果配置由第三方转换工具生成,建议回到原始订阅或单节点信息比对。提交订阅链接给转换服务前,应先确认服务可信,并注意订阅链接本身可能包含可长期使用的凭据。

有关 TLS 字段和共享连接参数,可查看 sing-box TLS 文档。文档没有覆盖的具体服务端参数,应标记为“未核实”,不要凭客户端现象推断服务端状态。

第 4 步:区分节点握手失败与本地流量没走客户端

节点能建立连接,不等于浏览器或其他应用已经使用 sing-box。先采用最小路径测试,再决定是否启用 TUN。

  1. 测试本地入站:确认配置中的 SOCKS 或 HTTP 入站已启用,并以当前配置文件中的监听地址和端口为准。
  2. 测试系统代理:Windows 检查系统“代理”设置;macOS 检查网络服务中的代理设置。浏览器能打开而终端程序不能,可能是终端程序没有使用系统代理。
  3. 最后测试 TUN:TUN 需要管理员、root 权限,或图形客户端提供的服务模式与系统授权,具体取决于平台和客户端;不能笼统地把“服务模式”当作 sing-box 核心的必需条件。
  4. 排除冲突:暂时关闭其他 VPN、虚拟网卡、网络过滤软件和系统级代理。Windows 出现权限提示时,使用“终端管理员”;Linux 按当前发行版要求使用 root 或相应能力。
  5. 测试后回滚:TUN 开启后断网时,先停止 sing-box 或关闭 TUN,恢复系统代理和原网络设置,再查看路由、DNS、网卡和日志。

auto_route 的作用是把默认路由设置到 TUN;官方 TUN 文档同时说明,DNS 处理由 dns_mode、auto_route 和路由动作共同影响,DNS 劫持也可能通过 hijack-dns 路由动作处理。因此不要把不同版本的 DNS 行为简化成一个固定结论,需按当前版本配置核对。查看 TUN 入站文档 查看路由文档

第 5 步:Android 和 Apple 平台按日志入口定位

移动端的 TUN 通常由系统 VPN 或 NetworkExtension 接管,配置字段和桌面端并不完全相同。官方能力表显示,Android 与 Apple 平台对部分 TUN、进程和接口字段的支持存在差异,不能把桌面端 JSON 原样复制到手机。

  1. Android:先在客户端停止服务,再重新启动单个配置;如果仍失败,查看客户端工作目录中的崩溃日志。官方文档给出的工作目录是 /sdcard/Android/data/io.nekohasekai.sfa/files,崩溃日志为该目录下的 stderr.log。客户端界面若提供服务日志或运行日志,优先查看界面中的对应记录。
  2. iOS、macOS 和其他 Apple 平台:在客户端设置中打开 Settings → View Service Log 查看服务日志。若系统弹出 VPN 或 Network Extension 授权提示,应完成授权后再测试。
  3. 单节点测试:暂时只保留一个节点、一个配置文件和一个最小规则集,先确认节点握手,再恢复分流规则或按应用代理。
  4. 权限判断:Android 的部分字段需要系统权限;Apple 客户端通过 NetworkExtension 提供非特权 TUN。遇到字段不生效时,先看平台能力表,而不是继续修改同一字段。

Android 平台能力和日志位置见 Android 客户端文档;Apple 平台日志和 TUN 能力见 Apple 客户端文档。页面路径或菜单名称可能随当前版本界面变化,以客户端实际显示为准。

第 6 步:用最小配置排除规则、DNS 与 TUN 叠加影响

  1. 备份完整配置,并删除公开求助内容中的订阅链接、UUID、密码、私钥和服务器地址。
  2. 保留一个节点、一个明确的默认出站、一个本地 SOCKS 或 HTTP 入站。
  3. 暂时关闭复杂规则集、远程 rule-set、TUN 和额外 DNS 规则。
  4. 依次测试:配置检查、节点握手、本地入站、系统代理,最后再开启 TUN。
  5. 每次只恢复一项设置。哪一步重新出现错误,就回到该设置对应的文档和日志。

这种方法可以把“节点本身连不上”和“节点能连但应用没有走客户端”分开。前者重点看配置、版本、DNS、TCP、TLS 与认证;后者重点看入站、系统代理、TUN、路由、DNS 处理和其他网络软件冲突。

第 7 步:仍无法连接时,重新获取并核对配置

如果原始订阅已经更新、配置被转换工具改写、多个节点同时出现认证或握手错误,继续手工修改字段的收益可能较低。此时先保存配置检查结果和脱敏日志,再从可信来源重新获取配置。

  1. 核对配置格式、获取时间、节点类型和客户端内核版本。
  2. 不要把完整订阅链接直接发到公开论坛;如已泄露,应按提供方支持的方式撤销或重新生成凭据。
  3. 重新导入后只测试一个节点,确认基础连接后再恢复规则、DNS 和 TUN。
  4. 如果只有一台设备失败,比较设备时间、客户端版本、网络和权限;如果多台设备都失败,也只能说“配置或服务端状态需要进一步核实”,不能仅凭客户端日志断定服务端故障。

截至 2026-11-12,sing-box 官方文档仍将配置、迁移、DNS、TUN 和各平台客户端能力分别维护,因此排查时应以对应版本页面为准,而不是套用旧教程中的固定字段。

常见问题

sing-box 节点连不上,第一步应该做什么?

先备份配置并执行 <code>sing-box check -c config.json</code>,解决第一条格式或字段报错。检查通过后再看日志,按 DNS、TCP、TLS、认证和本地转发逐层测试。

sing-box check 通过了,为什么节点还是连不上?

check 只能说明配置结构能够被当前内核读取,不代表节点域名、端口、证书、身份信息和网络路径有效。下一步应分别测试 DNS 解析、TCP 端口和协议握手。

sing-box 日志只有 EOF 或 connection reset,没有 authentication failed,怎么办?

认证失败不一定会以固定关键词出现,服务端可能在认证阶段直接关闭连接。请回到原始配置,逐字段核对 UUID、密码、密钥、服务器名称和协议参数,不要只搜索 authentication failed。

macOS 和 Linux 如何测试 sing-box 节点端口?

先用 <code>nslookup node.example.com</code> 测试域名,再用 <code>nc -vz node.example.com 443</code> 测试 TCP 端口。将域名和端口替换为实际值;如果系统没有 nc,以当前系统可用的 TCP 测试工具为准。

开启 sing-box TUN 后电脑断网怎么办?

先停止 sing-box 或关闭 TUN,恢复系统代理和原网络设置,再检查管理员或 root 权限、auto_route、dns_mode、hijack-dns 路由、默认接口、虚拟网卡和其他 VPN 软件冲突。

Android 或 iPhone 上在哪里查看 sing-box 日志?

Android 可先查看客户端界面中的运行日志;官方能力文档还列出工作目录和 <code>stderr.log</code> 崩溃日志。Apple 客户端可在 <code>Settings → View Service Log</code> 查看服务日志。菜单可能随当前版本变化,以实际界面为准。

可以把完整 sing-box 配置发到网上求助吗?

不建议。订阅链接、UUID、密码、私钥、Reality 密钥、服务器地址和 API secret 都可能属于敏感信息。求助时只保留脱敏后的字段名、错误类型和必要日志;已经泄露的凭据应及时撤销或重新生成。

相关阅读

参考资料

  1. sing-box 配置结构、check 与 format 命令
  2. sing-box 日志等级与输出文件
  3. sing-box 版本迁移、弃用字段与 DNS 格式变化
  4. sing-box 更新记录
  5. sing-box DNS 配置
  6. sing-box TLS 字段说明
  7. sing-box TUN、auto_route 与 dns_mode
  8. sing-box 路由配置与规则
  9. sing-box Android 客户端能力与日志位置
  10. sing-box Apple 客户端能力与服务日志