AmyTelecom - 2026顶级网络加速专线 | 极速秒开流媒体与AI的机场推荐

sing-box 订阅转换后无法使用?先查返回格式与配置校验

更新于 2026-10-23 · amytelecom.top

简答:先别重复转换:确认订阅返回的是 sing-box JSON,不是 HTML、YAML 或错误页;随后执行核心校验。若校验通过仍无法连接,再检查本地回环地址、内核版本、DNS、路由和节点参数。

定义:sing-box 订阅转换后无法使用,是指转换结果无法导入、配置无法通过核心校验、启动报错,或启动后节点持续超时。

先判断卡在哪一阶段

本文与 sing-box 项目及其开发者无隶属关系。先不要连续更换转换模板,先确认失败发生在下载、导入、启动还是运行阶段。sing-box 配置文件采用 JSON,并提供 check 与 format 命令,具体命令以sing-box 配置文件说明为准。

现象先检查什么正常判定
链接打不开、导入为空HTTP 响应、返回正文、订阅地址能取得正文,且不是 HTML、登录页、错误提示或 YAML
保存后立即报错JSON 语法、字段名、字段类型sing-box check 能通过,日志不再出现解析或未知字段错误
能启动但节点全部 TimeoutDNS、路由、节点域名、端口和 TLS至少一个节点能完成解析与连接,不再停留在同一种超时错误
电脑能加载、手机不能加载转换地址是否为本地回环地址手机访问的是手机可达的远程地址,而不是电脑上的 127.0.0.1 或 localhost

第一步:确认转换结果确实是 sing-box JSON

  1. 复制转换后的完整地址,先不要直接导入客户端。
  2. 在电脑终端执行下面的命令,其中 https://example.com/converted.json 只是示例,请替换为你的实际转换地址。

curl -L --fail --show-error --max-time 20 -D headers.txt -o converted.json "https://example.com/converted.json"

  • -L 用于跟随重定向,--fail 用于把 HTTP 错误返回为失败,-D 保存响应头,-o 保存正文。
  • Windows 10/11、macOS 和多数 Linux 环境通常已有 curl;若终端提示找不到命令,可用浏览器保存响应内容后继续检查。
  • macOS/Linux 可执行 head -c 200 converted.json;PowerShell 可执行 Get-Content .\converted.json -TotalCount 5。

如果开头是 <html、登录页、验证码、错误文本或 YAML 常见的 proxies:,就不能把它当作 sing-box JSON 配置直接导入。此时应回到转换端核对输入订阅是否仍可访问、输出格式是否选对;转换工具当前是否正常,本文未核实。

如果返回的是 JSON,但只有错误字段、节点列表为空,或明显缺少配置所需的 outbounds,请先保存原始响应,不要直接手改整份配置。sing-box 配置结构可对照sing-box 配置文件说明核验。

第二步:用核心命令区分格式错误与运行错误

把响应文件另存为本地配置,例如 converted.json,然后执行:

sing-box check -c converted.json

官方配置文档列出了 sing-box check 和 sing-box format -w -c config.json 的用法;如果你安装的构建版本不接受 -c,先执行 sing-box check --help,以本机帮助输出为准。相关命令见sing-box 配置文件说明。

  • 出现 JSON parse error:检查逗号、引号、括号、注释和重复字段。JSON 文件不能直接保留部分模板语法。
  • 出现 unknown field、unknown type 或 invalid value:记下完整字段名,再查当前核心对应的配置文档,不要把其他客户端字段直接照搬。
  • 校验通过:只说明当前核心能够读取基础配置,不代表节点、DNS、路由和 TLS 一定可用,仍需继续运行测试。

为了便于定位行号,可先复制备份,再执行 sing-box format -w -c converted.json。如果该命令在你的版本中参数不同,执行 sing-box format --help,不要覆盖唯一的原始配置。

第三步:检查内核版本与 DNS 字段迁移

如果错误集中在 DNS 字段,先对照sing-box Migration 迁移文档。官方迁移资料说明,旧的 DNS 服务器写法需要改为新的类型化结构,例如旧的 address: local 对应新的 type: local,旧的地址形式也可能需要拆分为 type 与 server。

报错线索处理动作复核标准
legacy DNS、旧 address 写法按迁移文档逐个转换 DNS server 字段重新执行 check 后不再出现同一字段的弃用或解析错误
independent_cache备份配置后核对是否可以移除配置通过校验,且启动日志不再指向该字段
match_response、ip_cidr 组合报错逐项核对 DNS rule、evaluate 与响应匹配顺序启动阶段不再出现规则组合不兼容提示

当前 DNS 文档将 independent_cache 标为弃用,并说明后续版本会移除;不要根据其他教程猜测版本行为,应以sing-box DNS 配置说明和迁移文档逐项核对。

查看本机核心版本可执行 sing-box version,再与sing-box 官方发布页中的版本说明对照。版本号、配置字段和迁移结论必须以你实际安装的核心为准。

第四步:配置能启动但所有节点都 Timeout

  1. 先看 DNS 错误:如果日志出现 lookup timeout、no such host 或解析失败,先处理 DNS,不要先批量更换节点。
  2. 核对节点成组参数:检查服务器域名、端口、协议、TLS 开关、服务器名称和传输参数是否完整,不能把其他格式的字段直接拼接进 sing-box 配置。
  3. 核对路由标签:检查默认出站、DNS 使用的出站以及规则引用的标签是否真实存在。标签拼写不一致时,可能启动失败或请求未按预期转发。
  4. 检查系统时间:如果系统时间明显错误,先开启自动校时,再重新测试 TLS 连接。
  5. 一次只改一个变量:记录修改前后的日志,观察错误是否从 DNS 超时变为 TLS 握手错误,或是否已经能完成 TCP 连接。

如果电脑可以加载而手机不能,先检查转换地址是否包含 127.0.0.1、localhost 或仅电脑可访问的局域网地址。回环地址指向当前设备本身,所以手机访问电脑上的回环地址时不会取得电脑上的内容;应改用手机可访问的远程地址,或在手机端重新获取订阅。

如果配置使用较新的 DNS 规则或出站字段,先以当前核心文档为准,尤其核对 DNS server、DNS rule、路由和出站的字段结构。相关字段可分别参考DNS 配置说明与路由规则说明。

最后复核:保留原始文件再重新导入

  • 原始转换响应已保存,并确认不是 HTML、YAML、登录页或错误提示。
  • 当前核心能够通过 sing-box check。
  • DNS 字段已与当前迁移文档对照,未盲目保留已弃用字段。
  • 订阅地址不是仅本机可访问的回环地址。
  • 启动日志与运行日志分开判断:启动报错先修配置,Timeout 再查 DNS、路由和节点连接。
  • 每次只改一个变量,并保留一份未修改的原始配置,便于回滚。
  • 公开排查信息时,删除订阅令牌、节点密码、服务器凭据和完整私密地址。

如果仍无法定位,请整理失败阶段、完整错误行、核心版本、系统平台,以及已脱敏的相关字段。不要只提供“不能用”或客户端状态截图,否则很难区分转换返回错误、配置不兼容和实际连接失败。

常见问题

订阅转换后返回 YAML,sing-box 能直接导入吗?

通常不能直接按 sing-box JSON 配置使用。先确认返回内容;如果出现 proxies、proxy-groups 等 YAML 结构,应重新选择能输出 sing-box JSON 的转换方式,或使用适配该格式的客户端。

为什么配置保存成功,启动时仍然报错?

保存成功只代表客户端接受了文本,不代表核心已经校验通过。把配置导出后执行 sing-box check,再根据完整错误检查 JSON 语法、字段类型、DNS 迁移和核心版本。

电脑能加载订阅,手机却无法使用,先查什么?

先看订阅转换地址是否为 127.0.0.1、localhost 或电脑局域网地址。手机访问这些地址时指向手机自己或不可达设备,应改用手机能访问的远程地址,或在手机端重新获取订阅。

所有节点都显示 Timeout,应该先换节点还是先查配置?

先查配置和网络路径。确认 DNS 能解析、默认出站和规则标签存在、节点域名与端口未被截断,再做单节点测试;如果错误类型发生变化,说明排查可能进入了下一层。

相关阅读

参考资料

  1. sing-box 配置文件说明
  2. sing-box Migration 迁移文档
  3. sing-box DNS 配置说明
  4. sing-box 路由规则说明
  5. SagerNet/sing-box 官方发布页