Sing-box教程:跨平台内核与客户端的选择与配置思路
Sing-box教程很容易写成配置文件大全,机场牛换个写法:先讲它是什么、该不该用,再讲配置的思路。结论先放这:sing-box 不是“又一个 Clash”,它是一个通用代理平台(内核),官方客户端覆盖 iOS、安卓和 macOS,配置是 JSON 文件,门槛比 Clash 系客户端高一档。想先跑通的新手,建议先用现成的 Mihomo 系客户端;已经有 sing-box 格式订阅,或者就想自己掌控分流,再往这边走。
sing-box 是什么:内核、配置和客户端三层
很多人对 sing-box 的第一反应是“它是个软件”。更准确的说法是三层东西叠在一起:
| 层 | 是什么 | 例子 |
|---|---|---|
| 内核 | 真正转发流量的程序,开源,可以命令行运行,也可以被客户端内嵌 | sing-box 本体 |
| 配置 | 一份 JSON 文件,描述流量从哪进、往哪出、怎么分流、DNS 怎么解析 | config.json |
| 客户端 | 把内核和配置包装成界面的应用 | 官方客户端,以及第三方图形界面 |
它支持的协议覆盖面很广,常见的 Shadowsocks、VMess、VLESS、Trojan、Hysteria2、TUIC、WireGuard 都在,较新的版本还陆续加入了 ShadowTLS、AnyTLS 等,具体以你所用版本的官方文档为准。项目的源码和更新说明在 sing-box 官方仓库。
它既能当客户端,也能当服务端。机场牛这里只讲客户端侧,自建服务端的取舍,看 机场和自建节点。
官方 Sing-box客户端:SFI、SFA、SFM 分别在哪
官方为不同平台各做了一个客户端,名字用的是缩写,常被并称为 SFI SFA,再加上 macOS 的 SFM:
| 简称 | 平台 | 获取渠道 | 要点 |
|---|---|---|---|
| SFI | iPhone、iPad | 官方文档给出的渠道,通常是 App Store,是否可见取决于地区 | 借助系统的 VPN 机制工作,配置以 Profile 形式管理,iOS 上的整体选择见 iOS机场教程 |
| SFA | 安卓 | 以官方文档说明的渠道为准 | 注意安装包架构和 VPN 权限,见 安卓机场教程 |
| SFM | macOS | 以官方文档说明的渠道为准 | 首次启用会有系统权限确认,见 Mac客户端教程 |
Windows 和 Linux 上,据官方文档的说明,主要提供命令行版本,图形界面多由第三方项目提供。渠道会随项目调整,机场牛不写具体的上架情况,请以官方仓库和文档为准;下载只走官方渠道,不碰网盘、群文件和“修改版”。
配置文件长什么样:先看懂五个大块
一份配置通常是一个 JSON 对象,最顶层有这几块,下面是结构示意,不能直接运行:
{
"log": {},
"dns": {},
"inbounds": [],
"outbounds": [],
"route": {}
}
| 字段 | 作用 | 你可以这样理解 |
|---|---|---|
| log | 日志级别与输出位置 | 排错时的黑匣子 |
| dns | DNS 服务器和解析规则 | 域名先问谁 |
| inbounds | 入口,流量从哪进来,比如虚拟网卡、本地代理端口 | 大门 |
| outbounds | 出口,包括各个节点、直连,以及选择器、自动测速这类分组 | 出口名单 |
| route | 路由规则,决定哪类流量走哪个出口 | 交通指挥 |
桌面端用命令行版本时,有两条命令值得记住,一条检查配置,一条运行:
sing-box check -c config.json
sing-box run -c config.json
先 check 再 run,是省时间的好习惯,报错信息通常会指出是哪个字段有问题。
有一个坑要提前说:字段的写法和结构随版本调整过,比如早期靠地理数据库做分流,后来改为规则集的方式,DNS 相关的写法也有变化。所以旧教程里的整份配置,放到新版本上可能报错或提示弃用,以你所用版本的官方文档为准。也不要整份复制来路不明的配置,里面的出口信息、规则和 DNS 设置,你未必看得懂,出了问题更难查。
机场订阅怎么用在 sing-box 上
配置是 JSON,而多数机场给的是通用格式或 Clash 格式,所以“订阅怎么进来”是 sing-box 上手的第一道坎。常见的三条路:
| 路径 | 做法 | 取舍 |
|---|---|---|
| 机场直接提供 sing-box 格式订阅 | 在官方客户端里新建远程配置,填入链接 | 最省事,前提是机场确实提供,先问客服 |
| 订阅转换 | 把通用或 Clash 订阅转换成 sing-box 能读的配置 | 链接会经过转换工具,风险和做法见 订阅转换,转出来的结果也要自己核对 |
| 手写 outbounds | 从订阅里取节点参数,自己写进配置 | 最灵活,也最费劲,节点变动要手动改 |
官方客户端的远程配置通常可以设置自动更新,具体选项以界面为准,间隔怎么定见 订阅更新频率。订阅链接等同于账号凭证,处理泄露的办法见 机场订阅链接安全。
协议和内核版本也要对得上,节点用的协议内核不认,表现就是节点被跳过或连不通。各协议的设计思路和客户端支持,见 VLESS、Trojan、Hysteria2 的区别,较新的协议可以看术语页 AnyTLS是什么。
sing-box 和 Clash 系怎么选:别按名气,按订阅格式和需求
| 维度 | sing-box | Clash 系(Mihomo 内核) |
|---|---|---|
| 配置格式 | JSON | YAML |
| 订阅生态 | 多数订阅需要转换,或由机场专门提供 | 多数机场直接给对应订阅 |
| 客户端 | iOS、安卓、macOS 有官方客户端 | 桌面端主要靠社区的图形客户端 |
| 上手难度 | 偏技术,需要读配置 | 以图形界面为主 |
| 规则写法 | 路由规则加规则集 | 规则、规则集加策略组 |
决策路径:
- 想先用起来:从 Clash Verge下载 那一篇开始,或者看另一款客户端 Mihomo Party,把订阅、规则模式、系统代理走通;
- 手机上想用官方客户端:看上表中的 SFI 和 SFA,先确认订阅格式;
- 手里的订阅本来就是 sing-box 格式:直接用它,不必为了统一而转成 Clash;
- 想自己掌控 DNS 与分流:sing-box 的配置自由度高,但备好耐心,别指望一次配成。
这篇 Sing-box教程 的适用人群:谁适合直接上,谁先别碰
适合直接上的人:
- 能读懂 JSON,愿意对着官方文档查字段;
- 订阅格式匹配,或者愿意承担转换的麻烦;
- 需要多个平台用同一套内核和配置思路;
- 排错时会看日志,而不是只会重装。
先别碰的人:
- 刚接触机场,连节点、订阅、规则模式还分不清,请先看 机场节点是什么;
- 只想“点个导入就能用”,没有折腾的打算;
- 机场只给 Clash 格式,又不愿意转换。
这不是门槛歧视,是体力分配:把精力花在对的地方,比硬上难度高的工具更实在。
从 Clash 概念翻译到 sing-box:同一件事在两边怎么叫
如果你已经用过 Clash 系客户端,入门的捷径不是从头读文档,而是先做一张“翻译表”,把熟悉的概念对到 sing-box 里。下表只是帮你建立直觉,两边的设计并不一一对应,具体字段以所用版本的官方文档为准。
| 你在 Clash 系里熟悉的 | sing-box 里大致对应 | 说明 |
|---|---|---|
| 节点 | outbounds 里的一项,带具体的协议类型 | 每个节点就是一个出口 |
| 手动选择的策略组 | selector 类型的出口 | 把多个出口放进一组,由你手动切换 |
| 自动测试的策略组 | urltest 类型的出口 | 按定时测试的结果自动挑选,依据的是握手类指标 |
| 规则列表 | route 里的规则 | 通常自上而下匹配,先命中的先生效 |
| 规则集 | rule_set | 写法随版本变化较大,以所用版本为准 |
| 兜底的 MATCH 规则 | route 里的 final | 没命中任何规则的流量走哪个出口 |
| 本地代理端口 | inbounds 里的 mixed 之类入口 | 软件把流量送过来的地方 |
| TUN | inbounds 里的 tun 入口 | 虚拟网卡接管流量,需要相应权限 |
| DNS 设置 | dns 块,加上路由里与 DNS 相关的规则 | 写法随版本调整过,是最容易出错的部分 |
| 订阅 | 官方客户端里的远程配置 | 前提是订阅返回的是 sing-box 能解析的配置 |
用这张表要记住两点:它帮你找到对应的位置,不帮你搬运配置。Clash 的 YAML 和 sing-box 的 JSON,结构差别很大,把 Clash 配置逐行“翻译”成 JSON,很容易漏掉语义。稳妥的做法是先理解概念,再用官方文档的写法重新组织。想回头巩固 Clash 一侧的规则与策略组概念,看 分流规则;TUN 的基本概念,见术语页 TUN模式。
第一次跑 sing-box 之前的自查清单:十一条逐项勾
sing-box 的坑,多数出在“一上来就写太多”。下面这份清单的思路是:每一步都留退路,每一步都能验证。
- 程序来自官方仓库或官方文档指向的渠道,仓库名称核对过;
- 弄清了自己用的版本,查文档时对照同一版本,而不是搜到哪篇看哪篇;
- 确认了订阅的格式:能不能直接作为远程配置,还是需要转换;
- 先写一份最小配置:一个入口、一个出口、一条兜底路由,跑通了再加别的;
- 每次修改之后先用 check 命令校验,通过了再 run;
- 日志级别调到能看见报错信息,出问题先看日志,再动配置;
- 改配置之前把旧文件复制一份,文件名带上日期,随时能回退;
- 订阅链接、节点密码这类敏感信息,不写进公开仓库,也不贴在求助帖里,求助前先替换成占位符;
- 需要虚拟网卡的场景,已确认系统权限和客户端提示,并且知道怎么关掉;
- 没有同时开着另一个代理客户端,避免两边抢系统代理或虚拟网卡;
- 想放弃的时候,知道怎么还原:关闭系统代理、停止进程、撤销虚拟网卡。
sing-box 上手的五个常见误区:为什么不对,该怎么做
误区一:网上搜到的配置,整份复制就能用。
- 为什么不对:配置里装着出口信息、DNS 和路由,字段写法随版本不同而不同,来路不明的配置还可能把流量引向你看不懂的地方;
- 正确做法:先读懂配置的五个大块,再借别人的片段,每借一段就用 check 命令校验一次。
误区二:sing-box 比 Clash 系“更先进”,所以应该换。
- 为什么不对:两者是并行的体系,各有取舍。“先进”没有统一的标准,换工具的成本却是实打实的;
- 正确做法:按订阅格式和需求选。订阅本来就是 Clash 格式,就先用 Mihomo 系客户端,有了明确的理由再考虑迁移。
误区三:协议支持越多越好,所以必须追最新版本。
- 为什么不对:节点用不到的协议,内核再新也没有意义;新版本还可能调整字段写法,让旧配置报错或提示弃用;
- 正确做法:先看节点实际用的协议,核对所用版本是否支持,升级之前把配置备份好。协议之间的差别见 VLESS、Trojan、Hysteria2 的区别。
误区四:官方客户端在每个平台都有图形界面。
- 为什么不对:据官方文档的说明,官方客户端主要覆盖 iOS、安卓和 macOS,Windows 与 Linux 以命令行内核为主,图形界面多由第三方提供,情况也可能随项目更新而变;
- 正确做法:以官方仓库和文档为准。用第三方图形界面时,先核对仓库来源和最近的更新记录。
误区五:订阅转换只是点一下的小事,随便找个在线工具就行。
- 为什么不对:订阅链接等同于账号凭证,交给第三方转换,就是把凭证交了出去;转换的结果还可能漏掉部分节点,或者把策略组弄乱;
- 正确做法:先问机场有没有现成的 sing-box 格式订阅,实在要转换,先读 订阅转换 里的风险说明,转换后核对节点是否齐全、分流是否符合预期。
今天就能做的三件事
- 先确认你手里订阅的格式,再决定是走 sing-box 还是 Mihomo 系;
- 要试 sing-box,就先在一台设备上跑一份最小的配置,用 check 命令校验通过,再逐步加 DNS 和分流;
- 想对比不同机场的资料、再决定买哪家,去 机场推荐排行榜 和 机场对比 看。写这篇 Sing-box教程 的目的,是让你选工具之前心里有数,不是让每个人都去写 JSON。
软件功能、字段写法和上架情况会随版本变化,一切以项目官方文档为准。使用代理服务请遵守所在地法律法规,机场牛不提供法律意见。
Sing-box教程常见问题
sing-box 和 Clash 是什么关系?
两者没有从属关系,是并行的两套体系。Clash 系现在的主流内核是 Mihomo,配置是 YAML;sing-box 是另一个独立项目,配置是 JSON,自称通用代理平台。两边都支持常见协议,也都有 TUN 能力,差别主要在配置格式、订阅生态和客户端分布。
sing-box 能直接导入机场给的订阅吗?
看订阅格式。官方客户端的远程配置要求返回的是 sing-box 能解析的配置,机场只给通用格式或 Clash 格式时,一般需要转换或让机场提供对应格式。转换会让订阅链接经过第三方,最好先问机场有没有现成的 sing-box 格式订阅。
配置文件里的字段看不懂,网上的教程为什么在新版本里跑不起来?
项目更新较快,字段的写法和结构在不同版本之间调整过,旧教程里的配置在新版本上可能报错或提示弃用。排查办法是先用官方的检查命令校验,再对照你所用版本的官方文档修改,不要整份复制来路不明的配置运行。
Windows 上有官方的图形客户端吗?
据官方文档的说明,官方客户端主要覆盖 iOS、安卓和 macOS,Windows 与 Linux 上以命令行内核为主,图形界面多由第三方提供。具体情况可能随项目更新而变,请以官方仓库和文档为准,下载只走官方渠道。
新手应该直接学 sing-box 吗?
不建议直接上。先用 Mihomo 系的图形客户端把订阅导入、规则模式和系统代理跑通,理解节点、订阅、分流这些概念,再看 sing-box 的配置结构,学习曲线会平缓很多。已经拿到 sing-box 格式的订阅,或者需要官方移动端客户端时,再考虑它。