文章

sing-box详解

sing-box 详解(2026 年中)

网络工程 / 协议实现学习向文档。聚焦架构、配置模型、协议广度与生态定位。


1. 概述与定位

sing-box 由 SagerNet(nekohasekai)开发,定位是**“统一全能核心”**——一个二进制覆盖几乎所有主流代理协议,配置干净、实现现代(纯 Go、模块化)。

它的核心标签:

  • 协议覆盖面最广:VLESS、VMess、Trojan、Shadowsocks(2022)、Hysteria2、TUIC、ShadowTLS、AnyTLS、WireGuard 全支持。
  • DNS 与路由引擎强:内置 fakeip、geosite/geoip、规则路由,是”全家桶”式体验的关键。
  • 设计哲学偏向”一个核心解决所有事”,而不是在单点上做到极致(抗封锁上弱于 Xray 的原生 Reality 首发优势,但跟进很快)。

2. 项目背景与生态

项目说明
作者nekohasekai(SagerNet 作者)
语言Go
版本线v1.0(2024 稳定)→ 1.11/1.12(2025–2026 持续迭代)
标志性特性多协议统一、强 DNS、TUN、Clash API 兼容

常见 GUI 封装

  • iOS / macOS:SingBox for iOS / macOS (SFI/SFA)(官方出品)
  • 跨平台:NekoBoxStashClash Verge(部分版本可切换核心)
  • 路由器:OpenWrt 插件、shell 脚本部署
  • 命令行:单二进制直接跑,适合服务器 / VPS

3. 架构与核心组件

sing-box 同样由”入站 / 出站 / 路由”组成,但在概念上更模块化,强调**出站类型(outbound type)**的多样性:

Inbound(本地入口)

Route(路由:按规则选 outbound)

Outbound(类型极多:vless / trojan / ss / hysteria2 / tuic / wireguard / direct / dns / tor ...)

DNS(独立引擎,支持 fakeip / 分流解析)
Experimental(TUN、Clash API、缓存等)
  • Inbound:tun、mixed(socks+http)、socks、http、redirect、tproxy。
  • Outbound:几乎覆盖所有协议 + direct(直连)、dnstorsshblock(阻断)。
  • Route:支持 rules(基于 domain/ip/port/protocol/process 等)、rule_set(可加载 geosite/geoip 数据库)、final 兜底路由。
  • DNS:内置多上游、按域名分流、fakeip 模式、hosts。
  • Experimental:TUN 增强、Clash API(供仪表盘读取延迟/流量)、缓存。

4. 支持的协议与传输

sing-box 的协议广度是其最大卖点:

代理协议(outbound type)

  • Shadowsocks / Shadowsocks 2022
  • VMess、VLESS(含 Reality 支持)
  • Trojan
  • Hysteria / Hysteria2
  • TUIC(v5)
  • ShadowTLS(v3)
  • AnyTLS
  • WireGuard(原生,可作为出站)
  • SOCKS5、HTTP、Tor、SSH、Direct、Block、DNS

传输(transport)

  • 对 VLESS/VMess/Trojan 提供 V2Ray 兼容传输(tcp+reality/tls、ws、grpc、h2、quic、http),保证与 Xray 生态互通。
  • Hysteria2 / TUIC 自带基于 QUIC 的传输。

5. 配置模型(JSON)

sing-box 配置也是 JSON,但结构与 Xray 不同,强调 outbounds[].type

{
  "log": { "level": "info" },
  "inbounds": [ /* tun / mixed / socks / http */ ],
  "outbounds": [
    { "type": "vless", "server": "...", "flow": "xtls-rprx-vision", "tls": {...} },
    { "type": "hysteria2", "server": "...", ... },
    { "type": "direct" },
    { "type": "dns" }
  ],
  "route": {
    "rules": [ /* 分流规则 */ ],
    "rule_set": [ /* geosite / geoip 数据库引用 */ ],
    "final": "proxy"
  },
  "dns": { /* 多上游 + fakeip */ },
  "experimental": { "clash_api": {...}, "tun": {...} }
}

学习要点

  • outbounds[].type 是协议切换的唯一开关,扩展协议只需加一个 outbound。
  • route.rule_set 让地理/分类数据库变成”可加载资源”,比手写规则更可维护。
  • experimental.clash_api 让 sing-box 能被 Clash 系仪表盘(如 yacd)读取状态,是它的”生态兼容”巧思。

6. 关键能力

  1. 协议全覆盖:一个核心同时跑 Reality + Hysteria2 + TUIC + WireGuard,无需多核心拼装。
  2. 强 DNS 引擎:fakeip、按域名分流解析、对抗 DNS 污染,是”干净分流”的基础。
  3. TUN 模式:系统级透明代理,支持全流量接管(含 UDP)。
  4. Clash API 兼容:可复用 Clash 生态的仪表盘。
  5. 单二进制:服务器/路由器部署极简,无外部依赖。

7. 典型使用形态

  • VPS / 服务器:单二进制运行,做”全能网关”。
  • 桌面/移动:SFI/SFA 官方客户端,或 NekoBox 切换核心。
  • 全家桶:一个 sing-box 实例同时承载抗封锁(Reality)+ 速度(Hysteria2)+ 直连分流,配置文件即全部。

8. 横向对比(与 Xray / mihomo)

维度sing-boxXray-coremihomo
协议广度最广广
抗封锁旗舰跟进(支持 Reality)原生 Reality/Vision支持
配置格式JSONJSONYAML
路由风格规则路由 + 强 DNS规则路由规则组
DNS 能力最强(fakeip/分流)
部署简便度单二进制极简需配套 GUI/脚本需配套 GUI

9. 学习建议

  • 想”一核心学遍所有协议”,sing-box 是最省事的入口——同一份配置里就能对比 VLESS / Hysteria2 / TUIC 的差异。
  • 重点读 outbounds 的 type 列表和 route.rule_set,理解”协议即出站类型”的模块化思想。
  • 配合官方 configuration 文档逐个试 type,是建立协议全景认知的最快路径。

相关笔记

本系列属于「代理协议与核心实现」知识簇: