sing-box 怎么添加订阅配置?先看格式,再按平台导入(附报错速查)
简答:sing-box 添加订阅配置,先确认链接返回的是 sing-box JSON,而不是 Clash YAML 或 Base64。然后在客户端新建 Remote 配置,填写 URL,手动更新,确认节点或分组出现后,再启动并授权 VPN、TUN 或网络扩展。
定义:sing-box 订阅配置,是客户端通过 URL 获取并更新的远程 sing-box JSON 配置文件,通常包含 DNS、入站、出站和路由等运行所需结构。
先看平台速查卡:入口、更新和启动顺序
如果你已经拿到服务提供方给出的链接,最快流程是:确认格式 → 新建 Remote → 粘贴 URL → 保存并更新 → 检查节点或 Groups → 启动并授权。sing-box 官方图形客户端将 Android、Apple 平台、Windows 和 Linux 分别列出;这些客户端都支持管理本地或远程配置,但实际按钮名称可能随平台和客户端版本变化。参考:sing-box 图形客户端列表、图形客户端通用功能。
| 平台 | 操作入口 | 导入后检查 | 启动授权 |
|---|---|---|---|
| Android | Profiles 或配置页面 → 新建 Remote → 填写 Name 和 URL | 手动更新,查看更新时间和 Groups | Dashboard 启动,允许 Android VPN |
| iOS/iPadOS | 配置或 Profiles → 新增 Remote → 填写名称和 URL | 更新配置,确认内容已拉取 | 允许 VPN 配置或网络扩展 |
| macOS | 配置页面 → 新增 Remote → 保存并更新 | 查看状态、日志和可选 Groups | 允许 Network Extension 或系统扩展 |
| Windows | 使用官方列出的 sing-box for Desktop,添加 Remote 配置 | 确认远程配置已更新 | 按提示允许 TUN 或系统代理权限 |
| Linux | 图形客户端添加 Remote,或下载为本地 config.json | 运行 check 检查配置 | 按 TUN、路由和监听端口需要授予权限 |
先试这一步:不要直接把链接粘贴到配置编辑器里当作 JSON。优先使用服务提供方明确标注的 sing-box 专用链接,再在客户端的 Remote 配置中填写 URL。
第一步:确认订阅链接返回的格式
| 链接返回内容 | 能否直接作为 sing-box Remote | 应采取的操作 |
|---|---|---|
| 完整 sing-box JSON | 可以尝试 | 在客户端新建 Remote,粘贴完整 URL,保存后更新 |
| Clash YAML | 不能直接当作 sing-box JSON | 向服务提供方获取 sing-box 专用配置,或使用其明确提供的转换入口 |
| Base64、节点列表或单个分享链接 | 不能视为完整配置 | 确认是否存在专用的 sing-box JSON 订阅 |
| 403、404、登录页或 HTML | 不能判断为有效配置 | 检查链接权限、登录状态、订阅有效期和复制是否完整 |
sing-box 官方配置文档明确使用 JSON,并列出 dns、inbounds、outbounds、route 等顶层结构。因此,返回 YAML、Base64 或网页 HTML 的链接,不能直接按完整 sing-box JSON 配置处理。参考:sing-box 配置文件说明。
- 在服务提供方的用户中心找到订阅、客户端配置或远程配置入口,入口名称以页面实际标注和官方说明为准。
- 优先复制明确写有 sing-box、SFA、SFI、SFM 或 Remote 配置含义的链接。
- 浏览器打开链接只能作为初步判断,因为客户端请求头、认证方式或 URL 参数可能影响返回内容;最终以 sing-box 客户端更新结果和日志为准。
- 不要把完整订阅 URL 发到公开群聊、论坛、截图或公共转换工具中。订阅链接应按凭据处理。
Android:Profiles 中新建 Remote 配置
官方 Android 客户端支持管理和运行本地或远程 sing-box 配置,并提供基于 Android VPNService 的 TUN 相关功能。参考:sing-box for Android。
- 打开 sing-box for Android,进入 Profiles 或配置列表。
- 点击新增配置,选择 Remote 类型。
- 在 Name 中填写便于识别的名称,在 URL 中粘贴完整订阅链接。
- 保存或点击 Create,等待首次拉取完成。
- 回到配置列表,手动执行更新;确认出现更新时间、成功提示或可查看的配置内容。
- 进入 Dashboard,选择配置中的节点组或出站组。只有远程 JSON 中包含
Selector或URLTest等组时,客户端才有对应的分组选择功能。 - 点击启动,首次使用 VPN 或 TUN 时允许 Android 创建 VPN 连接。
如果配置已更新但没有 Groups,先不要反复重装客户端。查看远程配置是否确实包含可选择的出站组,并检查更新日志是否出现解析或权限错误。图形客户端通用文档说明,Remote Profile 以 URL 作为更新来源,并支持自动更新;默认自动更新间隔为 60 分钟。参考:sing-box 图形客户端通用功能。
iOS、macOS、Windows 和 Linux:按客户端类型导入
iOS/iPadOS:在配置或 Profiles 页面新增 Remote,填写名称和 URL,保存后手动更新。首次启动时,按照系统提示允许 VPN 配置或网络扩展。官方 Apple 客户端支持管理和运行本地或远程 sing-box 配置,并通过 NetworkExtension 提供未使用系统级特权的 TUN 实现。参考:sing-box for Apple platforms、Apple 客户端功能。
macOS:使用官方列出的 Apple 平台客户端,在配置页面新增 Remote,粘贴 URL 后保存、更新并启动。如果系统弹出 Network Extension 或系统扩展授权提示,应在系统设置的隐私与安全性相关页面完成允许操作。若使用独立版客户端,下载入口以官方 Apple 客户端页面为准。
Windows:官方客户端列表当前列有 sing-box for Desktop,支持 Windows 10 及以上的 x64、x86 和 arm64 架构,并支持管理和运行远程配置。安装和下载入口以官方 Desktop 页面列出的 Releases 为准。导入时进入配置管理,新增 Remote,填写名称和 URL,保存后更新;启用 TUN 或系统级接管时,按 Windows 权限提示完成授权。参考:sing-box for Desktop。
Linux:官方 Desktop 页面列出 Linux x64、arm64 和 armv7l 支持。可以使用图形客户端添加 Remote;如果使用命令行版本,则先把远程 JSON 下载为本地 config.json,再检查和启动:
curl -L "订阅链接" -o config.json
sing-box check -c config.json
sing-box run -c config.jsoncurl 不是所有系统的默认工具;没有安装时,应使用发行版的软件包管理器安装。命令中的订阅链接、文件路径和权限按本机实际情况替换。启用 TUN、自动路由或监听特定端口时,还要按 Linux 的网络权限和客户端说明配置。
第二步:更新、选节点并确认确实联网
- 确认配置已拉取:查看 Remote Profile 的更新时间、更新结果或配置内容预览。没有更新时间时,先手动更新,不要直接启动。
- 确认节点或 Groups:如果 JSON 中包含
Selector或URLTest出站组,Dashboard 应出现相应的组选择入口;如果只有配置但没有 Groups,可能是配置本身没有提供选择组。 - 选择出站:在 Groups 中选择一个节点或自动测试组。不要只根据名称判断节点是否可用,继续查看连接日志。
- 启动服务:Android 和 iOS 通常需要 VPN 授权,macOS 可能需要 Network Extension 授权,Windows 和 Linux 在启用 TUN 时可能需要更高权限。
- 验证流量:查看连接日志中是否出现命中的策略或出站组,再通过对比出口 IP 判断流量是否经过选定配置。只看到“已启动”,不能单独证明所有应用都已按预期连接。
系统代理和 TUN 的覆盖范围不同。官方客户端工作方式文档指出,普通系统代理主要面向 HTTP 代理场景,部分非 HTTP 应用以及 UDP、ICMP 流量可能不会使用系统代理;需要更完整的流量接管时,应使用客户端支持的 TUN 或虚拟接口模式。参考:sing-box 客户端工作方式。
常见导入失败:按现象排查
| 现象 | 先检查什么 | 可执行处理 |
|---|---|---|
| 403 Forbidden | 链接权限、登录状态、订阅凭据 | 重新登录服务提供方用户中心并重新复制;确认 URL 没有被截断或替换。 |
| 404 Not Found | 链接路径、订阅是否失效 | 重新生成或复制服务方提供的链接,不要手工修改 URL 路径。 |
| 连接超时 | 当前网络、DNS、远程服务器响应 | 更换网络后再次更新,查看客户端日志;不要仅凭浏览器能打开就判断客户端一定能更新。 |
| JSON parse error | 返回内容是否为合法 JSON | 检查是否误用了 Clash YAML、Base64、HTML 登录页或错误响应;改用服务方明确提供的 sing-box JSON 链接。 |
| 字段不支持或 check 失败 | 日志中的具体字段名、客户端与配置的兼容性 | 在日志中记录报错字段,并运行 sing-box check -c config.json 定位;如果是远程配置字段被移除或不再支持,应让配置提供方更新 JSON。 |
| Groups 为空 | 远程配置是否包含 Selector 或 URLTest | 先确认更新成功,再查看 JSON 是否包含可选择的出站组;没有组时不能凭空在客户端生成节点列表。 |
| 启动成功但无网络 | VPN/TUN 权限、DNS、路由、节点连接 | 先看日志中的 DNS、路由和出站错误;可暂时用系统代理与 TUN 做对比,再逐项恢复设置。 |
sing-box 官方配置文档提供 sing-box check 检查命令;检查通过只代表配置结构和当前程序能完成检查,不等于远程节点一定可连接。参考:sing-box 配置文件说明。
订阅链接泄露后怎么处理
- 不要在公开截图、论坛、群聊或公共转换站中展示包含完整凭据的订阅 URL。
- 导入失败时,优先回到服务提供方用户中心重新复制 sing-box 专用链接,不要为了兼容多个客户端就把完整订阅交给未知转换服务。
- 如果链接已经公开,立即在服务提供方用户中心查找重新生成、重置、撤销或禁用旧订阅的选项,具体按钮名称以页面实际标注为准。
- 如果没有重置入口,应联系服务提供方处理;在旧链接失效前,不要继续把它公开传播。
本文为第三方使用指南,不代表 sing-box 或任何服务提供方的官方页面;客户端名称、平台支持和配置格式应以项目资料及实际应用界面为准。
常见问题
Clash 订阅链接可以直接添加到 sing-box 吗?
不能把返回的 Clash YAML 直接当作 sing-box JSON 配置使用。应优先获取服务提供方明确提供的 sing-box 专用远程配置;如果使用转换方案,先确认转换结果是合法 JSON,并注意完整订阅凭据不要泄露。
添加 Remote 后为什么没有节点或 Groups?
先手动更新并查看更新时间和错误日志,再确认 URL 返回的是完整 sing-box JSON,而不是 403、404、HTML、YAML 或 Base64。如果配置更新成功但没有 Groups,可能是远程配置没有提供 Selector 或 URLTest 出站组。
sing-box 显示启动成功,但应用仍然无法联网怎么办?
先确认系统授予了 VPN、TUN 或 Network Extension 权限,再查看连接日志中是否有命中的策略和出站错误。可以暂时对比系统代理与 TUN 模式,并检查 DNS、路由和所选节点。
JSON parse error 应该怎么处理?
先确认链接实际返回的内容不是网页登录页、错误页面、Clash YAML 或 Base64。桌面端可以把配置保存为 config.json 后运行 sing-box check -c config.json;如果仍报错,记录具体位置或字段并让配置提供方修正。
订阅链接泄露后应该怎么处理?
把完整订阅链接按凭据处理,立即回到服务提供方用户中心寻找重新生成、重置、撤销或禁用旧链接的选项。旧链接不要继续公开使用,具体操作入口以服务提供方页面为准。