← 返回 次元云-门户站 - 新版入口 首页

sing-box 设置怎么做?从配置导入到 TUN 启动排查

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

简答:sing-box 设置的关键是先确认配置格式,再按平台导入本地 JSON 或远程配置,最后选择节点并启动系统代理或 TUN。Clash YAML 不能直接当作 sing-box JSON 使用,配置异常时先执行 check,再按错误阶段排查。

定义:sing-box 是使用 JSON 配置文件运行的网络连接内核,图形客户端负责导入配置、启动服务、管理节点和调用各平台的系统代理或 TUN 能力。

先判断手里的配置,再开始设置

本站为第三方使用指南站,下面只讲通用的 sing-box 设置方法。最容易出错的一步不是点击“启动”,而是把不兼容的链接或文件导入了错误位置。sing-box 官方配置结构使用 JSON,顶层通常包含 dns、inbounds、outbounds 和 route 等字段,具体结构可参考 sing-box 配置介绍。

手里的内容常见特征正确处理方式
本地 sing-box JSON文件后缀通常为 .json,能看到 outbounds、route 等字段在对应客户端添加本地配置,或放入命令行配置目录后执行检查
远程 sing-box 配置一个以 http 或 https 开头的配置地址在客户端选择远程配置,粘贴 URL,并设置名称和更新周期
Clash YAML常见字段有 proxies、proxy-groups、rules,缩进依赖 YAML不能直接改后缀当作 sing-box JSON;需要使用提供方的 sing-box 格式,或先转换后检查
单节点分享链接通常带有协议前缀或一段编码文本不能直接作为完整配置启动,需要由客户端或配置工具生成包含入站、出站和路由的 JSON
Base64 订阅打开后是一长段编码文本,解码后可能包含多个节点先确认服务提供的目标格式,再导入对应客户端;不要把编码文本直接保存为 JSON

最快判断方法:用文本编辑器打开文件。如果第一层是大括号并且能看到 outbounds,它更像 sing-box 配置;如果是大量缩进、短横线列表和 proxy-groups,则更像 YAML。判断不确定时,先不要覆盖原文件,复制一份再测试。

按设备选择客户端和权限方式

官方图形客户端页面将平台分为 Android、Apple 平台、Windows 和 Linux:Android 使用 sing-box for Android;iOS、macOS 和 Apple tvOS 使用 sing-box for Apple platforms;Windows 和 Linux 使用 sing-box for Desktop。平台对应关系可查看 官方图形客户端列表。

设备推荐入口设置重点
Windowssing-box for Desktop导入本地或远程配置后,按需开启系统代理或 TUN;TUN 服务模式通常需要管理员权限
macOSsing-box for Apple platforms使用 TUN 时按系统提示在“隐私与安全性”中放行相关扩展;独立版与应用商店版本的配置继承关系可能不同
Linuxsing-box for Desktop 或命令行程序TUN、自动路由和自动重定向通常涉及网络权限;systemd 运行时应确认专用用户能读取配置和写入工作目录
Androidsing-box for Android开启 TUN 时由 Android VPN 服务接管流量,系统会显示 VPN 权限确认;也可按应用选择代理或直连
iPhonesing-box for Apple platforms通过系统 Network Extension 建立 TUN,首次启动需要允许 VPN 配置;界面名称以当前客户端为准

官方桌面客户端支持管理本地或远程 sing-box 配置,并提供 TUN 等平台功能,详见 sing-box for Desktop。Apple 平台客户端支持管理本地或远程配置,iOS 和 macOS 的要求与下载方式见 sing-box for Apple platforms。

如果设备没有对应的图形客户端,可以使用命令行运行方式。iOS 不适合照搬 Windows 或 Linux 的二进制运行步骤,应优先使用 Apple 平台客户端及系统 VPN 权限。

导入本地 JSON 或远程配置的操作步骤

  1. 备份原始内容。将本地 JSON 复制一份,远程 URL 单独保存到密码管理器或安全笔记中。订阅链接通常包含访问凭据,不要发到公开群组,也不要粘贴到不明在线转换页面。
  2. 打开客户端的配置或 Profile 页面。选择“添加本地配置”或“添加远程配置”。不同客户端版本的按钮名称可能不同,但核心对象都是一个 sing-box profile。
  3. 导入本地文件。选择原始 JSON 文件,不要先用格式化工具删除字段。导入后先执行配置检查,再启动。
  4. 添加远程 URL。粘贴完整地址,设置一个容易识别的名称。如果客户端提供自动更新周期,先使用默认值;修改本地内容前确认远程更新是否会覆盖修改。
  5. 选择配置并更新。远程配置需要先手动更新一次,确认下载成功、内容非空且能被解析。更新失败时先检查 URL 是否过期、网络是否可达以及服务端返回的内容是否仍是 JSON。
  6. 选择节点或策略组。如果配置包含 selector 或 urltest,在客户端的 Groups 页面选择节点或自动测速组。没有策略组时,检查 route.final 指向的出站标签。
  7. 启动代理。先尝试系统代理,确认浏览器或目标应用能够连接后,再开启 TUN。TUN 会接管更多系统流量,排错时不建议一上来同时修改 DNS、路由和 MTU。

官方通用客户端文档将配置分为 Local、iCloud 和 Remote Profile,远程 profile 以 URL 为更新来源,并支持自动更新;相关说明见 sing-box 图形客户端通用说明。因此,远程配置更新后本地手工修改可能被覆盖,建议把长期修改放回配置源,而不是只改客户端缓存。

最小 JSON 配置应该看懂哪些部分

下面是用于理解结构的最小示例。它不是可直接连接的完整节点配置,因为 server、端口、认证信息和协议字段必须替换成真实且匹配的出站参数。示例把入站、出站、DNS、路由和默认出站放在同一个文件中,便于定位字段关系。

{
  "$schema": "https://sing-box.sagernet.org/schema.json",
  "log": {
    "level": "info",
    "timestamp": true
  },
  "dns": {
    "servers": [
      {
        "type": "local",
        "tag": "local"
      }
    ]
  },
  "inbounds": [
    {
      "type": "mixed",
      "tag": "mixed-in",
      "listen": "127.0.0.1",
      "listen_port": 7890
    }
  ],
  "outbounds": [
    {
      "type": "direct",
      "tag": "direct"
    },
    {
      "type": "selector",
      "tag": "proxy",
      "outbounds": [
        "direct"
      ],
      "default": "direct"
    }
  ],
  "route": {
    "final": "proxy",
    "auto_detect_interface": true
  }
}

官方 TUN 文档说明,TUN 只支持 Linux、Windows 和 macOS 的命令行或桌面场景;Android 和 Apple 图形客户端使用各自的平台网络能力。Linux 下 auto_redirect 需要配合 auto_route,Windows 的 strict_route 还会影响多网卡 DNS 行为,具体字段和限制以 官方 TUN 文档为准。

命令行检查、格式化与启动

命令行排错要按顺序进行:先解析,后启动,最后观察连接。把配置文件命名为 <版本号>.json 或其他不会覆盖原文件的名称,并在配置目录中执行命令。

sing-box check -c config.json
sing-box format -w -c config.json
sing-box run -c config.json

check 用来检查配置能否被解析;format 用来统一 JSON 格式;run 才会真正启动服务。官方配置文档明确列出了这三个操作,见 sing-box 配置介绍。格式化前应先复制备份,因为 -w 会写回文件。

如果出现“找不到命令”,先确认二进制所在目录已经加入 PATH,或使用完整路径执行。Linux 使用 systemd 时,应检查服务文件中的 User、WorkingDirectory、配置路径和日志目录权限;不要让专用用户读取不到配置,或无法写入缓存和日志。

如果出现端口占用,可先关闭旧进程,再检查监听者。Linux 可使用:

sudo ss -lntup | grep -E ':7890|:7897'

macOS 可使用:

lsof -nP -iTCP:7890 -sTCP:LISTEN
lsof -nP -iTCP:7897 -sTCP:LISTEN

Windows 可使用:

netstat -ano | findstr ":7890 :7897"

如果端口被其他程序占用,将 listen_port 改为未占用端口,并同步修改系统代理或客户端设置。不要只改配置文件而忘记改调用方。

按错误出现阶段排查连接问题

现象优先检查处理方法
配置导入失败文件类型、URL 返回内容、权限确认是 JSON 而不是 HTML、YAML 或空响应;重新保存原始文件后执行 check
JSON 解析失败逗号、引号、括号和字段类型用格式化工具定位行号;不要把注释、YAML 缩进或示例占位符直接混入 JSON
启动失败端口、权限、字段兼容性检查日志中的第一条错误;确认 TUN 权限、配置路径和已废弃字段,必要时对照 官方迁移说明
TUN 无法开启系统权限和客户端覆盖项Windows 以管理员方式运行并检查服务模式;macOS 在隐私与安全性中放行;Linux 检查专用用户、网络能力和路由权限;Android、iPhone 重新确认 VPN 权限
能启动但网页打不开默认出站、DNS、节点连通性先切换到明确可用的出站,查看连接日志是否命中该策略;再检查 DNS 查询是否成功,最后比较开启前后的出口 IP
部分应用不走代理系统代理覆盖范围系统代理通常只影响遵循系统设置的应用;需要接管更多应用时再启用 TUN,并逐项确认路由和排除规则
更新后配置失效版本迁移和远程覆盖保留升级前配置,查看迁移文档;远程 profile 重新更新后,确认服务端是否覆盖了本地修改

验证是否真的走了代理,不要只看客户端图标。更可靠的方法是查看连接日志中命中的策略或出站标签,再对比开启前后的出口 IP。若日志显示连接命中 direct,问题通常在路由规则、final 或策略组选择,而不是单纯的网络速度。

DNS、TUN 和远程订阅的三个高频坑

1. 客户端界面覆盖了 JSON 中的 DNS

一些图形客户端会提供 DNS 覆写、DNS 设置或平台 DNS 开关。开启后,界面值可能覆盖配置文件中的 dns 段,表现为“明明改了 JSON,但 DNS 不生效”。排查时先关闭客户端覆盖项或恢复默认,再重启服务并查看日志。

2. TUN 权限通过,不代表所有路由都正确

TUN 能启动只说明虚拟接口或系统 VPN 服务建立成功,不代表 route、dns 和 final 已经符合预期。先用一个明确的出站测试,再逐步加入分流规则。Linux 的 TUN 自动重定向与 Windows 的严格路由行为不能互相照搬。

3. 远程订阅不是普通文本备份

远程配置会按 URL 获取新内容,链接本身可能包含凭据。修改前先保存一份脱敏备份;如果使用在线转换服务,避免提交完整订阅链接。转换后的字段还要重新执行 check,因为“能下载”不等于“能启动”。

需要比较 Clash YAML 与 sing-box JSON 的差异时,可参考站内的 Clash 设置教程;遇到 DNS、fake-ip 或 TUN 劫持问题,可继续查看 Mihomo DNS 配置与排查。

常见问题

sing-box 可以直接导入 Clash YAML 吗?

通常不能直接导入。Clash YAML 与 sing-box JSON 的字段和结构不同,不能只修改文件后缀。应获取 sing-box 格式配置,或使用可信转换方式生成 JSON,然后执行 sing-box check。

sing-box 设置应该先开系统代理还是 TUN?

建议先开系统代理验证配置、节点和 DNS,再开启 TUN。系统代理排错范围较小;TUN 会接管更多流量,适合需要代理不支持手动设置系统代理的应用。

为什么改了 JSON 里的 DNS 但没有生效?

先检查客户端是否启用了 DNS 覆写、DNS 设置或平台 DNS 开关。客户端界面设置可能覆盖文件中的 dns 段,关闭覆盖后重新加载配置并查看日志。

sing-box 启动时报端口被占用怎么办?

先用系统命令查找监听 7890 或 7897 的进程,关闭重复运行的客户端,或把 listen_port 改成未占用端口,同时修改系统代理调用的端口。实际端口以设置页为准。

远程订阅更新后,本地修改为什么消失?

远程 profile 以 URL 作为更新来源,更新可能重新下载完整配置并覆盖客户端缓存。长期修改应放回配置源;临时调整前先备份原始配置,并重新执行 check。

TUN 已经启动但网页仍然打不开怎么办?

先确认连接日志是否命中预期节点或策略组,再检查 route.final、DNS 查询和节点连通性。若命中 direct,优先排查路由;若 DNS 失败,再处理 DNS;不要同时修改多个变量。

相关阅读

参考资料

  1. sing-box 配置介绍
  2. sing-box 官方图形客户端列表
  3. sing-box for Desktop
  4. sing-box for Apple platforms
  5. sing-box 图形客户端通用说明
  6. sing-box TUN 配置文档
  7. sing-box 迁移说明