sing-box配置文件怎么导入?先分清 JSON、订阅 URL 和节点链接
简答:sing-box 配置导入先看内容类型:本地 `.json` 文件选 Local,远程订阅地址选 Remote,`vless://`、`trojan://` 等单节点链接不要直接改名成 JSON。导入后还要选中 Profile、启动服务、授权 VPN 或 TUN,并确认实际产生连接。本文按官方 sing-box 图形客户端的通用逻辑说明,菜单名称以当前版本为准。
定义:sing-box 配置导入,是把本地 JSON 配置或远程配置 URL 添加为 Profile,再启动 sing-box 服务并验证节点、路由和 DNS 是否正常工作的过程。
先用三步判断导入方式
第一步:识别输入内容。文件是完整 sing-box JSON 时走 Local;拿到以 https:// 开头的远程配置地址时走 Remote;拿到 vless://、trojan://、ss:// 等分享链接时,先确认当前客户端是否提供单节点或分享链接导入入口。
第二步:选择对应 Profile 类型。sing-box 官方图形客户端将配置抽象为 Local、iCloud 和 Remote Profile。Local 表示本地配置,Remote 以 URL 作为更新来源,iCloud 主要用于 iOS 和 macOS 的云端配置。官方 Profile 说明
第三步:导入后验证。确认 Profile 出现在列表中并被选中,再启动服务;移动端还要确认 VPN 权限,桌面端则要确认系统代理或 TUN 状态。只看到文件名或 URL 被保存,不代表配置已经启动。
| 手里的内容 | 应选方式 | 成功标志 | 失败时先查什么 |
|---|---|---|---|
| 完整 `.json` 文件 | Local | Profile 能打开且配置可解析 | 文件是否为完整 JSON,是否混入注释或错误逗号 |
| 远程订阅或配置 URL | Remote | 客户端能更新并显示配置内容 | URL 是否完整,返回内容是否为配置而非错误页面 |
vless:// 等单节点链接 | 分享链接或添加节点入口 | 节点或出站出现在客户端列表 | 当前客户端是否支持该链接格式 |
| Clash YAML、压缩包或网页 | 不能直接按 JSON 导入 | 需先取得兼容的 sing-box 配置 | 确认文件格式和生成来源 |
导入前检查本地 JSON
sing-box 官方配置格式使用 JSON。官方文档列出的配置结构包含 log、dns、inbounds、outbounds、route 等字段,但这些是配置结构中的字段示例,不代表每个文件都必须全部存在;实际内容取决于用途、客户端和核心版本。官方配置文件说明
- 用文本编辑器打开文件,确认首尾是一个完整 JSON 对象。
- 检查引号、括号和逗号,不要混入全角标点、网页说明文字或多余注释。
- 不要把单个节点对象、节点列表或 Clash YAML 直接改名为
.json。 - 配置内如果包含订阅令牌、密码、私钥或证书,不要上传到不明的在线转换站。
- 如果已经安装 sing-box 命令行核心,可在配置文件目录执行:
sing-box check
官方当前配置文档给出的检查命令是 sing-box check;格式化命令为 sing-box format -w -c config.json -D config_directory。命令参数会随核心版本变化,若本机提示参数不存在,应以当前核心自带的 sing-box help 和官方文档为准。官方 Check 与 Format 说明
Android:导入 Local 本地 JSON
这里限定为官方 sing-box for Android 客户端。官方资料确认该客户端可以管理和运行本地或远程 sing-box 配置,并通过 Android 的 VpnService 实现 TUN;具体菜单文字仍可能随客户端版本调整。官方 Android 客户端说明
- 将 JSON 文件保存到手机的“下载”或其他可访问目录。
- 打开 sing-box for Android,进入 Profiles 或配置文件页面。
- 选择添加配置、导入文件或 Local 入口。
- 在系统文件选择器中选中 JSON 文件并确认。
- 回到 Profile 列表,点击该配置,使其成为当前配置。
- 进入 Dashboard 或主界面,启动服务。
- 首次使用时,在 Android 弹出的 VPN 权限窗口中确认允许。
- 如果配置中包含多个出站或分组,再在客户端提供的分组界面选择目标出站。
成功标准:Profile 能被打开,服务状态显示运行,VPN 权限已授权,日志没有持续的配置解析或拨号错误,并且实际应用产生了连接。
Windows:导入 Local 或 Remote 配置
官方 sing-box for Desktop 支持管理和运行本地或远程配置文件,当前官方页面列出的 Windows 要求为 Windows 10 或更高版本,并支持 x64、x86 和 arm64。官方 Desktop 客户端说明
- 打开 sing-box for Desktop,进入配置文件或 Profiles 页面。
- 本地文件选择 Local 或导入文件;远程地址选择 Remote 或通过 URL 添加。
- 本地导入时,在文件选择器中选完整 JSON;远程导入时,填写配置名称和完整 URL。
- 保存后选中该 Profile,并执行更新或重新加载。
- 回到 Dashboard,启动服务。
- 如果配置包含 TUN,按客户端提示授予系统权限;如果只使用本地 HTTP 或 SOCKS 入站,则还需在系统或应用中正确填写代理端口。
桌面客户端的配置文件可以被识别,不等于所有流量已经接管。启动后应查看 Dashboard 状态、日志和连接计数,再用实际应用测试。若没有请求记录,先检查当前 Profile、TUN 或系统代理是否真的启用。
iOS 和 macOS:按 Apple Profile 逻辑导入
官方 sing-box for Apple platforms 支持管理和运行本地或远程配置文件,覆盖 iOS、macOS 和 Apple tvOS。官方页面列出的要求为 iOS 15.0+、macOS 13.0+ 和 Apple tvOS 17.0+;本文只说明导入思路,不把其他客户端的菜单名称当作 Apple 客户端的固定界面。官方 Apple 客户端说明
- 本地 JSON:先通过“文件”或系统分享功能将配置保存到设备可访问的位置。
- 打开 sing-box for Apple platforms,进入 Profile 或配置管理页面。
- 选择本地文件导入,或在客户端支持时选择 Remote 并粘贴配置 URL。
- 保存后选中对应 Profile,执行更新或重新载入。
- 启动服务,按系统提示允许 Network Extension 或 VPN 配置。
- 回到客户端状态页,确认服务运行,再用实际应用测试。
iOS 和 macOS 的文件选择、VPN 授权及 Profile 管理入口可能随版本变化。官方通用文档明确了 Local、iCloud 和 Remote 的概念,但没有把每个平台的所有按钮名称固定为同一套;找不到完全一致的菜单时,应以当前客户端界面为准。官方通用客户端说明
远程订阅导入后显示错误:按返回内容排查
Remote Profile 保存的是配置 URL,客户端需要从该地址取得配置内容。导入后出现解析错误时,先不要反复切换 DNS 或 TUN,按下面顺序缩小范围。
- 重新复制完整 URL,检查是否漏掉参数、大小写或末尾字符。
- 确认地址实际返回的是 sing-box 配置,而不是登录页、HTML 错误页或需要额外认证的网页。
- 如果客户端支持配置内容查看器,打开查看返回内容;若只显示网页文字,先向订阅提供方核实地址和权限。
- 将返回内容保存为本地文件,再执行
sing-box check,区分“远程地址问题”和“配置内容问题”。 - 如果检查提示未知字段,再核对生成配置的版本要求、当前客户端内置核心版本和具体报错字段。
官方文档说明 Remote Profile 使用 URL 作为更新来源,并要求图形客户端实现自动更新和 HTTP Basic Authorization;这说明“能保存 URL”和“能成功读取可用配置”是两个不同环节。官方 Remote Profile 说明
导入后无法联网:最小复测路径
| 现象 | 先确认 | 下一步 |
|---|---|---|
| JSON 解析失败 | 括号、引号、逗号和文件内容 | 用 sing-box check 检查,不要先修改路由 |
| 未知字段 | 具体字段名与核心版本 | 核对配置来源和当前客户端核心是否匹配 |
| Profile 存在但没有节点 | 是否导入了完整配置 | 检查 outbounds 和默认出站;单节点链接要走客户端支持的节点入口 |
| 服务未启动 | 当前 Profile、权限和日志 | 先停止其他 VPN、代理或网络过滤工具,再重启服务 |
| 服务运行但无流量 | TUN、系统代理或本地入站 | 确认应用流量是否经过 sing-box,再查看 Dashboard 连接记录 |
| 部分应用无法访问 | DNS、route 规则和出站选择 | 先用明确的默认出站测试,再逐项恢复规则 |
- 确认当前 Profile 被选中。
- 确认服务状态为运行。
- 确认 VPN、TUN 或系统代理权限已经生效。
- 确认出站列表中存在目标节点,并且默认出站指向可用节点。
- 查看日志或 Dashboard 是否产生连接记录。
- 最后再排查 DNS、route 规则和分流配置。
如果新配置导致问题,先停止服务,切回之前能工作的 Profile,再删除或停用新配置。保留原始 JSON、远程 URL 和报错信息,便于区分文件、订阅、客户端核心和网络四类问题。
常见问题
sing-box 可以直接导入 Clash YAML 吗?
不能把 Clash YAML 当作 sing-box JSON 直接导入。两者的配置格式和字段结构不同;应取得兼容的 sing-box 配置,再用当前核心的 sing-box check 检查。无法确认转换结果时,不要把含有订阅令牌或私钥的配置上传到不明网站。
sing-box 导入 JSON 后为什么没有节点?
先确认文件不是只有一个节点对象,也不是单独的分享链接。再检查配置是否包含有效的 outbounds,当前 Profile 是否已选中,以及默认出站是否指向节点。若只有 vless:// 等链接,应寻找客户端的分享链接或添加节点入口。
远程订阅添加成功但更新后解析错误怎么办?
先检查 URL 返回内容是否为配置,而不是登录页或 HTML 错误页;再把返回内容保存为本地文件,执行 sing-box check。如果出现未知字段,记录具体字段名,并向配置提供方核对生成版本和兼容核心。
配置能启动但手机无法联网怎么办?
确认 Android 或 Apple 的 VPN、Network Extension 或相关系统授权已经允许,并暂时关闭其他 VPN、代理和网络过滤工具。随后检查当前出站、DNS、route 和 TUN 状态,先用最简单的单一出站进行复测。
官方客户端和第三方 sing-box 客户端的导入方法一样吗?
不一定。官方资料将 Android、Apple platforms 和 Desktop 分为不同客户端,菜单和权限行为也可能不同。本文只按官方客户端的通用 Profile 概念说明;第三方客户端应以其当前版本文档和界面为准。官方图形客户端列表
常见问题
sing-box 可以直接导入 Clash YAML 吗?
不能把 Clash YAML 当作 sing-box JSON 直接导入。应先取得兼容的 sing-box 配置,再用当前核心的 sing-box check 检查。
sing-box 导入 JSON 后为什么没有节点?
确认导入的是完整配置而不是单节点对象或分享链接,再检查 outbounds、默认出站和当前 Profile。
远程订阅添加成功但更新后解析错误怎么办?
检查 URL 是否返回配置内容而不是登录页或 HTML 错误页;保存返回内容后执行 sing-box check,并核对具体字段与核心版本。
配置能启动但手机无法联网怎么办?
确认 VPN 或 Network Extension 权限已允许,关闭其他流量接管工具,再检查出站、DNS、route 和 TUN。
Windows、Android、iOS 和 macOS 的导入菜单完全一样吗?
不一样。官方客户端的 Profile 概念相近,但文件选择、权限和启动入口会按平台及版本变化,应以当前应用界面为准。