Loading Background
海外志

启航,去看更远的世界

正在启航...0%
软件工具

sing-box 新手教程:订阅、路由规则与跨平台配置完整指南

面向普通用户的 sing-box 客户端入门手册。抛开晦涩的开发者文档,用大白话带你了解出站/入站逻辑、图形化客户端配置与底层路由分流规则,轻松拥抱新一代代理架构。

海外志编辑部
2026-09-21
30 分钟阅读
sing-box 新手教程:订阅、路由规则与跨平台配置完整指南

sing-box 是什么,它的定位是什么

如果你曾经搜索过"代理客户端",一定听过 Clash、V2rayN 这些名字。sing-box 是一个更新的名字,但它和这些工具有本质上的区别:sing-box 是一个通用的代理内核(core),而不是一个开箱即用的 GUI 客户端

所谓"内核",是指它负责实际处理流量的后台程序,包括建立隧道连接、执行路由规则、转发 DNS 查询等底层工作,但它本身不提供窗口界面。你看不到它的托盘图标,也没有可以点击的按钮——它的配置全部通过一个 JSON 文件来完成。

sing-box 由 SagerNet 团队开发,最初作为 SagerNet 安卓客户端的核心引擎,后来逐渐演变成一个跨平台的独立项目。它支持的协议范围非常广泛,包括 Shadowsocks、VMess、VLESS、Trojan、Hysteria2、TUIC、Reality 等,几乎涵盖了目前主流的所有代理协议,且更新迭代速度非常快,往往是新协议最先获得支持的地方之一。

从定位上来说,sing-box 对标的是 Mihomo(Clash.Meta 的内核)或 Xray-core,而不是 ClashX、Clash for Windows 这类图形化客户端。理解这一点,是避免踩坑的第一步。


sing-box 与 Mihomo/Clash 的区别

很多新手会把 sing-box 和 Clash 混为一谈,觉得"反正都是代理工具"。实际上,它们处于不同的层级,需要区别理解。

Mihomo(Clash.Meta) 是一个内核,定义了 Clash 的配置语法(YAML 格式)和路由逻辑。在它之上,有 ClashX(macOS)、Clash Verge Rev(Windows/macOS/Linux)等 GUI 客户端来提供操作界面。普通用户直接接触的是这些 GUI,而不是 Mihomo 内核本身。

sing-box 同样是一个内核,但它使用的是 JSON 配置格式,语法更灵活但也更复杂。sing-box 的出站、入站、路由、DNS 全部在一个 JSON 文件里配置。它的生态目前正在快速成熟,已经有多个 GUI 客户端基于它来构建。

两者在技术路线上的主要差异在于:

  • 配置格式:Mihomo 用 YAML,sing-box 用 JSON
  • 协议支持:sing-box 对新协议(如 Hysteria2、TUIC v5、VLESS+Reality)的支持通常更快
  • 生态成熟度:Mihomo 的 GUI 生态更丰富,订阅转换工具支持更广泛;sing-box 的 GUI 生态仍在追赶中
  • 路由规则格式:sing-box 有专属的 rule-set(二进制规则集),性能优于 Mihomo 的文本规则

简而言之,如果你是一个习惯了 Clash YAML 的用户,切换到 sing-box 需要一定的适应成本。如果你从零开始,两者都值得考虑,只是学习路径不同。想了解 Clash 的模式分流概念,可以参考Clash 代理模式解析


普通用户如何上手:先从图形化封装开始

对于不熟悉 JSON 配置的普通用户,直接操作 sing-box 原始配置文件并不现实。好消息是,目前已有多个成熟的 GUI 客户端基于 sing-box 内核构建,提供了友好的操作界面。

Hiddify(推荐,全平台)

Hiddify 是目前对新手最友好的 sing-box 封装客户端之一,支持 Windows、macOS、Linux、Android 和 iOS。它内置了配置模板,导入订阅链接后可以自动生成对应的 sing-box 配置,无需手动编写 JSON。

Hiddify 的界面简洁,切换节点、查看流量日志、开启 TUN 模式都只需要几次点击。对于想体验 sing-box 生态但不想折腾配置文件的用户,Hiddify 是首选。详细的安装与配置流程,可以参考Hiddify 完整使用教程

NekoBox(Windows / Linux)

NekoBox for PC(也叫 NekoRay 的 sing-box 版本)是另一个较为成熟的选项,尤其适合 Windows 用户。它支持导入订阅、管理多个节点配置,并允许用户在 Xray-core 和 sing-box 两种内核之间切换,迁移成本较低。

SFI / SFA(移动端)

官方发布的 sing-box for iOS(SFI)和 sing-box for Android(SFA)是移动端的原生应用,支持直接导入 sing-box 格式的配置文件或订阅链接。iOS 版本在 App Store 中国区不可用,需要通过外区账号下载。

对于普通用户,建议的路径是:先选一个 GUI 客户端 → 导入机场提供的订阅 → 使用默认路由规则 → 需要时再深入定制。关于各工具的横向对比,可以参考代理工具汇总


sing-box 的四个核心概念

在使用基于 sing-box 的客户端时,理解它的四个基础概念会让你在排查问题时更有方向感。它们之间的关系如下:

inbound(入站)

入站定义了 sing-box 如何接收来自本地设备的流量。常见的入站类型有:

  • mixed:同时支持 HTTP 和 SOCKS5 代理协议,对应系统代理设置里填写的端口
  • tun:虚拟网卡模式,在系统层面接管所有流量,后面会详细介绍

一个典型配置中,sing-box 会在本地监听某个端口(如 7890),等待来自浏览器或系统的连接请求。

outbound(出站)

出站定义了流量应该如何送出去。你的每一个代理节点(或直连、拒绝)都是一个出站。常见的出站类型包括:

  • shadowsocksvmessvlesstrojanhysteria2 等协议节点
  • direct:直接连接,不经过代理
  • block:丢弃流量
  • urltest/selector:策略组,用于自动选择或手动切换节点

routing(路由)

路由是 sing-box 的核心逻辑,它决定每一条流量请求应该走哪个出站。路由规则按顺序匹配,第一条匹配的规则生效。常见的匹配条件包括:域名、IP 地址、GeoIP 归属地、端口号、协议类型等。

例如,你可以设定:国内域名走 direct,被墙域名走代理节点,广告域名走 block

dns

DNS 配置决定了域名如何被解析。sing-box 的 DNS 模块与路由模块深度联动,可以针对不同的域名使用不同的 DNS 服务器,例如国内域名用 223.5.5.5,海外域名用代理链路上的 1.1.1.1。这种"分流 DNS"的设计是避免 DNS 泄漏的关键。

四个模块的数据流向大致是:入站接收请求 → DNS 解析域名 → 路由匹配规则 → 出站发送流量。任何一个环节配置出错,都可能导致"连上了却打不开网页"的问题。


订阅导入:需要什么格式

sing-box 并不支持直接导入 Clash YAML 格式的订阅,它需要机场提供专门的 sing-box 格式订阅链接。sing-box 的配置文件本质上就是一个完整的 JSON,包含了所有的入站、出站、路由、DNS 配置。

目前有两种获取 sing-box 配置的途径:

方式一:直接使用支持 sing-box 的机场订阅

部分机场已经在后台生成了 sing-box 格式的订阅链接,你可以在机场控制台的"客户端"或"订阅"页面找到它。一旦得到这个链接,在 Hiddify 或 SFA 等客户端中直接粘贴导入即可,客户端会自动拉取并解析。

方式二:使用订阅转换工具

如果你的机场只提供 Clash 或 V2Ray 格式的订阅,可以通过在线订阅转换工具(如 sub-store 或 subconverter)将其转换为 sing-box 格式。需要注意的是,转换工具的质量参差不齐,转换后的路由规则不一定完整,建议优先选择原生支持 sing-box 订阅的机场。

导入订阅后遇到更新失败的情况,通常是因为直接访问机场订阅链接受到了网络干扰。可以尝试先通过移动数据网络更新,或使用已经翻墙的设备作为代理中转来拉取配置。关于支持 sing-box 格式的机场推荐,可以参考Hiddify 机场推荐


路由规则与 rule-set:实现精准分流

sing-box 的路由规则是它的核心竞争力之一。相较于 Clash 的文本规则,sing-box 的 rule-set 使用二进制格式(.srs 文件),加载速度更快,内存占用更低,尤其在规则条目多达几十万条时优势明显。

一套典型的分流方案会包含以下几类规则(按匹配优先级排序):

  1. 私有 IP 直连10.x192.168.x 等局域网地址直接走 direct,避免代理本地流量
  2. 广告过滤:匹配广告域名,走 block 出站直接丢弃
  3. 国内域名/IP 直连:从社区维护的规则集(如 geosite:cngeoip:cn)匹配,走 direct
  4. 流媒体专线:Netflix、Disney+、YouTube 等域名走特定的节点组
  5. 其余流量代理:兜底规则,未被前面匹配到的流量走代理出站

在 sing-box 配置中,引用 rule-set 的写法类似于:

{ "type": "remote", "tag": "geosite-cn", "format": "binary", "url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-cn.srs", "download_detour": "direct" }

社区中常用的规则集来源包括 SagerNet 官方维护的 sing-geosite / sing-geoip,以及 Loyalsoldier、MetaCubeX 等项目提供的 sing-box 格式规则集。如果你使用 Hiddify 或 NekoBox 这类 GUI 客户端,路由规则通常已经内置,无需手动填写 JSON。


DNS 设置:被忽视却最容易出问题的环节

很多用户在代理配置上花了大量时间,却忽略了 DNS 这一环。事实上,DNS 配置错误是"代理连上了但网页打不开"的最常见原因之一

sing-box 的 DNS 模块支持两种常见的工作模式:

Fake-IP 模式

Fake-IP 是一种加速本地 DNS 解析的技术。工作原理是:当设备发起 DNS 查询时,sing-box 不会真正去查询远端服务器,而是立即返回一个虚假的内网 IP(通常是 198.18.x.x 段)。设备拿到这个假 IP 后立即发起连接请求,sing-box 在内部记录了这个假 IP 对应的真实域名,并在实际建立出站连接时使用真实域名去远端解析。

Fake-IP 的优点:极大加快了首次访问的响应速度,因为 DNS 查询不再是建立连接的瓶颈。

Fake-IP 的问题:部分 App 或游戏会对 DNS 返回的 IP 做合法性校验,如果检测到是 198.18.x.x 这类内网地址,可能会拒绝连接甚至崩溃。此外,系统 DNS 缓存中会留下大量虚假记录,关闭代理后需要手动刷新(ipconfig /flushdns)。

Real-IP 分流模式

另一种方案是真实 IP 分流:国内域名通过本地 DNS(如 223.5.5.5)查询,海外域名通过代理链路上的 DoH/DoT(如 1.1.1.1)查询。这种方式更稳定,不会产生假 IP 问题,但首次 DNS 查询会有一定延迟。

Hiddify 等图形化客户端会在界面中提供这两种模式的切换选项,普通用户只需根据自己的使用场景选择即可,不必手动修改 JSON 中的 DNS 配置。


TUN 模式:实现真正的全局代理

系统代理(HTTP/SOCKS 代理)依赖应用程序主动遵守系统设置,但并非所有程序都会这样做。命令行工具(如 curlgit)、部分游戏客户端、以及使用原生网络接口的 App,通常不走系统代理,导致它们的流量直接出去而不经过代理。

TUN 模式通过在操作系统层面创建一张虚拟网卡(如 tun0),将所有网络层(L3)流量强制引入 sing-box 处理。由于是在网卡级别接管流量,任何应用程序的网络请求都无法绕过,实现了真正意义上的全局代理。

在 Hiddify 客户端中,TUN 模式只需在设置中打开一个开关,客户端会自动配置路由表和系统 DNS。在 Windows 上,TUN 模式依赖 WinTun 或 TunDrv 驱动,首次安装时可能需要管理员权限。

需要注意的冲突场景

  • TUN 模式与其他 VPN 软件(如企业 VPN、WireGuard)同时运行时,可能产生路由表冲突,导致两者都无法正常工作
  • 虚拟机软件(如 VMware、WSL 的桥接网络)可能因 TUN 模式的路由规则而出现连接异常
  • 开启 TUN 后应确保 direct 出站的流量不会再被路由回 TUN,否则会形成路由环路

对于日常浏览和流媒体使用,系统代理模式已经足够。只有在需要让 git、npm 等命令行工具走代理时,才有必要开启 TUN 模式。


什么时候适合选择 sing-box

sing-box 并非适合所有人,以下场景更能发挥它的价值:

适合使用 sing-box 的情况

  • 你的机场订阅了最新的协议(如 Hysteria2、TUIC v5、VLESS+Reality),而现有的 Clash 客户端无法解析
  • 你是 Android 或 iOS 用户,想要在移动端使用 sing-box 原生应用获得更好的电池和性能优化
  • 你有一定的 JSON 编辑能力,想要高度定制化的路由规则,而不受 YAML 格式限制
  • 你在路由器或服务器上部署透明代理,需要 sing-box 灵活的入站配置

不适合立刻切换的情况

  • 你目前的 Clash/V2rayN 配置工作正常,满足日常需求,没有明显痛点
  • 你对配置文件不感兴趣,只想"导入订阅然后用"——此时直接用 Hiddify 即可,不必在意底层是不是 sing-box
  • 你需要大量社区的中文配置模板,目前 sing-box 的中文教程资源仍少于 Clash

简单来说:如果你在意新协议支持、移动端体验或高级路由定制,sing-box 值得一试;如果你只是普通用户,通过 GUI 客户端间接使用 sing-box 才是合理路径


sing-box 的局限性

坦率地说,直接使用 sing-box 原始 JSON 配置对普通用户并不友好,主要体现在以下几点:

配置复杂度高:一份完整的 sing-box 配置文件少则 200 行,多则上千行 JSON,入站、出站、路由、DNS 四个模块互相引用,任何一处语法错误都会导致启动失败。JSON 本身没有注释语法,排查问题比 YAML 困难。

错误信息不直观:sing-box 启动失败时,日志中的错误信息需要一定经验才能理解,新手很容易在这一步卡住。

订阅转换工具支持参差不齐:并非所有订阅转换工具都能准确生成 sing-box 配置,部分工具生成的 JSON 结构不完整,路由规则缺失,需要手动补充。

中文社区资料相对较少:相比 Clash,sing-box 的中文教程、故障排查经验帖数量仍然有限,遇到问题需要查阅英文官方文档或 GitHub Issues。

这些局限并不意味着 sing-box 不好,而是说明它目前更适合有一定技术基础的用户,或者通过 GUI 客户端间接使用。普通用户直接面对裸 sing-box 的学习曲线,要比 Clash Verge 之类的成熟 GUI 陡峭得多。


从 Clash/V2ray 迁移到 sing-box 生态

如果你决定从现有的 Clash 或 V2rayN 迁移过来,以下是推荐的迁移思路:

第一步:选择合适的 GUI 入口

不要一开始就尝试手写 sing-box JSON。先选一个基于 sing-box 的 GUI 客户端(推荐 Hiddify),把现有的订阅链接导入进去,验证可以正常连接。这一步的目的是建立对 sing-box 生态的基本信心,而不是深入配置。

第二步:了解配置结构差异

Clash YAML 和 sing-box JSON 在概念上有对应关系,但写法完全不同:

| Clash 概念 | sing-box 对应 | |---|---| | proxies | outbounds(出站列表) | | proxy-groups | outbounds 中的 selector/urltest 类型 | | rules | route.rules | | nameserver | dns.servers | | tun | inbounds 中的 tun 类型 |

理解这些对应关系,有助于你将已有的 Clash 规则经验迁移到 sing-box 的 JSON 结构中。

第三步:如果机场不提供 sing-box 格式

联系机场客服询问是否支持 sing-box 格式的订阅链接。现在越来越多的机场已经支持多格式订阅。如果对方不支持,可以使用 sub-store 等工具自行转换,但建议只用于测试,正式使用还是优先选择原生支持的机场。

第四步:逐步定制路由规则

Hiddify 内置的路由规则对大多数场景已经够用。如果你有特殊需求(比如让特定 App 走某条专线),可以在客户端的"自定义规则"功能中添加,而不必从头修改整个 JSON 文件。


常见问题解答

Q1:sing-box 和 sing-box GUI 是同一个东西吗?

不是。sing-box 是底层内核程序,本身没有界面,需要通过命令行运行。Hiddify、NekoBox、SFA 等是在 sing-box 基础上开发的图形化客户端,普通用户使用的是这些 GUI,而不是直接运行 sing-box 可执行文件。

Q2:我的机场只给了 Clash 订阅链接,能用 Hiddify 吗?

可以,但有前提。Hiddify 本身基于 sing-box,需要 sing-box 格式的配置,但 Hiddify 内置了对部分 Clash 订阅格式的解析支持。如果导入失败,建议直接联系机场客服索取 sing-box 或 Hiddify 专属的订阅链接,许多机场已经支持多格式输出。

Q3:开启 TUN 模式后,我的公司 VPN 断线了,怎么办?

TUN 模式与企业 VPN 通常存在路由冲突。最简单的解决办法是:需要连公司 VPN 时,先关闭 sing-box 的 TUN 模式(或退出客户端),VPN 断线后再重新开启。部分高阶用户会配置路由规则将公司内网 IP 段加入 direct 出站并绕过 TUN 接管,但这需要一定的网络配置经验。

Q4:fake-ip 模式下,关掉代理后某些网站打不开,如何解决?

这是 fake-ip 模式的已知副作用。系统 DNS 缓存中留存了虚假 IP 记录,关闭代理后这些记录导致连接失败。解决方法是关闭代理后执行 ipconfig /flushdns(Windows)或 sudo dscacheutil -flushcache(macOS)刷新 DNS 缓存。如果这个问题频繁困扰你,可以考虑切换到 Real-IP 分流模式。

Q5:sing-box 支持 Hysteria2 协议吗?Clash 客户端不支持怎么办?

sing-box 是最早完整支持 Hysteria2 协议的内核之一,而部分老版本 Clash 客户端或 Mihomo 版本较旧时可能不支持。如果你的机场提供 Hysteria2 节点但 Clash 无法解析,切换到基于 sing-box 的 Hiddify 是最直接的解决方案。

Q6:sing-box 的 rule-set 规则集从哪里下载?

sing-box 的 rule-set 以 .srs 二进制格式为主(也支持 .json 格式的 source file)。常用的规则集来自 SagerNet 官方 GitHub 的 sing-geoipsing-geosite 仓库,以及社区维护的 MetaCubeX、Loyalsoldier 等项目的 sing-box 专用分支。在 Hiddify 等 GUI 客户端中,这些规则集已经内置,会随客户端自动更新,无需手动管理。

Q7:手机上用 SFA(sing-box for Android),导入订阅后节点全是红色,无法连接?

首先检查订阅格式是否正确——SFA 需要的是 sing-box JSON 格式,而不是 Clash YAML 或 V2Ray 的 Base64 格式。其次,确认订阅链接本身是否有效(可以在浏览器中打开看是否返回 JSON 内容)。如果格式正确但仍连接失败,尝试手动点击每个节点进行延迟测试,并查看 SFA 的日志界面获取具体错误信息。

Q8:sing-box 会不会比 Clash 慢?

理论上不会,两者在性能上都属于高效的 Go 语言实现,日常使用中的速度差异主要来自节点质量和路由规则,而非内核本身。sing-box 的 rule-set 二进制格式在规则匹配效率上甚至略优于 Clash 的文本规则,在低端设备(如路由器)上差距会更明显。

Q9:在路由器上部署 sing-box 透明代理,需要什么前提条件?

路由器上运行 sing-box 透明代理通常需要:①路由器运行 OpenWrt 或类似 Linux 系统;②路由器 CPU 架构与 sing-box 的预编译二进制文件匹配(mips、arm64 等);③配置 TProxy 或 Tun 入站接管局域网流量;④合理设置路由规则避免代理流量形成环路。这属于进阶玩法,建议先在 PC 端玩熟 sing-box 的配置结构后再尝试。

Q10:我该选 Hiddify 还是 NekoBox?

两者都基于 sing-box 内核。Hiddify 界面更简洁,跨平台支持更好(包括 iOS 和 macOS),对新手更友好,配置自由度略低。NekoBox(Windows/Linux)功能更丰富,支持在 sing-box 和 Xray 内核之间切换,适合有一定基础的用户。如果你是普通用户或需要在多平台统一使用,选 Hiddify;如果你是 Windows 用户且需要更细粒度的节点管理,NekoBox 更合适。


小结

sing-box 代表了新一代代理内核的发展方向——更广泛的协议支持、更高效的路由规则、更灵活的配置架构。对于普通用户,不需要直接面对它的 JSON 配置文件,通过 Hiddify 这类封装良好的客户端就能享受 sing-box 带来的优势。对于有技术背景的用户,深入学习 sing-box 的配置结构会让你对代理工具的理解上升一个层次。

如果你还在对比各种代理客户端,可以从新手入门指南开始,梳理清楚自己的需求后再决定用哪个工具。需要更多工具对比信息,代理工具导航页面整理了目前主流客户端的特性对照。

关于作者:海外志编辑部

专注整理海外网络、机场服务、Clash、工具与数字生活相关内容。欢迎关注海外志获取最新资讯。