外观
sing-box 使用教程
sing-box 是一个跨平台的代理内核与客户端,覆盖 Windows、macOS、Linux、Android、iOS。
它与 Clash 系的核心差异:
| sing-box | Clash 系 | |
|---|---|---|
| 配置格式 | JSON | YAML |
| 规则表达能力 | 最灵活(支持逻辑组合) | 成熟但较固定 |
| 新协议支持 | 通常最快 | 较快 |
| 上手门槛 | 高 | 中 |
| 生态资源 | 较少 | 最多 |
| DNS 与路由 | 两套独立的规则系统 | 相对统一 |
选它的理由通常是:需要最新协议、需要极精细的路由控制、或机场只提供 sing-box 格式。
客户端本身是免费开源的第三方软件,与机场无关。 只从项目的官方代码仓库下载——客户端会保存你的订阅链接,在 TUN 模式下还能看到全部网络流量。
配置的四段结构
理解这四段,就理解了 sing-box 的配置。
{
"inbounds": [ ... ], // 入口:流量从哪里进来
"outbounds": [ ... ], // 出口:流量从哪里出去(节点与选择器)
"route": { ... }, // 路由:哪些流量走哪个出口
"dns": { ... } // 解析:域名怎么解析
}| 段 | 作用 | 常见内容 |
|---|---|---|
| inbounds | 流量入口 | TUN、混合端口(mixed)、SOCKS、HTTP |
| outbounds | 流量出口 | 节点、选择器(selector)、direct、block |
| route | 路由决策 | rules(规则)、final(兜底)、rule_set(规则集) |
| dns | 域名解析 | servers、rules、fakeip、final |
与 Clash 的概念对照
| sing-box | Clash 系 |
|---|---|
outbounds 里的节点 | proxies |
outbounds 里的 selector / urltest | proxy-groups(策略组) |
route.rules | rules |
route.final | MATCH 规则 |
route.rule_set | rule-providers(规则集) |
dns.rules | dns.nameserver-policy |
direct / block 出站 | DIRECT / REJECT |
一个重要区别:sing-box 的 DNS 规则与路由规则是两套独立的系统,需要分别配置。Clash 系的 DNS 分流相对更集中。
订阅格式
sing-box 需要 sing-box 格式
| 格式 | 是否适用 |
|---|---|
| sing-box(JSON) | 是 |
| Clash / Mihomo(YAML) | 否 |
| 通用 / Base64 | 否 |
| Shadowrocket 专用 | 否 |
这是 sing-box 最常见的入门障碍:很多机场不提供 sing-box 格式。
机场不提供怎么办
| 选择 | 评估 |
|---|---|
| 换用支持机场格式的客户端 | 最简单(比如桌面端用 Clash Verge Rev) |
| 换一家提供 sing-box 格式的机场 | 长期方案 |
| 用订阅转换服务 | 有凭证风险——转换服务必须拿到你的订阅链接 |
| 手工写配置 | 可行但维护成本高 |
关于订阅转换的风险: 它等同于把凭证交给第三方——该服务能记录你的订阅、看到你的全部节点、理论上还能在返回的配置里注入内容。如果必须用,用完后在机场后台重置订阅链接。 见 订阅链接安全。
站内 18 家的品牌资料里没有"订阅格式支持"这个字段,购买前建议向客服确认——这是 sing-box 用户特别需要问的一项。
各平台的使用方式
| 平台 | 形态 | 说明 |
|---|---|---|
| iOS | 官方图形应用 | 「配置」→ 新建 → 远程配置 → 粘贴 URL |
| Android | 官方图形应用 | 同上;注意电池优化会杀后台 |
| macOS | 官方图形应用 | 或命令行内核 |
| Windows | 命令行内核 + 第三方图形前端 | 官方图形应用支持不如移动端 |
| Linux | 命令行内核 | 注意与系统网络管理服务的冲突 |
| 路由器 | 命令行内核(视固件) | 配错影响全家 |
移动端的注意
| 平台 | 注意 |
|---|---|
| iOS | 通过系统的网络扩展机制工作;与系统 VPN 互斥;后台可能被回收 |
| Android | 请求 VPN 权限;与系统 VPN 互斥;把客户端加入电池优化白名单 |
"与系统 VPN 互斥":如果你有公司的 VPN,两者不能同时开。
路由规则
基本结构
"route": {
"rules": [
{ 匹配条件..., "outbound": "某个出站" },
...
],
"final": "兜底出站"
}常见的匹配条件
| 条件 | 匹配什么 |
|---|---|
domain | 域名精确匹配 |
domain_suffix | 域名及其子域名 |
domain_keyword | 域名包含某字符串 |
ip_cidr | IP 段 |
rule_set | 引用规则集(最常用) |
process_name | 按发起请求的程序 |
port / port_range | 端口 |
protocol | 协议类型(需要嗅探) |
network | tcp / udp |
clash_mode | 兼容 Clash 的模式切换 |
invert | 取反(sing-box 特有的灵活性) |
invert 与逻辑组合是 sing-box 相比 Clash 的主要优势:可以表达"不是国内域名且不是某个服务"这类条件,而不需要靠规则顺序来实现。
与 Clash 的语义差异
| 方面 | Clash | sing-box |
|---|---|---|
| 匹配语义 | 严格自上而下,第一条命中即停 | 支持逻辑组合,不是单一的顺序语义 |
| 兜底 | MATCH 规则(在列表最后) | route.final(独立字段) |
| 规则取反 | 不直接支持 | 支持 invert |
| 一条规则多个条件 | 通常需要多条规则 | 可以在一条里组合 |
所以 Clash 规则不能逐条照搬。 迁移时要按 sing-box 的文档重写,而不是机械翻译。
一个合理的规则顺序
| 序号 | 匹配 | 出站 |
|---|---|---|
| 1 | 订阅域名 | direct(预防循环依赖) |
| 2 | 局域网 IP 段、回环 | direct |
| 3 | AI 服务域名 | 选择器「AI」 |
| 4 | 视频会议域名 | 选择器「会议」 |
| 5 | 流媒体域名 | 选择器「流媒体」 |
| 6 | 下载 / 大流量域名 | 选择器「大带宽」 |
| 7 | 系统更新 / 应用商店 / 云同步 | direct(省流量) |
| 8 | 广告规则集(可选) | block |
| 9 | 国内域名规则集 | direct |
| 10 | 国内 IP 规则集 | direct |
| 11 | final | 选择器「默认」 |
第 1 条很重要:如果订阅更新的请求走了代理,而节点来自订阅,节点全失效时你无法自救。
DNS 规则
sing-box 的 DNS 配置是独立的一套系统,这是它与 Clash 差异最大的地方。
基本结构
"dns": {
"servers": [ { "tag": "...", "address": "...", "detour": "某个出站" }, ... ],
"rules": [ { 匹配条件..., "server": "某个 DNS server" }, ... ],
"final": "兜底 DNS server",
"strategy": "ipv4_only",
"fakeip": { ... }
}关键概念:detour
每个 DNS server 可以指定通过哪个出站去查询。
| 配置 | 效果 |
|---|---|
"detour": "direct" | 本地解析(用于国内域名) |
"detour": "某个节点" | 远程解析(用于境外域名) |
这是 sing-box 的一个优势:解析位置的控制非常直接——"这个 DNS server 通过日本节点查询"就是一句配置。
合理的默认
| 域名类型 | 解析方式 | 为什么 |
|---|---|---|
| 国内域名 | 国内 DNS + detour: direct | 否则拿到境外 CDN 的 IP,访问绕远 |
| 境外域名 | 境外 DNS + detour: 节点 | 返回目标地区的正确 IP,也避免污染 |
| 订阅域名 | 国内 DNS + detour: direct | 避免循环依赖 |
核心原则:路由规则决定走不走代理,DNS 规则决定连到哪个 IP。两套规则都要配对。
strategy:建议仅 IPv4
| 值 | 说明 |
|---|---|
ipv4_only | 只返回 IPv4,最少意外 |
prefer_ipv4 | 优先 IPv4 |
prefer_ipv6 | 优先 IPv6 |
ipv6_only | 只返回 IPv6 |
如果你没有明确需要 IPv6,建议 ipv4_only。 否则可能出现"部分流量走 IPv6 绕过了代理"这类难排查的问题。
fake-ip
TUN 模式下必须启用 fake-ip 或嗅探,否则域名规则不会命中。
| 配置 | 说明 |
|---|---|
dns.fakeip.enabled | 是否启用 |
dns.fakeip.inet4_range | fake-ip 网段 |
| DNS 规则里指向 fakeip server | 哪些域名用 fake-ip |
某些域名要排除 fake-ip:本地服务发现、部分对 IP 做校验的游戏、NTP。
详见 DNS 设置。
TUN 与嗅探
嗅探(sniff)
sing-box 的嗅探从连接握手数据里提取域名(TLS 的 SNI、HTTP 的 Host)。
| fake-ip | 嗅探 | |
|---|---|---|
| 原理 | 返回假 IP 保留域名映射 | 从握手里读域名 |
| 兼容性问题 | 部分协议不适应假 IP | 较少 |
| 额外好处 | — | 能识别协议类型(用于 protocol 规则) |
两者可以同时启用,互为补充。 在 inbound 上开启 sniff,配合 sniff_override_destination 可以让后续规则用嗅探到的域名匹配。
TUN inbound 的注意
| 项目 | 说明 |
|---|---|
| 需要权限 | 管理员 / root(移动端通过系统授权) |
auto_route | 自动配置路由表 |
strict_route | 更严格的路由(也更容易出问题) |
| 必须配局域网直连 | 否则路由器管理界面都打不开 |
| 必须配国内直连 | 否则国内访问全面变慢 |
| 配错的影响 | 整个系统可能断网 |
建议:先用混合端口(mixed)+ 系统代理把规则调好并验证,再切到 TUN。
详见 TUN 模式。
按场景的配置要点
场景一:iOS 上用 sing-box
iOS 是 sing-box 官方图形应用支持最好的平台之一。
| 步骤 | 操作 |
|---|---|
| 1 | 从 App Store 安装官方应用 |
| 2 | 「配置」→ 新建 → 远程配置 → 粘贴 sing-box 格式的订阅 URL |
| 3 | 保存后选中该配置 |
| 4 | 首页开启连接,系统弹窗授权 VPN |
| 5 | 验证:访问境外网站、看日志 |
iOS 特有的注意:
| 项目 | 说明 |
|---|---|
| 与系统 VPN 互斥 | 有公司 VPN 时两者不能同时开 |
| 后台可能被系统回收 | 重新打开应用通常恢复 |
| 权限受系统限制 | 某些桌面端的配置项不适用 |
| TUN 与系统代理的区分不明显 | iOS 上开启连接就是 TUN 形态 |
所以 iOS 用户的重点是规则配置,而不是模式选择。
场景二:Android 上用 sing-box
| 步骤 | 操作 |
|---|---|
| 1 | 从官方仓库或应用商店安装 |
| 2 | 新建远程配置,粘贴订阅 URL |
| 3 | 开启连接,系统弹窗授权 |
| 4 | 把应用加入电池优化白名单 |
| 5 | 验证 |
Android 特有的注意:
| 项目 | 说明 |
|---|---|
| 电池优化会杀后台 | 表现为"用一会儿就断",必须加白名单 |
| 与系统 VPN 互斥 | 同 iOS |
| 分应用代理 | 部分版本支持指定哪些应用走代理 |
| 系统省电策略 | 部分厂商的策略更激进 |
场景三:桌面端命令行内核
| 步骤 | 操作 |
|---|---|
| 1 | 从官方仓库下载对应平台的二进制 |
| 2 | 准备配置文件(JSON) |
| 3 | 用 JSON 校验工具检查语法 |
| 4 | 先用 mixed inbound(混合端口)+ 系统代理测试 |
| 5 | 验证规则全部正确后,再加 TUN inbound |
| 6 | 作为服务运行(各平台方式不同) |
第 4、5 步的顺序很重要:TUN 配错会让整个系统断网,先在混合端口模式下验证成本低得多。
Linux 上的额外注意: 与系统的网络管理服务可能冲突。建议先了解自己发行版的网络管理方式。
场景四:需要最新协议(Hysteria2 / TUIC)
这是选 sing-box 的主要理由之一。
| 协议 | 特点 | 什么时候有优势 |
|---|---|---|
| Hysteria2 | 基于 QUIC(UDP) | 高丢包链路上表现更好 |
| TUIC | 同样基于 QUIC | 同上 |
| VLESS / Trojan | TCP 系 | 网络阻断 UDP 时 |
注意两个方向都可能:
| 网络环境 | 哪类协议更可能通 |
|---|---|
| 阻断 UDP 的网络 | TCP 系 |
| 高丢包链路 | UDP / QUIC 系 |
| 常规家庭宽带 | 两类都通 |
协议不影响速度(除了高丢包下 QUIC 的拥塞控制优势)。决定速度的是线路类型、落地带宽、地区距离。见 协议数据库。
场景五:双机场
| 做法 | 说明 |
|---|---|
在 outbounds 里同时定义两家的节点 | 需要手工合并配置 |
| 建两个 selector:「主力」「备用」 | 按角色分组 |
| 会议 / AI 规则 → 主力的 selector | 关键场景 |
| 下载 / 大流量规则 → 备用的 selector | 省主力流量 |
两家的订阅域名都设为 direct | 任一家节点全失效时两家订阅都能更新 |
final 指向主力,配 urltest 或 fallback | 兜底 |
sing-box 的多出站结构天然适合双机场——因为出站本来就是扁平定义的,不像 Clash 需要合并两份 proxies。
常见配置错误
| 症状 | 最可能的原因 | 怎么修 |
|---|---|---|
| 配置解析失败 | JSON 语法错误(多余逗号、缺引号) | 用 JSON 校验工具检查 |
| 启动失败 | 配置字段名或结构错误 | 看日志的具体报错 |
| 导入订阅后没有节点 | 订阅格式不是 sing-box 格式 | 换格式或换客户端 |
| 全部节点连不上 | 订阅过时 | 手动更新订阅 |
| 国内网站变慢 | 国内域名走了代理,或被远程解析 | 路由规则 + DNS 规则都要配对 |
| 域名规则不生效(TUN 下) | 未启用 fake-ip 与嗅探 | 启用其中之一或两者 |
| 流媒体地区判定不对 | 该域名被本地解析 | DNS 规则改为 detour: 节点 |
| 局域网访问不了 | 缺少局域网直连规则 | 加 ip_cidr 直连 |
| 订阅无法更新 | 订阅域名走了失效节点 | 订阅域名设为 direct |
| 部分流量绕过代理 | IPv6 | strategy 设为 ipv4_only |
| 某个应用异常(TUN 下) | fake-ip 不兼容 | 把它的域名排除 fake-ip |
| 规则看起来对但行为不同 | 照搬了 Clash 的规则 | 按 sing-box 文档重写 |
| 证书错误 | 系统时间错误 | 检查系统时间 |
| 移动端用一会儿就断 | 电池优化 / 后台回收 | 加入白名单(Android) |
排查顺序
sing-box 出问题:
1. 配置能加载吗?
不能 → 看日志的报错;用 JSON 校验工具检查语法
能 → 继续
2. 有节点吗?
没有 → 订阅格式不是 sing-box 格式
有 → 继续
3. 看日志里请求走了哪个出站
├─ 没有这个请求 → 客户端未接管流量(inbound 配置 / 系统代理 / TUN)
├─ 走了 direct 但不该 → 路由规则问题
├─ 走了节点但失败 → 更新订阅 / 换节点
└─ 显示 IP 而非域名 → 启用 fake-ip 或嗅探
4. 国内访问慢?
→ 检查路由规则(是否 direct)**和** DNS 规则(是否本地解析)
→ 两套规则都要配对
5. 全部节点不行?
→ 关闭代理测国内网站(排除本地问题)
→ 见 /guides/timeout常见误判
- sing-box 比 Clash 更快。 两者的速度由线路与节点决定,不由客户端决定。
- Clash 的规则可以直接翻译成 sing-box。 语法与匹配语义都不同,要重写。
- 配置能加载就说明是对的。 JSON 合法不等于逻辑正确,要看日志验证行为。
- DNS 配好路由就自然对了。 两套规则是独立的,都要配。
- TUN 下域名规则自然生效。 需要 fake-ip 或嗅探。
- 不用管 IPv6。 可能造成部分流量绕过代理。
- 订阅转换是无害的工具。 它必须拿到你的凭证才能工作。
- sing-box 一定比 Clash 好。 取决于需求:要成熟生态选 Clash,要新协议与精细控制选 sing-box。
出站组:selector 与 urltest
sing-box 用出站组实现 Clash 策略组的功能,但概念更统一——组本身就是一个出站。
两种主要的组
| 类型 | 行为 | 适合 |
|---|---|---|
selector | 手动选择组内的一个出站 | 关键场景(会议、AI、流媒体) |
urltest | 按延迟自动选择最快的 | 日常浏览 |
为什么关键场景不用 urltest
urltest 按延迟选择,而延迟低不等于好用。
| 事实 | 后果 |
|---|---|
| 延迟低但丢包高是节点超卖的典型特征 | urltest 可能恰好选中最差的节点 |
| 延迟测试通常只做一次请求 | 看不到丢包与抖动 |
所以会议、AI、流媒体这类关键场景用 selector 手动指定,或者用 urltest 但组内只放你验证过的节点。
组的嵌套
出站组可以嵌套(一个组的成员可以是另一个组),这让你能表达"先在 A 组里选,A 组不可用就用 B 组"这类结构。
但不要嵌套太深——排查时很难看清实际走了哪个节点。两层以内是实用的上限。
推荐的组设计
| 组名 | 类型 | 成员 | 被哪些规则指向 |
|---|---|---|---|
| 会议 | selector | 三晚测试丢包 ≈ 0 的香港节点(2 个) | 视频会议域名 |
| AI | selector | 验证通过的新加坡 / 日本节点 | AI 服务域名 |
| 流媒体 | selector | 解锁通过的节点 | Netflix / Disney+ 域名 |
| 大带宽 | selector 或 urltest | 大带宽、低倍率的机房 IP 节点 | YouTube、下载 |
| 默认 | urltest | 延迟较低的一批香港节点 | route.final |
direct | 内置 | — | 国内域名 / IP、订阅域名、局域网 |
block | 内置 | — | 广告规则集(可选) |
关键原则:组里只放验证过的节点。 自动选择与故障转移都只在组内候选之间切换,放进去的节点质量决定了组的下限。
规则集(rule_set)
为什么必须用规则集
国内域名有几万个,不可能手写。 规则集是远程维护的列表,客户端定期更新。
| 常见规则集 | 用途 |
|---|---|
| 国内域名集合 | 国内域名直连 |
| 国内 IP 段集合 | 国内 IP 直连 |
| 广告域名集合 | 拦截(可选) |
| 各类服务的域名集合 | 特定服务分流 |
两种类型
| 类型 | 说明 |
|---|---|
local | 本地文件 |
remote | 远程 URL,定期更新 |
remote 更实用(自动跟随上游更新),但依赖该 URL 的可用性。部分客户端支持配置多个备用源。
性能考虑
| 做法 | 影响 |
|---|---|
| 用规则集 | 匹配结构经过优化,很快 |
| 手写上千条域名 | 线性匹配,可能有感知(尤其移动设备) |
| 规则集数量过多 | 内存占用上升 |
实用建议:用规则集处理大批量域名,手写规则只用于你自己的少数几条特殊需求。
更新的注意
| 项目 | 说明 |
|---|---|
| 更新频率 | 24 小时是合理默认 |
| 更新失败 | 通常使用缓存的旧版本,不影响使用 |
| 不要在关键使用时段更新 | 更新瞬间可能有短暂中断 |
| 源不可用 | 换源 |
名词速查
| 名词 | 含义 |
|---|---|
| inbounds | 流量入口(TUN、混合端口、SOCKS、HTTP) |
| outbounds | 流量出口(节点、选择器、direct、block) |
| selector | 手动选择的出站组(相当于 Clash 的策略组) |
| urltest | 按延迟自动选择的出站组 |
route.rules | 路由规则 |
route.final | 兜底出站 |
rule_set | 规则集(远程维护的域名 / IP 列表) |
dns.rules | DNS 规则(独立于路由规则) |
detour | 指定 DNS server 通过哪个出站查询(控制解析位置) |
strategy | 解析策略(建议 ipv4_only) |
| fake-ip | TUN 下让域名规则生效的机制 |
| 嗅探(sniff) | 从连接握手里提取域名 |
invert | 规则取反,sing-box 的灵活性之一 |
配置验证清单
sing-box 的配置错误常表现为"能跑但行为不对",所以验证特别重要。
配置能加载
- [ ] JSON 语法合法(用校验工具确认)
- [ ] 客户端能正常启动,日志无错误
- [ ]
outbounds里有节点(不为空)
基础连通(先用混合端口 + 系统代理)
- [ ] 能访问境外网站
- [ ] 日志里能看到该请求
- [ ] 日志显示走的是预期的出站
路由规则
- [ ] 访问国内网站,日志显示走
direct - [ ] 局域网 IP 可访问(路由器管理界面能打开)
- [ ] 订阅域名走
direct(测试:关闭代理后仍能更新订阅) - [ ] AI 域名走「AI」组
- [ ] 下载域名走「大带宽」组
- [ ]
route.final指向预期的组
DNS 规则
- [ ] 国内域名解析到国内 IP
- [ ] 境外域名解析到节点所在地区的 IP
- [ ] 订阅域名本地解析
- [ ]
strategy已设(建议ipv4_only)
如果加了 TUN
- [ ] 已启用 fake-ip 或嗅探
- [ ] 日志里显示的是域名而非纯 IP
- [ ] 局域网 + 回环直连规则已配
- [ ] 国内域名 + 国内 IP 直连规则已配
- [ ] 开启后:路由器界面能打开、国内正常、订阅能更新
- [ ] 需要真实 IP 的域名已排除 fake-ip
移动端额外
- [ ] Android:已加入电池优化白名单
- [ ] 确认与系统 VPN 不冲突(不能同时开)
安全
- [ ] 客户端来自项目官方仓库
- [ ] 订阅链接未分享、截图时会遮挡
- [ ] 若用过订阅转换服务,已重置订阅链接
一个最有用的单项检查:关闭代理后能否更新订阅。 能,说明订阅域名的路由与 DNS 都配对了——这意味着你永远不会陷入"节点全失效导致无法更新订阅"的死锁。
从 Clash 迁移到 sing-box
如果你已经有一套 Clash 配置,下面是迁移的思路与坑。
概念映射
| Clash | sing-box | 注意 |
|---|---|---|
proxies | outbounds 里的节点 | 结构不同 |
proxy-groups(select) | outbounds 里的 selector | 基本对应 |
proxy-groups(url-test) | outbounds 里的 urltest | 基本对应 |
proxy-groups(fallback) | urltest 或组嵌套 | 没有完全对应的类型 |
proxy-groups(load-balance) | 需要用其他方式表达 | 无直接对应 |
rules | route.rules | 语义不同 |
MATCH | route.final | 从规则变成独立字段 |
rule-providers | route.rule_set | 格式可能需要转换 |
DIRECT / REJECT | direct / block 出站 | 基本对应 |
dns.nameserver-policy | dns.rules + detour | 表达方式差异较大 |
dns.enhanced-mode: fake-ip | dns.fakeip + DNS 规则 | 结构不同 |
四个必须重写而不是翻译的地方
一、规则的匹配语义。 Clash 是严格自上而下、第一条命中即停;sing-box 支持逻辑组合。机械地逐条翻译可能得到行为不同的结果。
二、DNS 配置。 Clash 的 DNS 分流相对集中在几个字段里;sing-box 是完整的 DNS 规则系统加 detour。这部分建议按 sing-box 文档从头写。
三、fallback 组。 sing-box 没有与 Clash fallback 完全对应的类型,需要用 urltest 或组嵌套来表达类似行为。
四、规则集格式。 Clash 的 rule-providers 与 sing-box 的 rule_set 格式不同,可能需要用官方工具转换或换用 sing-box 格式的源。
迁移的建议顺序
| 顺序 | 做什么 |
|---|---|
| 1 | 先用最小配置跑通:节点 + final + 国内直连 |
| 2 | 验证:境外能访问、国内走 direct |
| 3 | 加 DNS 配置(国内本地 + 境外远程) |
| 4 | 验证:国内域名解析到国内 IP |
| 5 | 逐个加出站组(会议、AI、流媒体、大带宽) |
| 6 | 逐条加规则,每加一条验证一次 |
| 7 | 全部验证通过后,再加 TUN inbound |
| 8 | TUN 下重新验证全部项目 |
"每加一条验证一次"听起来慢,但比一次性搬完再排查快得多——因为 sing-box 的配置错误可能表现为"能跑但行为不对",批量排查很困难。
一个现实的建议
如果你的 Clash 配置已经工作良好,而你没有 sing-box 特有的需求(最新协议、极精细的路由控制),迁移的收益可能不值得成本。
| 该迁移 | 不必迁移 |
|---|---|
| 机场只提供 sing-box 格式 | Clash 配置工作良好 |
| 需要 Hysteria2 / TUIC | 只用常见协议 |
| 需要规则取反与逻辑组合 | 现有规则够用 |
| 愿意写并维护 JSON | 不想折腾 |
本页数据说明
| 内容 | 层级 | 含义 |
|---|---|---|
| 配置结构与字段说明 | 一般性技术参考 | 具体字段与语法以官方文档为准(版本间可能变化) |
| 规则与 DNS 建议 | editorial | 本站方法建议 |
| 站内品牌的订阅格式支持 | 无此字段 | 需向客服确认 |
客户端是免费开源的第三方软件,与机场无关,本站不提供下载。 请从项目的官方代码仓库获取。sing-box 的配置字段在版本间可能变化,本页只说明结构与思路,具体语法请查官方文档。 本页不提供任何规避服务方检测的方法。规则见 免责声明。
一句话总结
sing-box 是跨平台的代理内核与客户端,规则表达能力最灵活、新协议支持通常最快,代价是配置底层(JSON)、门槛高、生态资源少于 Clash 系。配置分四段:inbounds(入口)、outbounds(出口,含节点与选择器)、route(路由规则 + final 兜底)、dns(DNS 规则 + fake-ip)。最关键的两点:DNS 规则与路由规则是两套独立的系统,都要配对(路由决定走不走代理,DNS 决定连到哪个 IP,detour 控制解析位置);Clash 的规则不能逐条照搬(语法与匹配语义不同,sing-box 支持 invert 与逻辑组合)。入门最常见的障碍是机场不提供 sing-box 格式——优先换客户端或换机场,订阅转换服务等同交出凭证。TUN 下必须启用 fake-ip 或嗅探,并配好局域网、国内、订阅域名三条直连规则。
下一步
- 桌面端更简单的选择 → Clash Verge Rev
- 两者的完整对比 → Clash vs sing-box
- 配规则的方法 → 规则分流
- DNS 配置 → DNS 设置
- TUN 模式 → TUN 模式
- 订阅问题 → 订阅链接怎么用 · 订阅更新失败
- 其他客户端 → 客户端总览
相关页面
- 客户端:客户端总览 · Clash Verge Rev · v2rayN · v2rayNG · Shadowrocket
- 教程:规则分流 · DNS 设置 · TUN 模式 · 教程中心
- 对比:Clash vs sing-box
常见问题
sing-box 是什么?
一个跨平台的代理内核与客户端,支持 Windows、macOS、Linux、Android、iOS。它的规则表达能力最灵活、对新协议的支持通常最快,代价是配置更底层(JSON),门槛比 Clash 系高。
sing-box 和 Clash 该选哪个?
桌面端只想用规则分流、不想写底层配置 → Clash Verge Rev(生态最成熟)。需要最新协议、需要极精细的路由控制、愿意写 JSON → sing-box。iOS 上两者都可选。
机场不提供 sing-box 格式怎么办?
三个选择:换用支持机场格式的客户端、换一家提供 sing-box 格式的机场、或用订阅转换(但转换服务必须拿到你的订阅链接,等同交出凭证)。优先前两个。
sing-box 的配置分几部分?
四段:inbounds(入口,如 TUN 或混合端口)、outbounds(出口,即节点与选择器)、route(路由规则,决定流量走哪个出口)、dns(域名解析,含 DNS 规则与 fake-ip)。
为什么 sing-box 的规则不能照搬 Clash 的?
两者的规则语法与匹配语义不同。sing-box 支持逻辑组合(and / or / invert),默认不是严格的自上而下单一语义,而且 DNS 规则与路由规则是两套独立的规则系统。
sing-box 的 TUN 模式怎么让域名规则生效?
启用 fake-ip,或启用嗅探(sniff)从连接握手里提取域名。两者可以同时用,互为补充。不启用任何一个时,程序自行解析后 sing-box 只看到 IP,域名规则不会命中。
sing-box 有图形界面吗?
官方为 iOS、Android、macOS 提供了图形应用;Windows 与 Linux 上更多是命令行内核加第三方图形前端。命令行内核在所有平台都可用。
sing-box 对新协议的支持更好吗?
通常是。Hysteria2、TUIC 这类较新协议在 sing-box 上的支持往往更早、更完整。如果你的机场主推这些协议,sing-box 是合适的选择。