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 与文档首页使用同一段文字,要点有两层:

  1. 可以在自由软件基金会发布的 GNU GPL 第 3 版,或(可选)任何更新版本 下再分发。
  2. 另加一句:衍生作品未经事先同意,不得使用该应用的名称,也不得暗示与该应用有关联。

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):

类型名文档中的名称
wireguardWireGuard
tailscaleTailscale
openconnectOpenConnect 客户端
openvpn-clientOpenVPN 客户端
openvpn-serverOpenVPN 服务端

入站索引中的类型名: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、mixedSOCKS 见 RFC 1928;HTTP 代理常用 CONNECT,语义见 RFC 9110
系统入口tun、redirect、tproxy操作系统接口,不是 IETF 隧道协议
既有 VPN 协议端点wireguard、openvpn-client、openconnect各自的项目规范;WireGuard 不是 RFC
逻辑出口direct、block、selector、urltestsing-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 AndroidSFAAndroid 5.0+;仓库 sing-box-for-android
sing-box for Apple platformsSFI / SFM / SFTiOS 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
strongSwanIKE 与 IPsec密钥交换和 IPsec 安全关联,不是多协议代理核心
WireGuard / OpenVPN各自的隧道协议sing-box 可以在文档列出的端点里承载它们,但协议规范不属于 sing-box。对照见 WireGuard 与 OpenVPN
Clash 系核心以规则和 YAML 配置见长的代理核心配置格式不同,不能把另一份配置当成 sing-box JSON
Xray另一套代理核心同样使用 JSON 风格的入站、出站与路由,字段和协议重心并不通用

读版本时先核对的三件事

  1. 安装的是标签 v1.14.3,还是默认分支或某个 alpha。文档站不一定等于稳定标签。
  2. 某个协议名字出现在入站、出站还是端点。WireGuard 在 1.11.0 之后同时有弃用页和端点页。
  3. 图形界面是 Project S 的客户端,还是索引明确未收录的第三方程序。核心版本以客户端显示的为准。

本文只整理公开的项目资料。在中国大陆,提供或使用代理与 VPN 软件还受电信管理和具体服务条款约束;这里不讨论如何绕过管理措施。

主要资料

  • 文档首页与许可证原文:sing-box
  • v1.14.3 配置引言、入站、出站与端点索引:同一文档站的 configuration 章节(以标签树为准)
  • 源码与发布:SagerNet/sing-box
  • SOCKS 协议版本 5:RFC 1928
  • HTTP 语义(含 CONNECT):RFC 9110