sing-box 上手:全平台免费,协议支持最全的那一个
sing-box 在 Windows、macOS、iOS、Android 上的安装与配置。为什么它是 iOS 上唯一免费又好用的选择,以及它的配置文件和 Clash 有什么不同。
sing-box 的定位和 Clash 不太一样:它是一个通用代理平台,什么协议都能跑,全平台都有官方客户端,而且全部免费。
为什么值得用它
iOS 上它是唯一免费的完整方案
这是最实际的理由。iPhone 上:
| 客户端 | 价格 |
|---|---|
| Shadowrocket | 约 $2.99 |
| Stash | 更贵 |
| Loon | 中等 |
| sing-box | 免费 |
功能上 sing-box 不输,协议支持甚至更全。代价是界面偏工程化,配置没那么直观。
新协议支持最快
Hysteria2、TUIC、VLESS+Reality、AnyTLS 这些新协议,sing-box 通常是最早支持、支持得最完整的。
如果你的节点用的是很新的协议,Clash 系可能还没跟上,sing-box 大概率能用。
全平台一致
Windows、macOS、Linux、iOS、Android 都有官方客户端,配置文件通用。一份配置全设备用,这点很省心。
安装
| 平台 | 从哪装 |
|---|---|
| iOS | App Store 搜 sing-box(需要非中国区 Apple ID) |
| Android | Google Play,或官方 GitHub Releases 的 APK |
| Windows / macOS / Linux | 官方 GitHub Releases |
桌面端有两个选择:
- sing-box 命令行版:官方核心,需要自己写配置
- 图形客户端:社区做的 GUI 封装
新手建议用图形客户端,或者干脆用 Clash Verge Rev(它也支持大部分协议)。
导入订阅
移动端(iOS / Android)
- 打开 sing-box
- 底部 Profiles(配置)
- 右上角 「+」
- Type 选 Remote
- Name:随便填
- URL:粘贴订阅链接
- 保存,等它拉取
- 点一下这个配置让它变成选中状态
第 8 步别忘了,导入不等于启用。
- 回到首页,打开顶部开关
- 首次会请求添加 VPN 配置,允许
桌面端
图形客户端的流程类似。命令行版需要把配置写进 config.json,然后:
sing-box run -c config.json
配置文件长什么样
sing-box 用 JSON,不是 YAML。一份最小配置:
{
"log": { "level": "info" },
"dns": {
"servers": [
{ "tag": "google", "address": "https://8.8.8.8/dns-query" },
{ "tag": "local", "address": "223.5.5.5", "detour": "direct" }
]
},
"inbounds": [
{
"type": "mixed",
"listen": "127.0.0.1",
"listen_port": 7890
}
],
"outbounds": [
{
"type": "hysteria2",
"tag": "proxy",
"server": "example.com",
"server_port": 443,
"password": "your-password",
"tls": { "enabled": true, "server_name": "example.com" }
},
{ "type": "direct", "tag": "direct" }
],
"route": {
"rules": [
{ "rule_set": "geoip-cn", "outbound": "direct" },
{ "rule_set": "geosite-cn", "outbound": "direct" }
],
"final": "proxy"
}
}
结构上和 Clash 的对应关系:
| Clash | sing-box | 作用 |
|---|---|---|
proxies | outbounds | 节点定义 |
proxy-groups | outbounds(selector 类型) | 策略组 |
rules | route.rules | 分流规则 |
mixed-port | inbounds | 本地监听 |
MATCH 兜底 | route.final | 兜底出口 |
日常用订阅的话不用碰这些。想深入的话,Clash 那边的概念是通的,看Mihomo 配置文件怎么写能帮你理解。
Hysteria2 值得单独说
sing-box 对 Hysteria2 的支持最好,而 Hysteria2 在丢包严重的网络环境下表现明显好过 TCP 系协议。
原因是它基于 QUIC(UDP),自带拥塞控制和前向纠错,丢包时不会像 TCP 那样直接卡死。
什么时候它有优势:
- 你的网络丢包率高(很多家宽晚高峰会)
- 移动网络(4G/5G 下丢包比宽带多)
- 跨境线路质量一般
什么时候它不行:
- 你的网络对 UDP 有限制(部分校园网、公司网络直接封 UDP)
- 某些时段 UDP 被针对性干扰
协议之间的完整对比看SS / VMess / Trojan / Hysteria2 该选哪个。
常见问题
提示配置解析失败
JSON 格式错误。最常见的是:
- 多了或少了逗号(最后一个元素后面不能有逗号)
- 引号是中文引号
- 括号没配对
拿去任何 JSON 校验工具过一遍就知道错在哪。
订阅导入后是空的
- 订阅格式不对(给了 Clash 格式)
- 订阅链接失效
- 你当前没有网络出口拉不到
详细排查:导入订阅后没有节点。
iOS 上连着连着就断
和小火箭一样的 iOS 通病:
- 关「按需连接」
- 关 iCloud 私密转发
- 关低电量模式
详见小火箭 Shadowrocket 导入订阅里的 iOS 坑那一节,问题和解法都一样。
想要图形化的规则编辑
sing-box 官方客户端在这块比较克制。如果你需要频繁改规则、看连接列表、按进程分流,Clash Verge Rev 的界面更趁手。
我的实际用法:iPhone 上用 sing-box(免费且够用),电脑上用 Clash Verge Rev(界面舒服)。两边导入同一家机场的不同格式订阅,互不影响。
接着看
几个常被问到的问题
sing-box 和 Clash 有什么区别?
sing-box 是一个通用代理平台,协议支持最全(Hysteria2、TUIC、VLESS+Reality、AnyTLS 等新协议第一时间跟进),配置用 JSON。Clash 系用 YAML,规则生态更成熟,图形界面更友好。功能上有大量重叠,选哪个主要看你的节点用什么协议、以及你更习惯哪种界面。
iOS 上 sing-box 真的免费吗?
是,官方 iOS 客户端在 App Store 上免费(需要非中国区 Apple ID)。这是 iOS 上唯一免费且功能完整的主流选择,Shadowrocket 和 Stash 都要付费。
sing-box 能直接用 Clash 的订阅吗?
不能直接用 Clash 的 YAML 格式,但大多数机场会同时提供 sing-box 格式的订阅地址。如果只有 Clash 格式,用订阅转换服务转一下即可。新版 sing-box 客户端也支持导入部分其它格式。
为什么 Hysteria2 节点只有 sing-box 支持得好?
因为 Hysteria2 是 sing-box 生态里优先支持的协议之一。Clash 系(Mihomo 内核)现在也支持了,但某些新特性 sing-box 跟进更快。如果你的节点用的是很新的协议,sing-box 的兼容性通常最好。