sing-box 是新一代代理内核,用 Go 编写,目标是「一个内核支持所有协议」。它正在成为机场和客户端的主流选择。
严格来说 sing-box 是内核,不是客户端。它本身没有图形界面,需要通过配置文件运行,或者被其他客户端调用。
你可以把它理解成:
它的特点是协议支持最全:VLESS、Trojan、Shadowsocks、Hysteria2、TUIC、WireGuard、ShadowTLS 都支持。
| 对比项 | sing-box | Clash Meta | V2Ray |
|---|---|---|---|
| Hysteria2 | 原生支持 | 支持 | 不支持 |
| TUIC | 原生支持 | 部分支持 | 不支持 |
| 配置格式 | JSON | YAML | JSON |
| 资源占用 | 低 | 中 | 中 |
| 图形客户端 | 少但够用 | 丰富 | 丰富 |
sing-box 的配置是 JSON,比 Clash 的 YAML 更啰嗦,但也更严格——写错了会直接报错,不会静默忽略。
一个最小可用的 sing-box 配置包含五段:
{
"log": { "level": "info" },
"dns": { "servers": [...] },
"inbounds": [...],
"outbounds": [...],
"route": { "rules": [...] }
}
客户端场景下,inbounds 通常配一个 mixed 端口(同时支持 HTTP 和 SOCKS):
"inbounds": [{
"type": "mixed",
"listen": "127.0.0.1",
"listen_port": 2080
}]
outbounds 里第一个通常是 selector 类型,用来切换节点:
"outbounds": [
{ "type": "selector", "tag": "proxy",
"outbounds": ["node-hk", "node-jp", "direct"] },
{ "type": "vless", "tag": "node-hk", ... },
{ "type": "direct", "tag": "direct" }
]
Windows:用 NekoBox 或 sing-box 官方 CLI。NekoBox 内置 sing-box 内核,有图形界面,配置方法见 NekoBox 安卓配置教程(桌面版逻辑相同)。
macOS:可以用 sing-box 官方 CLI + 自己写配置,或者用图形客户端如 SFM、Stash(Stash 用的不是 sing-box 内核但功能类似)。
Android:NekoBox、SFA(sing-box for Android)官方客户端。
iOS:sing-box 官方客户端(App Store 有售),或 Shadowrocket(支持导入 sing-box 配置)。
路由器 / 服务器:直接跑 sing-box 二进制,配置写在 config.json。
机场一般提供 sing-box 格式的订阅链接,通常在链接后加 &flag=singbox 或类似参数。
拿到订阅后,客户端会自动转换成 sing-box 配置。
注意:sing-box 的配置格式在 1.8 → 1.10 → 1.11 之间有较大变化(比如 outbounds 里 dial 字段重组)。订阅链接通常会根据客户端版本返回对应格式,如果报错先检查版本。
启动报错「unknown field」
配置里有 sing-box 不认识的字段。可能是版本不匹配(旧配置用在新版本上),或者字段名拼写错误。sing-box 对配置严格,多余字段会直接报错。
能连上但 DNS 解析失败
dns 段配置有问题。建议用 route.default_domain_resolver 指定默认 DNS,或者直接用机场提供的配置不要自己改。
和 Clash 配置能互转吗
不能直接互转,语法完全不同。但订阅链接可以同时提供两种格式,客户端各取所需。
为什么机场越来越多用 sing-box
因为它是唯一一个内核同时支持 VLESS Reality 和 Hysteria2 的方案,服务端部署一套就能覆盖所有主流协议。