什么时候用 sing-box

sing-box 是一套跨平台的通用代理内核(Windows、macOS、Linux、iOS、Android 都有对应客户端),协议覆盖很广,包括较新的 Hysteria2、TUIC 等。它灵活、统一,但配置偏进阶。

一句话取舍:新手先用 Clash Verge 需要新协议、或想在多设备用同一套配置时,再考虑 sing-box。

工作原理简述

理解 sing-box 的结构,配置就不再是天书。它的核心是三段式数据流:入站 → 路由 → 出站

  • 入站负责把流量接进来,桌面端常见 TUN 虚拟网卡接管全局,或本地代理端口。
  • 路由是大脑,按规则决定每条流量走哪个出站:广告丢黑洞、国内网站直连、其余走机场节点。
  • 出站是流量往哪儿发。每个机场节点是一个出站,另有直连、阻断,以及手动选择、自动测速择优这类分组。

所以你在客户端里“选节点”,本质是改手动分组指向哪个真实节点;“自动测速”是定期探测挑延迟最低的那个。理解这套模型,订阅生成的配置就一目了然。

一、准备工作

  1. 按你的系统下载对应的 sing-box 客户端(桌面有 GUI,手机有对应 App)。
  2. 确认机场是否提供 sing-box 订阅 或可用的通用订阅;只有 Clash 订阅时可能需要订阅转换
  3. 记下客户端版本号。sing-box 配置格式在不同大版本间有过不兼容改动,新版内核读旧配置可能报错,尽量让内核版本与机场订阅面向的版本对齐。

二、导入订阅

不同客户端界面不一,但思路一致:

  1. 复制机场提供的 sing-box / 通用订阅链接。
  2. 在客户端的「配置 / Profiles」里新增,粘贴链接并保存、更新。
  3. 拉取成功后,出站(outbound)列表会出现机场节点。

若导入后没有节点,多为链接不兼容或过期,可对照订阅失效与连不上的排查

三、选择出站与规则

  • 在出站里选延迟较低的节点(或用自动选择/urltest 分组)。
  • 规则(route)决定哪些流量走代理、哪些直连;机场订阅通常自带一套规则。
  • 开启系统代理 / TUN 模式后即可全局生效。

四、配置示例:看懂订阅生成了什么

即便你不手写配置,也值得看懂结构。下面是一段示意性的精简 JSON(真实订阅会复杂得多,节点信息以机场为准):

{
  "outbounds": [
    { "type": "selector", "tag": "PROXY", "outbounds": ["auto"] },
    { "type": "urltest", "tag": "auto", "outbounds": ["节点A", "节点B"] }
  ],
  "route": {
    "rules": [ { "geoip": ["cn"], "outbound": "direct" } ],
    "final": "PROXY"
  }
}

读法:route.rules 从上往下匹配,命中就按对应出站走;都没命中就落到 final。想让某个流媒体走固定节点,就是加一条把它的域名指向具体出站,思路见流媒体解锁原理改动优先在客户端的“覆写/自定义规则”里做,否则一更新就被覆盖。

五、不同平台的差异

同一套内核,各端体验并不完全一致:

  • Windows / macOS 桌面:功能最全,TUN 模式接管全局。macOS 首次开 TUN 需授予网络扩展权限。
  • iOS:走系统 NetworkExtension,内存有硬性上限,节点/规则过多可能被系统回收,配置宜精简。
  • Android:以 VpnService 接管流量,注意关闭省电限制,否则息屏易断连。
  • Linux:多以命令行运行,适合做旁路由/软路由,靠 systemd 常驻。

六、协议是它的强项

sing-box 对多协议兼容度高,如果机场给的是 Hysteria2、TUIC 等较新协议,它往往能直接支持。各协议的差异见代理协议科普,其中 TUICREALITY 伪装有单独展开。

完整故障排查

按“症状 → 可能原因 → 处理”对照:

  1. 导入后没有节点:链接过期或格式不对。换 sing-box 专用订阅或先转换;仍不行见订阅失效排查
  2. 保存时 JSON 报错:多为手工改坏了括号/逗号,优先用订阅而非手写。
  3. 能连上但网页打不开:先怀疑 DNS 污染,也可能是规则把该域名错判为直连。
  4. 节点全红、延迟极高:本地网络、内核版本或节点侧问题,按节点全红排查定位。
  5. 握手失败 / 重置:见连接被重置

安全注意事项

  • 订阅链接等于身份凭证,含节点与鉴权信息,不要外发或粘到不明网站。
  • TUN / 系统扩展权限很高,只从官方渠道获取客户端,避免“修改版”。
  • 更新内核修复安全问题,但更新前留意配置格式是否兼容。

常见问题

  • 配置报错:JSON 配置对格式敏感,优先用机场提供的订阅而非手写。
  • 部分网站打不开:多为 DNS 问题,见 DNS 污染的判断与解决
  • 偏好简单:那就回到 Clash Vergev2rayN