sing-box 是通用代理平台,不是 VPN 协议,也不是图形客户端。Project S 用一个 Go 程序和一份 JSON 组装入站、路由、出站与 DNS。截至 2026-10-10,稳定标签是 v1.14.3。本文只整理项目身份、许可证和该版本文档中的协议面,不重复站内架构文,也不对实现排名。
sing-box 是什么
一个可独立引用的定义句:sing-box 是 Project S 维护的通用代理平台(The universal proxy platform),用 JSON 配置描述流量从哪里进入、如何选择出口,以及用哪一种协议转发。
它回答的是「一个进程如何同时容纳多种入口和多种出口」。它不回答「某一条隧道是否隐蔽、是否更快、是否适合当前网络」。那些取决于具体协议、对端实现和路径,而不是项目名字。
和它经常被混在一起的几件事:
| 说法 | 实际情况 |
|---|---|
| 它是一种新 VPN 协议 | 不是。VPN 协议可以是它承载的一种端点或出站,项目本身是代理平台 |
| 装了官方 App 就等于理解了核心 | 图形客户端负责配置与系统接口;转发逻辑在 sing-box 核心 |
| 支持某种协议就具备该协议的全部性质 | 核心「会说话」和这条连接在具体网络里的表现是两件事 |
| 它自带节点或账号 | 官方仓库不提供节点列表,也不是接入服务 |
虚拟网卡如何接管系统流量,见 TUN 全局代理是什么。代理和 VPN 各改哪一层,见 HTTP 代理与 VPN 有何不同 与 SOCKS5 与 VPN 有何不同。
仓库、组织与维护者
下列事实来自 2026-10-10 读取的 GitHub 与 v1.14.3 文档,不是对治理结构的完整审计。
| 项目 | 可核对的记录 |
|---|---|
| 代码仓库 | SagerNet/sing-box,创建于 2022-06-30 |
| 仓库描述 | The universal proxy platform |
| 文档 | sing-box.sagernet.org |
| 默认分支 | testing,不是稳定标签 |
| 稳定发布 | v1.14.3,发布于 2026-10-09;说明文字为 “Fixes and improvements” |
| 实现语言 | v1.14.3 的 go.mod 声明 go 1.25.5 |
| 模块路径 | github.com/sagernet/sing-box |
版权行写着 Copyright (C) 2022 by nekohasekai。本次读取的贡献者列表中,nekohasekai 的提交计数为 2606,明显高于其余账号。计数会随新提交变化,不能当成职务头衔。
GitHub 组织 SagerNet 创建于 2021-04-26,显示名是 Project S,博客为 sagernet.org。组织比 sing-box 仓库更早。2021 年该组织还维护什么,本文没有找到独立的项目史说明。
v1.14.3 的图形客户端索引写明:这些客户端由 Project S 维护。文档中的支持渠道包括 GitHub Issues、Telegram 通知频道与用户群,以及 [email protected]。LICENSE 里的邮箱是 [email protected],与支持页邮箱不同。最早一次提交的说明本次没有取回,因此不能把仓库创建时间写成「首次提交日期」。
许可证怎么写
仓库 LICENSE 与文档首页使用同一段文字,要点有两层:
- 可以在自由软件基金会发布的 GNU GPL 第 3 版,或(可选)任何更新版本 下再分发。
- 另加一句:衍生作品未经事先同意,不得使用该应用的名称,也不得暗示与该应用有关联。
GitHub 对这个仓库给出的 SPDX 标识是 NOASSERTION,与「纯 GPL-3.0-only」或「纯 GPL-3.0-or-later」都不相同。名称条款是 GPL 文本之外的附加限制还是第 7 节允许的附加条款,需要许可律师判断。本文只记录原文,不给法律结论。
架构:一份 JSON 里的角色
v1.14.3 的配置引言把配置写成 JSON。顶层名字包括 log、dns、ntp、certificate、certificate_providers、http_clients、network_namespaces、endpoints、inbounds、outbounds、route、services、experimental。这些是文档中的配置分区,不是一份可以照抄的样例。
四个分区决定它为什么叫「平台」而不是「某协议的客户端」:
- Inbound:连接从哪里进来。可以是本机代理端口、TUN,或某一种服务端协议。
- Endpoint:文档的定义是「同时具有入站和出站行为的协议」。v1.14.3 写明该分区自 1.11.0 起存在。
- Outbound:连接往哪里走,包括直连、丢弃,以及选择器这类逻辑出口。
- Route 与 DNS:按规则选择出口;DNS 有自己的服务器和规则,不自动等于数据面的那条路由。
官方客户端手册把图形系统上的接管方式分成三类:系统代理、防火墙重定向、虚拟接口。系统代理本质上是 HTTP 代理,不覆盖不读取系统代理的程序,也不覆盖 UDP 与 ICMP。这是手册里的能力边界,不是操作步骤。
inbound、route、outbound 如何串成管线,以及 TUN 上为什么需要嗅探,已经写在 sing-box 架构与能力边界。本文不重复那篇的排障顺序。
v1.14.3 文档里的协议与入口
下表来自标签 v1.14.3 的文档索引,不是 2026-10-10 当天文档网站的全部条目。文档站跟随默认分支 testing。当天打开的在线页面还列出 MASQUE 端点,以及 Tailcat 入站和出站;这些名字出现在 testing 更新日志的 1.15.0-alpha 条目中,不在 v1.14.3 的端点与入站索引里。
端点(自 1.11.0):
| 类型名 | 文档中的名称 |
|---|---|
wireguard | WireGuard |
tailscale | Tailscale |
openconnect | OpenConnect 客户端 |
openvpn-client | OpenVPN 客户端 |
openvpn-server | OpenVPN 服务端 |
入站索引中的类型名:direct、mixed、socks、http、shadowsocks、vmess、trojan、naive、hysteria、shadowtls、tuic、hysteria2、vless、anytls、snell、tun、redirect、tproxy、cloudflared。
出站索引中的类型名:direct、bridge、block、socks、http、shadowsocks、vmess、trojan、wireguard、hysteria、vless、shadowtls、tuic、hysteria2、anytls、snell、tor、ssh、dns、selector、urltest、naive。
其中一部分是公开标准或已有规范的入口,一部分是各项目自定义的协议,一部分只是逻辑动作:
| 类别 | v1.14.3 文档中的例子 | 规范落在哪里 |
|---|---|---|
| 本地代理入口 | socks、http、mixed | SOCKS 见 RFC 1928;HTTP 代理常用 CONNECT,语义见 RFC 9110 |
| 系统入口 | tun、redirect、tproxy | 操作系统接口,不是 IETF 隧道协议 |
| 既有 VPN 协议端点 | wireguard、openvpn-client、openconnect | 各自的项目规范;WireGuard 不是 RFC |
| 逻辑出口 | direct、block、selector、urltest | sing-box 自己的配置模型 |
| 其他出站 | ssh、tor、dns | 分别对接 SSH、Tor 与 DNS 处理,不等同于把 sing-box 变成那些项目 |
wireguard 出站页在 v1.14.3 文档中标为自 1.11.0 起弃用,并写着将在 1.13.0 移除。同一标签的文档树里该页仍然存在,端点形式的 WireGuard 也仍在索引中。本文不能从这句话判断 1.14.3 二进制是否已经拒绝旧出站。安装前应以对应版本文档的迁移说明为准。
Shadowsocks、VMess、VLESS、Trojan、Hysteria2、TUIC、Naive 等名字只表示「文档列出了这个类型」。它们没有统一的 RFC。本文不解释外观、填充或识别相关的做法。Naive 作为独立项目的协议说明见 NaiveProxy 协议科普。
官方客户端
v1.14.3 客户端索引把图形程序和核心分开。索引同时写明:一些声称使用 sing-box 的第三方项目没有被列入。该页对第三方项目还有质量与广告方面的判断,本文没有核实那些项目,因此不转述评价。
| 文档名称 | 文档中的缩写 | 平台与来源仓库 |
|---|---|---|
| sing-box for Android | SFA | Android 5.0+;仓库 sing-box-for-android |
| sing-box for Apple platforms | SFI / SFM / SFT | iOS 15+、macOS 13+、Apple tvOS 17+;仓库 sing-box-for-apple |
| sing-box for Desktop | 该页未使用三位缩写 | Windows 10+ 与 Linux;仓库 sing-box-for-desktop |
命令行 sing-box | 无 | 与核心仓库一起发布 |
Apple 平台文档写明需要中国大陆以外的 Apple 账户。这是分发条件,不是技术协议的一部分。命令行核心不依赖这个账户要求。
文档里的典型角色
这些是手册对程序角色的描述,不是选型建议:
- 本机客户端:让应用通过系统代理、透明重定向或 TUN 进入核心,再由路由选择出站。
- 服务端:用某一种入站接受对应协议的连接。同一个二进制可以担任这一侧,差别在配置,不在另一份软件。
- 带逻辑出口的核心:
selector与urltest是出站类型,用来在多个出口之间切换或按文档定义的方式测试,而不是新的隧道协议。
它不包含账号、计费、节点运营或日志政策。那些在核心之外。
和相关项目差在哪
差别指的是项目边界,不是高下。
| 项目 | 官方自我描述的重心 | 与 sing-box 的边界 |
|---|---|---|
| sing-box | 通用代理平台 | 一份 JSON 覆盖入口、路由、出口和 DNS |
| strongSwan | IKE 与 IPsec | 密钥交换和 IPsec 安全关联,不是多协议代理核心 |
| WireGuard / OpenVPN | 各自的隧道协议 | sing-box 可以在文档列出的端点里承载它们,但协议规范不属于 sing-box。对照见 WireGuard 与 OpenVPN |
| Clash 系核心 | 以规则和 YAML 配置见长的代理核心 | 配置格式不同,不能把另一份配置当成 sing-box JSON |
| Xray | 另一套代理核心 | 同样使用 JSON 风格的入站、出站与路由,字段和协议重心并不通用 |
读版本时先核对的三件事
- 安装的是标签 v1.14.3,还是默认分支或某个 alpha。文档站不一定等于稳定标签。
- 某个协议名字出现在入站、出站还是端点。WireGuard 在 1.11.0 之后同时有弃用页和端点页。
- 图形界面是 Project S 的客户端,还是索引明确未收录的第三方程序。核心版本以客户端显示的为准。
本文只整理公开的项目资料。在中国大陆,提供或使用代理与 VPN 软件还受电信管理和具体服务条款约束;这里不讨论如何绕过管理措施。
主要资料
- 文档首页与许可证原文:sing-box
- v1.14.3 配置引言、入站、出站与端点索引:同一文档站的 configuration 章节(以标签树为准)
- 源码与发布:SagerNet/sing-box
- SOCKS 协议版本 5:RFC 1928
- HTTP 语义(含 CONNECT):RFC 9110