sing-box 1.14 升级实战:Snell 协议、OpenVPN 客户端与自带 Web 仪表盘

sing-box 1.14 升级实战:Snell 协议、OpenVPN 客户端与自带 Web 仪表盘

背景:sing-box 是什么,为什么看这一篇

如果你是第一次打开这篇博客,先补一个背景:sing-box 是一个用 Go 编写的开源通用代理内核,可以同时做客户端和服务端,支持十几种协议(VLESS、VMess、Trojan、Hysteria2、WireGuard、TUN 等)。它的地位类似 Clash 内核,但设计更现代:一次配置可以在 Linux 服务器、安卓手机、iOS、Windows、macOS 上通用。

2026 年 10 月上旬,sing-box 发布了 1.14 大版本(最新稳定版 1.14.3,10 月 9 日推送),更新内容堪称"年度最满"的一次:新增了 Surge 闭源协议 Snell 的开源实现、OpenVPN/OpenConnect 客户端、内置的 Web 仪表盘和 gRPC API 服务。本篇实测思路:先备份备份升级,再逐个验证新特性,最后给出迁移注意事项。

前置知识:会用 SSH 登录自己的 Linux 服务器,了解 JSON 格式,看得懂基本的代理出站(outbound)配置即可。

第一步:备份与升级

升级前先备份旧配置,这是硬习惯:

cp /etc/sing-box/config.json /etc/sing-box/config.json.bak.$(date +%F)
sing-box version

如果版本低于 1.14,直接下载对应平台的二进制覆盖。官方更新日志和全部版本信息都在 sing-box 官方更新日志。

特别注意:1.14 要求 Go 1.25 编译环境(不再支持 go1.24),如果你是自己编译的,要先升级 Go 工具链。用官方预编译二进制则无此烦恼。

升级后校验配置格式是否仍然合法:

sing-box check -c /etc/sing-box/config.json

新特性一:自带 Web 仪表盘 + API 服务

这是 1.14 最值得普通用户升级的特性。以前想远程看流量、切换出站组、跑网络质量测试,要么用图形客户端,要么自己写脚本调实验性接口;现在 sing-box 原生提供了一个 gRPC API 服务,还自带一个 Web 仪表盘,浏览器打开就能管。

在配置里加一个 services 段:

"services": [
  {
    "type": "api",
    "listen": "127.0.0.1",
    "listen_port": 10086,
    "secret": "<你的密钥>",
    "dashboard": {
      "enabled": true
    }
  }
]

说明几点:

  • listen 建议先填 127.0.0.1,只本机访问,需要远程管理再配 TLS 或反向代理,不要裸奔暴露公网。
  • secret 是 API 密钥,图形客户端和仪表盘用 Authorization: Bearer <secret> 头认证;留空则关闭认证,内网测试可以,公网必须填。
  • dashboard.enabled: true 后,sing-box 会自动下载官方仪表盘前端并监听在 /dashboard/ 路径,浏览器访问 http://127.0.0.1:10086/dashboard/ 即可。

仪表盘能做什么:看服务状态和日志、切换/测速出站组、切换 Clash 模式、看连接跟踪、做网络质量测试和 STUN 测试。图形客户端(iOS/macOS/安卓)也可以通过"远程控制"连这个 API 管远端实例。完整字段说明见 API 服务官方文档,公开演示实例地址是 http://sing-box-dashboard.sagernet.org。

配套的还有一个新的命令行客户端:sing-box api,用 CLI 就能做和图形客户端一样的操作,适合写脚本自动化。

新特性二:Snell 协议支持

Snell 是 Surge(iOS/macOS 上的知名代理软件)自家的私有协议,一直没有开源实现。Surge 官方的逻辑是"闭源+不扩散就能保持隐蔽",但 sing-box 官方在更新日志里直言:2026 年了,这种隐蔽性早已不存在;而 Snell 本身确实有别的"随机流量"协议没有的优点——支持多路复用、完整的 TCP 语义、流量特征多样性,所以干脆用 Go 重写实现了一遍。

覆盖情况:除 v5 的 QUIC 代理模式外全部实现,且行为尽量与官方实现一致,性能不低于官方。配置示例如下(对应 Snell v4):

{
  "type": "snell",
  "tag": "snell-out",
  "server": "<你的服务器地址>",
  "server_port": 6180,
  "version": 4,
  "psk": "<你的预共享密钥>",
  "obfs_mode": "http",
  "obfs_host": "www.bing.com"
}

字段要点(以 Snell 出站官方文档 为准):

  • version 只能填 4 或 6,必填。v4 支持 HTTP 混淆(obfs_mode: http + obfs_host),v6 改为流量整形(mode),且要求 psk 长度 12~255 字节。
  • v5 的线协议与 v4 实际相同(官方故意不支持 v5 的 QUIC 代理模式),所以没有单独的 v5 客户端。
  • obfs_mode 默认 none,obfs_host 默认 www.bing.com;reuse 可开启连接复用。

适用场景:你或朋友有 Surge 的 Snell 服务端,以前只能用 Surge 客户端,现在 sing-box 也能接了,多平台配置终于统一。服务端也要配对应的 Snell 入站,两端版本和 psk 保持一致。

新特性三:OpenVPN / OpenConnect 客户端

1.14 新增了 OpenVPN 客户端和服务端、OpenConnect 客户端。OpenConnect 支持 Cisco AnyConnect、GlobalProtect、Fortinet、F5、Pulse Connect Secure、Juniper Network Connect 等企业 VPN 服务器,还支持 AnyConnect 的 SSO 登录和现有会话复用。

这对很多人是刚需:公司或学校的 AnyConnect/Fortinet VPN,以前必须装臃肿的官方客户端,现在可以在 sing-box 的统一配置里接管,配合分流规则实现"办公流量走 VPN、其他直连"。OpenVPN 兼容标准服务端,包括静态密钥模式、老旧加密套件、证书校验,细节见官方文档的 OpenVPN 章节。

顺带值得知道的几项

  • Hysteria2 增强:客户端默认伪装 Chrome 的 QUIC 握手指纹(注意:如果服务端用 Ed25519 证书会握手失败,可用 disable_chrome_parrot 关掉);新增 gecko 混淆类型、BBR 配置文件、跳跃间隔随机化;还有 Hysteria Realm 中转服务,解决 Hysteria2 服务端在 NAT 后面的穿透问题。
  • L3 转发与 bridge 出站:TUN/WireGuard/Tailscale 的 L3 流量可以直接转发到 WireGuard/Tailscale 端点,不再经过 L3→L4 转换;新增 bridge 出站,是 L3 版的 direct。
  • iOS 客户端回归 App Store:苹果平台客户端换了新的开发者账号,以 sing-box MT 之名重新上架(之前叫 sing-box VT 的老用户需要重新安装,配置不会自动继承)。
  • Linux 发行版/网络命名空间:新增 network_namespaces,无 root 也能用 unshare 建命名空间跑 TUN。
  • 越狱 iOS 包:提供 rootless iOS 15+ 的 .deb,支持 Tailscale SSH 服务端和按进程名/路径分流。

迁移注意事项与排错

  1. App Store 版迁移:老 VT 版用户装 MT 版后配置不会继承,提前导出订阅链接或配置备份。
  2. Hysteria2 + Ed25519 证书:升级后握手失败先查证书类型,确认是 Ed25519 就加 disable_chrome_parrot: true。
  3. DNS 规则语义变化:旧的地址过滤字段(ip_cidr 等)被标记为 Legacy,1.16 会移除,建议按迁移文档改用 evaluate + match_response 新写法。
  4. Android auto_redirect 全功能:需要图形客户端的 root 服务或 root shell,按 TUN 文档 操作。

结语

1.14 是 sing-box 近两年变化最大的一次:Snell 让它第一次"吃下"了 Surge 的私有协议,OpenVPN/OpenConnect 让它能接管企业 VPN,内置仪表盘则补齐了可观测性这块短板。如果你还在 1.13 或更早版本,花 10 分钟备份升级,回报很实在。下一期可以写 Dashboard + API 的深度玩法(比如用 sing-box api 做自动测速切换),有兴趣的话留言告诉我——评论区见。