sing-box 是什么:JSON 配置客户端入门
sing-box 是一个开源的通用代理平台,用一份 JSON 配置描述入站、出站、路由与 DNS。入门只需读懂五个顶层字段、理解 tag 如何把路由与出站连起来,并在每次修改后先做配置检查再启动,就能看懂机场下发的配置并做小幅调整。
一句话认识 sing-box
sing-box 是一个开源的通用代理平台,支持 VLESS、Trojan、Shadowsocks 以及基于 QUIC 的多种协议。它的全部行为由一份 JSON 配置决定:入站负责接收本机流量,出站负责连接节点或直连,路由决定流量去哪个出站,DNS 部分决定域名如何解析。入门只需要读懂这几个顶层字段,理解 tag 如何把它们串起来,并养成“改完先检查、再启动”的习惯。
本文讲概念与入门,不涉及任何机场品牌。Mac 上 sing-box 官方客户端与 Clash 系客户端的取舍,见 macOS 机场客户端怎么选;桌面端其他话题见 桌面端客户端专题页。
sing-box 的几种使用形态
- 官方图形客户端:面向 Android、iPhone、iPad、Mac 等平台,以“配置文件”为管理单位,可添加远程配置地址并定时更新,用法接近订阅。
- 命令行程序:在 Windows、macOS、Linux 上直接运行,适合愿意自己维护配置文件的用户。
- 作为其他客户端的内核:部分第三方图形客户端可以切换到 sing-box 内核,例如 v2rayN。
不论哪种形态,背后读取的都是同一套 JSON 配置结构。机场如果在用户中心提供 sing-box 格式的订阅,返回的就是这样一份完整配置。
顶层结构:五个字段看懂一份配置
| 顶层字段 | 作用 | 入门时需要关注的内容 |
|---|---|---|
| log | 日志设置 | 日志级别,排错时调高 |
| dns | 域名解析 | 使用哪些 DNS 服务器、哪些域名用哪个服务器 |
| inbounds | 入站:流量从哪里进来 | 本地混合端口或 TUN |
| outbounds | 出站:流量往哪里去 | 节点、直连、节点选择组 |
| route | 路由:按什么规则分配 | 规则列表与兜底出站 |
另外还有一个可选的扩展字段,用于缓存、控制面板接口等附加功能,入门阶段可以先不管。
一份最小配置的骨架
下面是一份仅用于说明结构的骨架,其中大写字段均为占位,不能直接使用。机场下发的配置会更完整,但骨架是一样的。
{
"log": { "level": "info" },
"inbounds": [
{ "type": "mixed", "tag": "mixed-in", "listen": "127.0.0.1", "listen_port": 2080 }
],
"outbounds": [
{ "type": "selector", "tag": "proxy", "outbounds": ["node-a", "direct"] },
{
"type": "vless",
"tag": "node-a",
"server": "HOST",
"server_port": 443,
"uuid": "UUID",
"tls": {
"enabled": true,
"server_name": "SERVERNAME",
"reality": { "enabled": true, "public_key": "PUBLICKEY", "short_id": "SHORTID" }
}
},
{ "type": "direct", "tag": "direct" }
],
"route": {
"rules": [ { "ip_is_private": true, "outbound": "direct" } ],
"final": "proxy"
}
}
按流量的走向来读
- 浏览器把请求发给本机的混合端口,也就是名为 mixed-in 的入站;
- 路由开始逐条匹配规则:目标是内网地址的,交给名为 direct 的出站;
- 其余流量没有命中任何规则,落到 final 指定的 proxy;
- proxy 是一个选择组,当前选中的是 node-a;
- node-a 是一个 VLESS 出站,带 REALITY 安全层,最终连接到节点服务器。
整份配置的关键在于 tag。路由规则引用的是出站的 tag,选择组列出的也是 tag,任何一处拼写不一致,配置都无法加载。
入站与出站里的几个常用类型
入站:混合端口还是 TUN
骨架中的 mixed 类型入站,会在本机开放一个同时接受 HTTP 与 SOCKS5 的端口,配合系统代理或在软件中手动填写使用,影响范围小。另一种常用入站是 tun 类型,它创建虚拟网卡在网络层接管流量,覆盖面更广,但需要管理员权限或系统网络扩展授权。两者可以同时存在于一份配置中,按需启用。二者在桌面端的差异,可参考 系统代理与 TUN 模式的区别。
出站:节点、直连与组
出站中最常见的有三种角色:具体协议的节点出站,例如 vless、trojan、shadowsocks;直连出站 direct;以及把多个出站组织起来的组。组又分两类,一类是手动选择,由用户在界面中切换;另一类是按测速结果自动选择,适合节点较多、不想手动挑选的场景。机场下发的配置通常已经把这些组织好,读懂后再决定是否调整。
谁适合学 sing-box
如果你只用一台电脑、机场提供的 Clash 订阅已经够用,不必为了学习而切换。适合投入时间的是这几类人:同时使用多种平台、希望各端配置一致的人;需要精细控制 DNS 与路由的人;已经在手机上使用 sing-box 官方客户端、希望电脑端保持同一体系的人。
和 Clash YAML 的思路对照
- Clash 的“节点”在 sing-box 中是具体协议类型的出站;
- Clash 的“策略组”在 sing-box 中是选择类或自动测速类的出站;
- Clash 的“规则”在 sing-box 中是路由规则,并且 DNS 规则单独列在 dns 字段里;
- Clash 的端口设置在 sing-box 中是一个个入站。
理解这层对应关系后,从 Clash 系客户端迁移过来会顺利很多。订阅格式之间的差异见 订阅格式有哪些。
新手最常遇到的四类错误
- JSON 语法错误:末尾多一个逗号、少一个引号、括号不配对,都会导致整份配置无法读取。JSON 不支持注释,不要在配置里写说明文字。
- tag 引用不一致:规则或选择组引用了不存在的 tag。
- 字段随版本调整:sing-box 在不同版本间会弃用或改名部分字段,网上的旧教程配置可能无法在新版本中直接使用,应以官方文档的迁移说明为准。
- 只改了一半:只在出站里新增节点,却忘了把它加进选择组,界面上就看不到它。
改配置的安全流程
在命令行环境中,sing-box 提供了检查与格式化命令,建议每次修改都走一遍:
sing-box check -c config.json
sing-box format -w -c config.json
sing-box run -c config.json
检查命令会指出出错的位置,格式化命令会统一缩进、方便阅读,确认无误后再运行。使用图形客户端时,同样建议先备份原配置,再做小步修改。
下一步该学什么
读懂结构之后,最常见的进阶需求是自定义路由规则与 DNS 规则,例如让某些域名直连、为不同地区的服务指定不同出站。这部分属于分流内容,见 sing-box 路由规则入门 与 规则分流与故障排查。
配置中的节点地址、UUID、公钥都属于你的个人凭证,求助时不要整份贴出。使用代理工具请遵守所在地法律法规与平台服务条款。
常见问题
sing-box 和 Clash 系客户端有什么不同?
两者都是规则型代理内核,但配置格式不同:Clash 系使用 YAML,把节点、策略组和规则放在一起;sing-box 使用 JSON,把入站、出站、路由和 DNS 分成独立部分,并用 tag 相互引用。sing-box 结构更清晰,但对字段拼写和格式要求更严格。
Windows 上有 sing-box 官方图形客户端吗?
sing-box 官方图形客户端主要面向 Android 与 Apple 平台。Windows 上可以使用命令行版本,或者使用支持 sing-box 内核的第三方图形客户端,例如可切换内核的 v2rayN。
修改 sing-box 配置后启动失败,怎么定位问题?
先用 sing-box 自带的配置检查命令验证文件,它会指出出错的位置;常见原因是多了逗号、引号不配对、字段名拼错,或者使用了当前版本已调整的旧字段。修改前备份原文件,便于回退。
来源与更新
品牌字段来自本站品牌数据文件(整理自 2026-09-04 品牌清单,Vendor Data,官网待核实);测速截图为 2026-10-18 复核后发布的单次 Measured Data;AI 与流媒体均为 Not Tested。发布 2026-10-18,最近更新 2026-10-18。本页不承诺任何平台的收录、排名或引用。