← 返回 tankejiasu.shop 本地视觉备份 首页

sing-box配置导入失败?先分清 JSON、订阅和节点链接

更新于 2026-10-24 · tankejiasu.shop

简答:sing-box配置导入失败,通常是把订阅网址、单个节点链接或 Clash YAML 当成了完整 JSON。先判断格式,再用 sing-box check 校验,随后用系统代理验证连接,最后按需启用 TUN。

定义:sing-box配置是用 JSON 描述日志、DNS、入站、出站和路由的配置文件,远程订阅与单个节点链接并不等同于完整配置。

先看这张表:你拿到的内容能不能直接导入

导入失败多半不是“节点一定不可用”,而是输入类型和导入入口不匹配。先看内容特征,再决定是保存为配置文件、添加远程配置,还是使用节点导入功能。本站是第三方使用指南站,不是 sing-box 项目的官方站点;字段和命令以sing-box 官方配置参考为准。

内容类型常见特征正确处理方式
本地 JSON 配置通常以 { 开头,包含 inbounds、outbounds 或 route保存为 config.json,先执行 check,再导入或运行
远程配置或订阅是 HTTP 或 HTTPS 地址,客户端需要联网下载内容在客户端的远程配置入口添加地址,不要把网址粘贴进 JSON 文件
节点分享链接只描述一个节点或一个出站,通常没有完整入站和路由使用客户端的节点导入功能,或按协议生成对应出站配置
Clash YAML 或其他格式结构和字段不是 sing-box 官方 JSON 配置不能只改扩展名,转换后必须重新检查完整配置

最快判断:如果内容不是合法 JSON,或者只有单个节点字段而没有完整配置结构,就不要把它直接当作可运行的 sing-box 配置。

最小 config.json:先验证程序、端口和 JSON 结构

下面的配置只使用本地 mixed 入站和 direct 出站,适合先验证 sing-box 能否读取配置、监听端口并启动。它不会自动提供远程节点,也不会改变出站线路。

{
  "$schema": "https://sing-box.sagernet.org/schema.json",
  "log": {
    "level": "info",
    "timestamp": true
  },
  "inbounds": [
    {
      "type": "mixed",
      "tag": "mixed-in",
      "listen": "127.0.0.1",
      "listen_port": 2080
    }
  ],
  "outbounds": [
    {
      "type": "direct",
      "tag": "direct"
    }
  ],
  "route": {
    "final": "direct"
  }
}

log控制日志;inbounds定义本机如何接收流量;outbounds定义流量从哪里出去;route.final指定没有命中其他规则时使用的出站。mixed入站同时提供 SOCKS 和 HTTP 代理能力,字段说明见官方 mixed 入站文档。

重要:这个模板的 direct 出站只用于验证配置和本地代理入口。若要接入真实服务,需要把它替换为服务方提供的协议出站,并逐项核对服务器地址、端口、UUID 或密码、TLS、传输层和认证参数。

{
  "type": "trojan",
  "tag": "proxy-out",
  "server": "替换为服务方服务器地址",
  "server_port": 1080,
  "password": "替换为服务方密码",
  "tls": {
    "enabled": true,
    "server_name": "替换为服务方要求的域名"
  }
}

上面的出站骨架只是字段位置示例,不能凭空运行;服务器地址、端口、密码、TLS 和传输参数必须与服务端配置一致。不要把示例中的 1080 当作通用服务端口。

按平台导入:先系统代理,后 TUN

官方图形客户端页面目前将 Android、Apple 平台、Windows 和 Linux 分开列出;Windows 与 Linux 使用 sing-box for Desktop,Android 使用 sing-box for Android,iOS、macOS 和 Apple tvOS 使用 sing-box for Apple platforms。平台和客户端入口应以官方图形客户端列表及sing-box for Desktop 官方说明为准。

平台建议顺序权限与差异
Windows添加本地或远程配置,先开启系统代理;不遵循系统代理的程序再考虑 TUNTUN 可能需要服务模式或管理员授权;只允许 sing-box 或一个代理客户端占用目标端口
macOS先导入配置并验证系统代理,再启用 TUN首次打开下载的应用,可到“系统设置→隐私与安全性”查看放行选项;命令行解除隔离前应确认文件来源,示例为 xattr -dr com.apple.quarantine /Applications/应用名.app
Linux先用命令行 check 和日志确认,再选择系统代理或 TUNTUN、路由和网卡操作可能需要权限;systemd 服务应使用专用用户,并确认该用户能读取配置文件和相关密钥
Android导入本地或远程配置,先使用系统 VPN 模式Android 同一时间只允许一个 VPN 服务生效;无网络时先断开其他 VPN 类应用
iOS使用 Apple 平台客户端的配置导入和系统 VPN 授权不能照搬 Windows 或 Linux 的端口、网卡和服务命令,系统权限由客户端申请

系统代理更容易验证,适合浏览器和办公软件等遵循系统代理的应用;TUN 能覆盖更多不遵循系统代理的流量,但会增加权限、路由和 DNS 变量。官方 TUN 入站文档说明,TUN 入站支持 Linux、Windows 和 macOS;移动端通常通过图形客户端提供系统 VPN 能力。排查时建议先确认系统代理有效,再开启 TUN。

四步排查顺序:check → 系统代理 → 日志 → TUN

结论框:先验证配置能否读取,再验证本地代理端口,然后看连接日志是否命中正确出站,最后才处理 TUN、DNS、IPv6 和局域网绕过。

  1. 第一步,校验配置。Windows 执行 sing-box.exe check -c config.json;macOS 在配置目录执行 ./sing-box check -c config.json;Linux 执行 sing-box check -c config.json。需要格式化时,先备份原始文件,再执行对应的 format -w -c config.json。命令用途以官方配置参考为准。
  2. 第二步,检查端口。Windows 执行 netstat -ano | findstr :2080;macOS 执行 lsof -nP -iTCP:2080 -sTCP:LISTEN;Linux 执行 sudo ss -lntup | grep :2080。如果出现 address already in use,关闭占用进程或修改 listen_port。若同时运行 Clash 类客户端,其监听端口也可能产生冲突。
  3. 第三步,使用系统代理验证。让浏览器或测试应用指向 127.0.0.1:2080,观察连接日志是否命中预期的出站标签;只看到客户端“运行中”并不能证明流量已经经过代理。
  4. 第四步,再启用 TUN。启用后检查虚拟网卡、默认路由、DNS 请求和局域网地址。若 TUN 后无网络,先关闭 TUN 回到系统代理,确认是权限、路由还是 DNS 变化导致。
报错或现象常见原因第一步操作
unknown field字段不属于当前内核或拼写、层级错误对照官方当前配置文档,删除或迁移该字段后重新 check
deprecated旧字段仍被识别,但已进入迁移阶段查看官方 Migration 页面,按新字段替换,不要只忽略提示
address already in use本地入站端口已被占用按平台执行端口检查命令,关闭冲突程序或修改监听端口
context deadline exceeded连接或 DNS 请求在限定时间内未完成查看日志中的 DNS、出站和路由命中,再分别测试域名解析与服务器连接
启动成功但没有网络系统代理未生效、出站参数错误、TUN 路由或权限异常先关闭 TUN,确认系统代理和日志命中,再逐项恢复设置

版本迁移:先确认内核,再处理弃用字段

截至 2026-10-24,官方容器标签将 v1.14.3 标为 latest;GitHub Releases 页面同时列出 1.15.0-alpha.5 等预发布条目。稳定标签、预发布标签和客户端内置内核不能混为一谈,客户端能否使用某个字段,应以它实际携带的内核和对应文档为准。版本信息可查看官方版本标签页面与官方 Releases。

遇到 unknown field、deprecated 或同一文件在不同设备表现不一致时,按以下顺序处理:

  1. 在客户端关于页面、启动日志或命令行输出中确认实际内核版本,不要只看客户端名称。
  2. 在官方 Migration 页面搜索报错字段,确认它是已删除、已合并还是仅被标记弃用。
  3. 检查 TUN 配置是否仍使用旧字段。例如官方文档说明,inet4_address、inet6_address 已合并到 address;旧的 stack 在 1.15.0 被标记弃用,官方迁移建议移除它以使用 sing-tun 自有 TCP/IP 栈。
  4. 每次只迁移一组字段,保存备份并重新执行 check,避免同时修改 DNS、路由和出站导致问题无法定位。

详细迁移规则见官方 Migration 文档;TUN 字段及其弃用说明见官方 TUN 入站文档。不要把其他内核的字段名直接复制到 sing-box 配置。

TUN、DNS、IPv6 与局域网:只改有证据的部分

当前官方 TUN 文档确实列出 dns_mode 和 dns_address,二者属于 TUN 入站字段;其中 dns_mode 可为 disabled、native 或 hijack。启用 hijack 时,DNS 流量的处理会结合 TUN 和路由行为;配置地址后,官方文档说明可通过 hijack-dns 路由动作处理发往这些地址的 DNS 流量。不要把这些字段写成顶层 DNS 配置,也不要照搬其他内核的字段结构。字段依据见官方 TUN 文档和官方路由动作文档。

Clash YAML 或通用订阅转换后的安全检查

Clash YAML、通用订阅和 sing-box JSON 的结构不同,不能靠修改文件名直接导入。转换前先保留原始文件或原始订阅地址,转换后至少检查四项:规则集是否丢失、DNS 段是否被替换、出站 tag 与路由引用是否一致、订阅地址中的 token 是否被上传到不必要的第三方服务。

如果转换后的配置仍然出现字段错误,优先回到原始格式和服务方提供的适配方式,不要继续叠加第三方字段。

导入前自查清单

常见问题

sing-box配置文件应该是什么格式?

官方配置使用 JSON,常见顶层结构包括 log、dns、inbounds、outbounds、route 和 experimental。先保存原始文件,再执行 sing-box check -c config.json。

Clash 配置能直接导入 sing-box 吗?

不能只修改扩展名直接导入。Clash YAML 与 sing-box JSON 的字段和结构不同,转换后要检查规则集、DNS、出站 tag 引用,并重新执行 check。

远程订阅和 sing-box配置文件有什么区别?

远程订阅是客户端需要下载的地址,配置文件是实际 JSON 内容,节点链接通常只描述单个出站。三者不能混用同一个导入入口。

sing-box配置导入后为什么没有网络?

先检查配置校验和监听端口,再关闭 TUN 使用系统代理,观察日志是否命中正确出站。如果域名失败而 IP 正常,再检查 DNS;如果只有局域网失败,检查路由排除。

TUN 模式一定比系统代理好吗?

不一定。系统代理更容易验证,TUN 能覆盖更多不遵循系统代理的流量,但需要额外处理权限、路由和 DNS。排查时建议先验证系统代理,再启用 TUN。

为什么同一个 sing-box配置在不同设备表现不同?

检查客户端实际内核版本、平台权限、TUN 支持、文件路径和字段迁移状态。客户端名称相同,也可能携带不同内核或提供不同平台功能。

相关阅读

参考资料

  1. sing-box 官方配置参考与 check、format、merge 命令
  2. sing-box 官方 mixed 入站文档
  3. sing-box 官方 TUN 入站文档
  4. sing-box 官方路由动作文档
  5. sing-box 官方图形客户端列表
  6. sing-box for Desktop 官方说明
  7. sing-box 官方 Migration 迁移说明
  8. sing-box 官方 GitHub Releases
  9. sing-box 官方容器版本标签页面