sing-box 导入订阅怎么设置?5 步检查从保存到联网
简答:先确认订阅链接返回的是 sing-box JSON,而不是其他客户端格式;然后在对应客户端新建 Remote,填写名称和 URL,保存后更新、检查节点、授权启动。保存成功不等于已经联网。
定义:sing-box 导入订阅,是把远程 sing-box JSON 配置的 URL 添加为 Remote Profile,由客户端下载、解析、更新并运行。
先对号入座:导入失败通常卡在哪一步
本文与 sing-box 项目及其开发者无隶属关系。最快的做法不是反复点击刷新,而是先确认订阅格式,再判断问题发生在保存、更新、解析、节点可用还是启动联网阶段。官方文档说明,sing-box 配置使用 JSON 结构,常见顶层字段包括 dns、inbounds、outbounds 和 route,可查看sing-box 配置说明。
| 你看到的症状 | 所处阶段 | 先查什么 |
|---|---|---|
| Remote 条目都没有 | 保存 | 名称、URL 是否填写,客户端是否真的保存了配置 |
| 403、404、429 或 5xx | 更新 | 订阅权限、路径、访问频率和服务端返回状态 |
| JSON 解析失败 | 解析 | 下载内容是否为 JSON,而不是登录页、HTML 或错误文本 |
| 配置打开但节点列表为空 | 节点可用 | outbounds 是否包含实际节点,以及是否存在选择分组 |
| 有节点、能启动但没有网络 | 启动联网 | VPN、TUN、网络扩展、系统代理、DNS、路由和节点握手 |
- 复制订阅提供方后台显示的完整 URL,不要只复制网页地址或二维码页面地址。
- 优先使用明确标注为 sing-box JSON 的订阅。不能因为链接后缀是
.json,就断定返回内容一定是 sing-box 配置。 - 在浏览器或命令行中检查返回内容;如果看到登录页、HTML、403 页面或一段普通错误文字,就不能直接作为 Remote 配置。
- 订阅 URL 通常包含访问凭据,不要发到公开群组、工单截图或代码仓库;怀疑泄露时,应在提供方后台重新生成或撤销旧链接。
先分清客户端:官方图形客户端、第三方 GUI 与命令行
官方图形客户端页面列出了 Android、Apple 平台以及 Windows、Linux 的 Desktop 客户端;官方通用说明则把 Remote Profile 定义为“以 URL 作为更新来源的远程 sing-box 配置”。不同第三方 GUI 也可能使用 Profiles、订阅或配置管理等名称,但菜单位置应以该客户端文档为准,不能把第三方界面当成官方统一入口。可参考官方图形客户端列表、官方图形客户端通用说明。
| 平台或方式 | 客户端判断 | 订阅入口和授权重点 |
|---|---|---|
| Android | 官方 Android 图形客户端或第三方 GUI | 在 Profiles、配置或订阅页新增 Remote;启动 VPN 时允许系统创建 VPN |
| iOS | 官方 Apple 平台客户端或第三方客户端 | 新增远程配置后刷新;首次启动可能需要允许 VPN 配置或网络扩展,下载入口以当前 App Store 或 TestFlight 页面为准 |
| macOS | 官方 Apple 平台客户端、Desktop 或第三方 GUI | 新增 Remote 后更新;根据客户端实现,可能需要允许网络扩展或系统扩展 |
| Windows | 官方 sing-box for Desktop 或第三方 GUI | 官方 Desktop 支持管理本地或远程配置;使用 TUN 时可能需要管理员权限 |
| Linux | 官方 Desktop、命令行或第三方 GUI | GUI 按自身文档添加;命令行需要手动保存 JSON、检查配置并运行进程 |
官方 Desktop 页面明确写明支持 Windows 10 及以上和 Linux,并支持管理、运行本地或远程配置;因此 Windows、Linux 并非只有一种固定的 Profiles 界面。查看官方 Desktop 客户端说明。Android 与 Apple 平台的官方入口分别见Android 客户端说明和Apple 平台客户端说明。
按 5 步导入:名称、URL、更新、节点、启动
- 新建 Remote:打开客户端的 Profiles、配置或订阅管理页,选择新增远程配置。官方通用说明要求 Remote 使用 URL 作为更新来源,并支持自动更新;默认自动更新间隔写为 60 分钟。具体开关名称仍以当前客户端界面为准,参见Remote Profile 通用说明。
- 填写名称和 URL:名称只用于本地识别,例如“办公线路”;URL 粘贴完整 HTTPS 订阅地址。示例域名必须替换为你自己的真实订阅 URL,不要自行删除参数或令牌。
- 保存后手动更新:点击保存,再立即点击更新或刷新。看到更新时间、下载成功或更新完成,才说明客户端拿到了远程内容;保存成功本身不等于更新成功。更新失败时先保留旧配置,不要马上删除。
- 确认节点和分组:打开配置查看是否有实际出站节点,并检查是否出现 Selector 或 URLTest 等分组。官方通用说明指出,只有配置包含相应的分组出站时,客户端才会显示分组选择器;没有分组时,不要把“没有分组”误判为客户端故障。
- 选择节点并启动:选择节点或分组后启动服务。Android、iOS 和 macOS 可能出现 VPN 或网络扩展授权;Windows、Linux 使用 TUN 或系统级路由时,可能需要管理员或相应网络权限。看到服务状态运行中、连接或流量统计变化,再测试网页或应用。
新手第一次导入时,建议只验证订阅格式、更新和节点选择,不要同时改 DNS、TUN、规则、MTU 和系统代理。一次只改一个变量,才容易定位问题。
二维码和一键导入怎么用
如果订阅提供方给出二维码或“一键导入”按钮,优先确认它实际传递的是订阅 URL,而不是把配置内容直接交给未知网页处理。官方通用说明定义了远程配置导入 URL Scheme:sing-box://import-remote-profile?url=urlEncodedURL#urlEncodedName,但只有明确支持该 Scheme 的客户端才能处理,不能假设所有第三方 GUI 都支持。
- 二维码方式:打开客户端的新增配置或导入入口,选择扫码,扫描订阅方提供的二维码。
- 一键导入方式:在设备浏览器中点击导入按钮,确认系统将链接交给已安装并支持该 Scheme 的 sing-box 客户端。
- 确认导入结果:客户端应出现 Remote 条目;随后仍要手动更新、检查节点和启动服务。
- 如果扫码后无反应、跳到网页或提示不支持:退回手动方式,在新增 Remote 页面粘贴完整 URL。
二维码和一键导入只是减少复制步骤,不能绕过格式检查,也不能证明订阅一定有效。相关 Scheme 和 Remote 行为以官方图形客户端通用说明为准。
Linux 命令行:下载、检查,再运行配置
命令行用户不能照搬 Android 或 Windows 的 Profiles 路径。下面示例使用 curl 下载,再使用 sing-box 检查和运行;示例 URL 必须替换为你自己的真实订阅地址,且命令行程序需要先安装并能在终端中执行。
- 下载远程配置:
curl -L -o config.json "https://example.com/your-subscription"。这里的https://example.com/your-subscription只是示例域名,必须替换。 - 先查看文件开头和结尾,确认不是 HTML、登录页或错误信息;不要把包含令牌的文件上传到公开服务。
- 检查配置:
sing-box check -c config.json。官方配置文档列出sing-box check用于配置检查;判定标准是命令结束时没有错误输出,并且文件结构能被当前程序读取,见官方配置说明。 - 运行配置:
sing-box run -c config.json。如果终端提示找不到命令,先确认 sing-box 已安装并在PATH中;如果配置包含 TUN、自动路由或系统级网络修改,按发行版要求使用sudo或授予等效网络权限。 - 停止运行:回到运行该进程的终端按
Ctrl+C。若要长期运行,再根据系统服务管理器配置,不要先把后台服务问题和订阅解析问题混在一起。
官方 TUN 文档提醒,非特权模式下地址和 MTU 不会自动配置;因此 Linux 上即使命令检查通过,也不代表 TUN 已经接管系统流量。先看日志和网卡状态,再判断是否需要调整权限或 TUN 参数,参考官方 TUN 配置说明。
按错误类型排查:403、解析失败、节点为空和启动无网
403、404、429 或 5xx
先访问订阅 URL,记录实际返回状态。403 通常指向权限或令牌问题,404 指向路径不存在,429 可能与请求频率有关,5xx 表示服务端返回错误;这些状态应先检查订阅地址和提供方状态,不要通过修改节点字段解决。若订阅需要认证,检查当前客户端是否提供对应认证字段;不要直接把凭据写入公开配置。
下载成功但 JSON 解析失败
查看下载内容是否为 JSON。如果是 HTML、登录页或错误文本,说明 URL 返回的不是配置;如果是 JSON,再用 sing-box check -c config.json 检查字段。出现未知字段或弃用字段时,先核对客户端与配置生成方的兼容性,不要凭感觉删除字段。
配置加载成功但节点列表为空
检查 outbounds 是否存在实际节点。如果只有 direct、block 等基础出站,或者没有 Selector、URLTest 等分组,通常应回到订阅地址或转换结果检查,而不是继续反复刷新客户端。
有节点但启动后无网络
先确认 VPN、TUN、网络扩展或管理员权限已经授权,再查看日志中的 DNS、路由、TLS、握手和超时信息。随后只做单变量测试:先切换另一个节点,再切换规则或全局模式,最后才检查 DNS、MTU 和本机防火墙。若只有单个应用无法连接,检查规则是否把该应用分到了直连或阻断路径。
自动更新没有按时发生
先手动刷新确认 URL 有效,再检查自动更新开关、间隔、系统后台限制和客户端是否正在运行。官方 GitHub Issue #3409 记录了 Android 15、sing-box for Android 图形客户端 1.12.8 环境下远程配置更新延迟的报告;这只是该 Issue 的特定环境描述,不能推断所有版本都存在同一问题。排查时记录客户端版本、系统版本、配置创建时间和最后更新时间,参见Issue #3409:Remote profile updates in SFA works not reliably。
只有 Clash 或其他通用订阅时怎么办
不要默认认为其他客户端格式可以直接导入 sing-box。优先向订阅提供方索取明确标注为 sing-box JSON 的远程配置;如果只有通用订阅,再选择能够说明数据处理方式、并且由你信任的转换方式。
- 转换前保留原始订阅,不要把包含令牌的链接提交到不明转换站。
- 转换后先下载并检查 JSON,再导入客户端。
- 确认结果包含实际
outbounds和可用路由,而不是只有基础直连或阻断出站。 - 如果转换结果解析失败、节点为空或字段与当前客户端不兼容,停止使用该结果并要求提供方修正。
- 无法核实某个转换服务的安全性、处理方式或长期可用性时,本文不作推荐。
判断订阅是否能用于 sing-box,关键不是名称、二维码或文件扩展名,而是客户端能否下载并解析与当前版本兼容的 sing-box JSON。
常见问题
sing-box 可以直接导入 Clash 订阅吗?
不能默认认为可以。应优先使用明确生成 sing-box JSON 的订阅;只有经过可信转换并确认结果能被当前客户端解析时,才考虑转换后的配置。
Remote 保存成功但没有节点,怎么办?
先手动更新并查看返回内容,确认它确实是 JSON,并检查 outbounds 是否包含实际节点。如果只有 direct 或 block 等基础出站,应回到订阅地址或转换结果排查。
导入订阅后一定要开启 TUN 吗?
不一定。TUN 是系统级流量接管方式,是否需要取决于客户端、系统和使用场景。启动前先完成 VPN、网络扩展或管理员权限授权,并确认服务状态正在运行。
自动更新间隔设置多久合适?
先使用客户端默认值并手动验证一次。官方通用客户端说明写明默认自动更新间隔为 60 分钟,但不同客户端的实际选项可能不同;更新失败时应保留旧配置并查看日志。
订阅链接泄露后应该怎么处理?
把它当作凭据处理:停止公开分享,回到订阅提供方后台重新生成或撤销旧链接,再用新链接创建 Remote。
二维码导入失败怎么办?
退回手动方式,在客户端新增 Remote 页面粘贴完整订阅 URL。二维码或一键导入只减少复制步骤,不能代替格式检查,也不代表配置已经启动联网。
参考资料
- Introduction - sing-box 配置说明
- General - sing-box 图形客户端通用说明
- Graphical Clients - sing-box 官方图形客户端列表
- sing-box for Android - Android 客户端说明
- sing-box for Apple platforms - Apple 平台客户端说明
- sing-box for Desktop - Windows 与 Linux 客户端说明
- Tun - sing-box TUN 配置说明
- Issue #3409:Remote profile updates in SFA works not reliably