sing-box 配置转换:从订阅或节点到可校验的 JSON 配置
简答:sing-box 配置转换不是简单改文件后缀:Clash YAML、订阅链接、单条节点链接和完整 JSON 的处理方式不同。最稳妥的流程是先备份原始输入,确认客户端内核版本,再转换、用 sing-box check 校验,最后只在客户端中导入测试。本文不提供未经核实的固定转换器菜单路径,也不把“能导入”当成“节点一定可用”。
定义:sing-box 配置转换,是把订阅、节点分享链接或其他代理配置整理为 sing-box 使用的 JSON 配置,并经过版本匹配、语法校验和实际连接测试的过程。
先判断你手里的输入是什么
本文是速翻翻的第三方使用指南,重点解决 sing-box 配置转换和导入排查,不代表任何客户端或配置提供方的官方页面。
| 手头输入 | 它是什么 | 建议处理方式 | 主要边界 |
|---|---|---|---|
| 订阅链接 | 远程地址,返回节点或配置内容 | 优先确认提供方是否直接提供 sing-box 格式;没有时再使用可信转换方案 | 订阅可能包含账号凭据,不要随意粘贴到陌生网站 |
| Clash YAML | 包含 proxies、proxy-groups、rules 等字段的 YAML 文件 | 转换为 sing-box JSON 后再校验 | 规则组、脚本、规则集和特殊插件不一定能一一对应 |
| 单条节点链接 | 例如某种协议的分享链接 | 先确认 sing-box 是否支持该协议,再生成对应 outbound | 单条链接通常不包含完整 DNS、路由和 TUN 设置 |
| 完整 sing-box JSON | 已经符合 sing-box 结构的配置 | 通常不需要再次转换,先做格式化和 check | 仍可能因内核版本、字段弃用或缺少权限而启动失败 |
sing-box 官方文档明确说明其配置文件使用 JSON,并列出 log、dns、inbounds、outbounds、route 等顶层结构;转换工具只能生成文本,不能替你验证节点凭据、规则逻辑或系统权限。可参考sing-box 配置说明。
首屏三步:把 Clash 配置转换成 sing-box 可检查的文件
- 备份原始内容。把原始订阅地址、YAML 文件或节点链接单独保存,不要直接覆盖。若输入是订阅链接,先确认它来自你信任的配置提供方;无法确认来源时,不要把真实订阅凭据上传到在线转换页面。
- 选择与内核匹配的输出模板。先在 sing-box 客户端或命令行查看实际版本,再选择对应版本的模板或转换结果。不要仅凭文件名判断兼容性;配置字段在不同版本间可能迁移,例如官方迁移文档记录了 1.12 的 DNS 服务器格式变化,以及旧格式在后续版本中的移除计划,详见sing-box 迁移说明。
- 生成 JSON 后立即校验。把结果保存为独立文件,例如
config.json,在配置目录执行官方文档列出的检查命令:
sing-box check校验通过只代表配置结构和字段基本能被当前程序接受,不代表节点可连通、DNS 可用、路由正确或 TUN 已获得系统权限。若命令输出错误,先保留完整报错,不要连续修改多个字段。
需要整理格式时,可使用官方示例中的格式化命令:
sing-box format -w -c config.json -D config_directory上述命令和配置结构来自官方配置文档;不同发行版或图形客户端可能对文件位置有自己的管理方式,具体导入入口以当前客户端界面为准。
在线转换与本地转换,怎么选更稳妥
优先级建议:配置提供方直接提供 sing-box 配置,其次是本地转换,最后才考虑在线转换。原因不是在线工具一定有问题,而是你需要确认它是否保存输入、是否会记录订阅地址、是否会把节点信息发送给第三方;如果页面没有清楚说明,就按“未核实”处理。
- 直接使用提供方配置:减少中间转换,但要检查它是否与当前 sing-box 内核匹配。
- 本地转换:订阅凭据不必离开本机,适合包含个人令牌的输入;但需要自己准备转换工具,并理解输出配置。
- 在线转换:操作门槛低,适合处理不敏感的测试内容;不要直接提交长期有效的真实订阅地址,转换后及时撤销或更换已暴露的订阅凭据。
无论采用哪种方式,都应保留输入、输出和错误日志三份文件,并在完成验证后删除不必要的临时副本。不要把订阅地址、UUID、密码、私钥或完整配置发布到论坛、截图和公开代码仓库。
转换后必须检查的五个位置
- outbounds:确认至少存在实际使用的代理出站,server、server_port、认证信息、TLS 或传输层字段没有被截断。只看到节点名称不等于节点能建立连接。
- route:检查默认出站、直连规则、阻断规则和规则集引用是否符合预期。sing-box 的 route 配置包含默认解析器、规则集和路由动作等内容,字段变化应以官方 Route 文档为准。
- dns:确认 DNS server 的写法与当前内核一致。1.12 起官方文档已记录新的 DNS server 格式,旧格式不能因为“看起来像 JSON”就继续使用。
- inbounds 与 TUN:如果只想先验证节点,先用客户端的普通代理模式,暂时不要同时改 TUN、DNS 劫持和路由。TUN 涉及系统权限与路由接管,相关字段还存在版本差异,参考官方 TUN 文档。
- 策略组或选择器:如果转换结果包含 selector、URL test 或多个节点,先手动选择一个已知节点测试,再判断策略组是否正常。自动测速结果不能替代实际网页、DNS 和长连接测试。
按现象排查:配置能导入但不能联网
| 现象 | 优先检查 | 停止条件 |
|---|---|---|
| JSON 解析失败 | 逗号、引号、括号、编码,以及转换器是否输出了额外说明文字 | check 仍报语法错误时,不要进入节点或 TUN 排查 |
| 字段未知或已弃用 | 当前 sing-box 版本与配置模板版本,尤其是 DNS、TUN 和路由字段 | 确认迁移前先复制文件,保留可回滚版本 |
| 配置能启动但节点失败 | 节点地址、端口、认证、TLS、传输层和系统时间 | 至少更换一个已知可用节点后再判断配置整体问题 |
| 代理模式可用,TUN 不通 | 系统权限、VPN 权限、路由接管、DNS 劫持和其他网络软件冲突 | 先关闭 TUN 恢复普通代理,确认基础出站正常 |
| 部分网站打不开 | DNS、规则顺序、规则集下载、直连或代理策略 | 不要只依据浏览器能打开一个网站判断配置完全正常 |
sing-box 官方文档将配置检查、格式化和合并作为独立操作;因此“文件能打开”“客户端显示已启动”“浏览器访问一个页面”分别只能证明不同层级的问题,不能互相替代。若配置包含远程规则集,还要确认规则集地址可访问且格式与配置声明一致,可参考官方 rule-set 文档。
导入、验证与回滚的最小流程
- 关闭当前正在运行的 sing-box 配置,复制原配置作为回滚文件。
- 导入转换后的 JSON,不要同时修改 DNS、路由和 TUN。
- 先启动普通代理或客户端提供的基础模式,确认日志中没有配置解析错误。
- 用一个普通网页、一个需要 DNS 解析的域名和一个已知节点分别测试;不要把单次测速当作长期性能结论。
- 基础出站正常后,再单独启用规则、策略组或 TUN,每次只改一个变量。
- 任何一步失败,恢复上一份配置,记录错误信息,再针对该层排查。
如果使用 sing-box for Desktop,官方页面说明其可以管理并运行本地或远程配置文件,并支持 Windows 10 及更高版本、Linux 多种架构;但具体导入按钮、权限提示和版本能力仍应以当前客户端实际界面为准,参考官方桌面客户端说明。
常见问题
Clash 订阅能不能直接导入 sing-box?
不能一概而论。订阅返回的格式、提供方是否支持 sing-box、客户端是否支持远程配置都会影响结果。先确认返回内容是 Clash YAML、sing-box JSON 还是其他文本,再决定直接导入或转换。
转换后为什么还是提示 JSON 错误?
常见原因包括输出内容不是纯 JSON、字段值被截断、转义字符错误,或转换结果使用了当前内核不认识的字段。先运行 sing-box check,保留原始报错;不要把语法错误和节点连接错误混在一起排查。
配置通过 check 就代表可以正常使用吗?
不代表。check 主要用于配置层面的接受性检查,实际使用还需要验证出站连接、DNS、规则和系统权限。TUN 能启动也不等于所有应用流量都按预期经过代理。
应该选择 1.12、1.13 还是 1.14 模板?
以你实际运行的 sing-box 内核版本为准,不要只看客户端名称。官方迁移文档显示不同版本存在 DNS 和其他字段迁移;如果客户端内核版本无法确认,就先查看版本信息或客户端关于页面,再选择模板。
在线转换会不会泄露订阅?
是否保存或处理输入取决于具体服务的隐私说明,本文无法替任何服务作保证。对真实订阅地址,优先使用提供方原生配置或本地转换;不得把长期有效的订阅凭据粘贴到无法核实的数据处理页面。
常见问题
Clash 订阅可以直接导入 sing-box 吗?
取决于订阅返回格式和客户端能力。先确认返回的是 sing-box JSON 还是 Clash YAML;如果是 YAML,通常需要转换后再校验。
sing-box check 通过后就一定能联网吗?
不一定。check 只能作为配置层验证,仍需单独测试节点出站、DNS、路由和 TUN 权限。
转换时应优先使用在线工具还是本地工具?
包含真实订阅凭据时优先考虑配置提供方原生配置或本地转换。在线工具是否保存数据需查看其公开说明,无法核实时按未核实处理。
为什么转换后出现字段不兼容?
常见原因是模板和实际 sing-box 内核版本不一致。先确认内核版本,再对照官方迁移文档处理 DNS、TUN 或其他已迁移字段。