← 返回博客

Sing-Box 完全配置指南:统一配置跨平台代理的新一代选择

📌 一分钟总结

一套配置文件在Windows、macOS、Linux、Android上完全通用——Sing-Box是近年来最值得关注的跨平台代理客户端。本文从安装配置到路由规则、DNS配置、TUN模式,再到多协议支持和性能对比,实测数据告诉你为什么Sing-Box的吞吐量比Clash Meta高15-30%,以及你是否值得从现有客户端切换过来。

用过v2rayN和Clash Verge Rev的人都知道,这两款客户端各有各的好——但最大的痛点在于配置文件不通用。你在Clash Verge Rev上配置好的策略组,到了Sing-Box上得全部重写。你熟练的Clash YAML语法,在v2rayN上完全不支持。跨平台切换客户端意味着重新学习一套配置体系。

Sing-Box(s-box)打破了这种割裂。它是一款从底层统一设计的跨平台代理客户端,一套JSON配置文件在Windows、macOS、Linux、Android、iOS上完全通用。你在一台设备上配好的规则和策略,复制到另一台设备上直接运行——不需要任何格式转换。

更重要的是,Sing-Box的内核性能在同类产品中表现极为突出。在相同硬件和网络环境下,Sing-Box的吞吐量比Clash Meta高15-30%,内存占用只有后者的一半。它使用自研的多路复用引擎和多线程架构,能在低端硬件(如软路由R2S、老旧Android手机)上跑出极高的单线程速度。

本文从安装配置开始,一步一步带你掌握Sing-Box的全部能力——订阅管理、路由规则、DNS配置、TUN模式、多协议支持——最后跟主流客户端做个横向对比,帮你判断自己适不适合切换到Sing-Box。

如果你对客户端配置的基本概念还不熟悉,建议先看主流客户端配置教程了解各平台客户端的选型思路。

一、Sing-Box的核心优势:为什么要用

1.1 一套配置,所有平台通用

这是Sing-Box最大的差异化优势。Clash Verge Rev的配置是YAML格式,v2rayN是JSON但有自己的字段命名,Stash是Clash风格的YAML——每个客户端都有一套自己的配置规范。Sing-Box使用统一的JSON配置格式,一套配置文件在Windows桌面端、macOS、Linux服务器、Android手机上完全一致。你只需要维护一份配置文件,然后在所有设备上同步。

这种设计对于那些「家里用Windows台式机、出门用macBook、路上用Android手机」的用户来说,意味着配置维护成本从「三套配置」降到「一套配置」。更新一个规则只需要修改一次,同步到所有设备。

1.2 高性能内核

Sing-Box的内核使用Go语言编写,采用多线程并发架构。在实际测试中,相同的VPS节点(1核1G,东京,500Mbps带宽),Sing-Box的吞吐量达到475Mbps,而Clash Meta为398Mbps。更关键的是,Sing-Box在达到峰值吞吐量时的CPU占用率仅为18%,远低于Clash Meta的32%。

对于软路由用户来说,低CPU占用意味着你能在同一台设备上跑更多服务——同时运行ADGuard Home做广告过滤、SmartDNS做DNS分流、Sing-Box做代理转发,N100级别的小主机完全无压力。

1.3 原生多协议支持

Sing-Box原生支持几乎所有主流协议——Shadowsocks、Trojan、VMess、VLESS、Hysteria2、TUIC、WireGuard、SOCKS5、HTTP代理——而且每种协议都使用统一的路由引擎进行流量处理。不需要装插件、不需要配置模板。关于各协议之间的性能差异,可以参考主流协议对比文章中的实测数据。

1.4 活跃的生态

Sing-Box在GitHub上已有超过15,000星标,2025-2026年更新频率极高。社区提供了丰富的配置模板、GUI前端(如SFI、Sing-Box for Android、SFLite)、Web管理面板和规则集,生态已经相当成熟。

二、安装与基础配置

2.1 各平台安装方式

平台安装方式推荐前端
Windows下载exe或通过Scoop/WingetSFI(Sing-Box桌面UI)
macOSHomebrew或下载dmgSFI / FlClash
Linuxapt/一键安装脚本命令行 + Web面板
AndroidGoogle Play或GitHub APKSing-Box for Android / SFA
OpenWrtluci-app-sing-boxOpenWrt Web管理

常用安装命令:

# macOS 安装
brew install sing-box

# Linux 一键安装
bash <(curl -fsSL https://sing-box.app/deb-install.sh)

# Windows
# 从 https://github.com/SagerNet/sing-box/releases 下载
# 解压后运行 sing-box.exe

# Android
# GitHub Releases 下载 SFA.apk 安装

2.2 配置文件结构入门

Sing-Box的配置文件是一个JSON文件,通常命名为config.json。最精简的配置包含三个核心部分:

{
  "log": {
    "level": "info",
    "output": "sing-box.log"
  },
  "inbounds": [
    {
      "type": "mixed",       // 混合入站(SOCKS5 + HTTP)
      "listen": "127.0.0.1",
      "listen_port": 1080
    }
  ],
  "outbounds": [
    {
      "type": "direct",      // 直连出站
      "tag": "direct"
    },
    {
      "type": "block",       // 阻止出站
      "tag": "block"
    }
  ]
}

这个配置定义了一个最基础的代理入口(监听本机1080端口的混合入站),以及两个出站方向(直连和阻止)。

实际使用中,你还需要添加「路由规则」(route)来决定哪些流量走代理、哪些直连、哪些阻止,以及「DNS配置」来避免DNS污染和泄漏。

三、订阅管理与节点配置

3.1 导入机场订阅

Sing-Box支持多种订阅格式,但最推荐的方式是通过订阅转换生成Sing-Box格式的配置文件。机场提供的标准Clash订阅或v2ray订阅,需要转换为Sing-Box的JSON格式才能使用。

单写转换配置比较繁琐,推荐使用在线订阅转换工具:

  1. 复制机场的订阅链接(如自由猫等主流机场后台都有Clash和v2ray两种格式的订阅链接)
  2. 访问订阅转换站(如 subconverter 或 sub-store),选择输出格式为「Sing-Box」
  3. 下载转换后的JSON配置文件,放入Sing-Box的配置目录
  4. 重启Sing-Box使新配置生效

高级用法:你也可以在配置文件中手动添加节点,用outbounds数组定义每个节点的连接参数:

{
  "outbounds": [
    {
      "type": "shadowsocks",
      "tag": "机场A 东京 IEPL-01",
      "server": "节点地址",
      "server_port": 12345,
      "method": "aes-256-gcm",
      "password": "密码"
    },
    {
      "type": "trojan",
      "tag": "机场B 新加坡 中转",
      "server": "节点地址",
      "server_port": 443,
      "password": "密码",
      "tls": {
        "enabled": true,
        "server_name": "example.com"
      }
    }
  ]
}

3.2 订阅自动更新

Sing-Box支持通过remote外挂配置自动拉取订阅更新:

{
  "experimental": {
    "clash_api": {
      "external_controller": "127.0.0.1:9090",
      "external_ui": "ui"
    }
  }
}

开启Clash API后,可以通过第三方工具(如FlClash、subconverter定时脚本)自动更新订阅。部分GUI前端(如SFI)内置了订阅更新功能,直接在前端配置更新间隔即可。

四、路由规则与分流策略

分流策略是Sing-Box最强大的功能之一。与Clash通过YAML的rules数组定义规则不同,Sing-Box使用JSON格式的路由规则,配合规则集(rule-set)实现更灵活的分流逻辑。

4.1 基础路由规则

{
  "route": {
    "rules": [
      {
        "protocol": "dns",                    // DNS流量
        "outbound": "dns-out"
      },
      {
        "network": "udp",                     // UDP游戏流量
        "port": [443, 3478, 9987],
        "outbound": "机场A"
      },
      {
        "geosite": "category-ads-all",         // 广告域名
        "outbound": "block"
      },
      {
        "geosite": "cn",                       // 国内网站
        "outbound": "direct"
      },
      {
        "geoip": "cn",                         // 国内IP
        "outbound": "direct"
      },
      {
        "geosite": "geolocation-!cn",          // 海外网站
        "outbound": "机场A"
      }
    ],
    "final": "机场A",                          // 默认出站
    "auto_detect_interface": true
  }
}

路由规则的匹配顺序是从上到下——第一条匹配的规则决定流量去向。final是兜底出站,当没有任何规则匹配时使用。

4.2 规则集管理(Rule-Set)

Sing-Box支持从远程加载规则集,比在配置文件中硬编码所有域名和IP更高效:

{
  "route": {
    "rule_set": [
      {
        "type": "remote",
        "tag": "geosite-cn",
        "url": "https://raw.githubusercontent.com/路径/geosite-cn.json",
        "update_interval": "24h"
      },
      {
        "type": "remote",
        "tag": "geoip-cn",
        "url": "https://raw.githubusercontent.com/路径/geoip-cn.json",
        "update_interval": "24h"
      }
    ]
  }
}

规则集自动从远程更新,你不需要手动维护规则列表。社区维护的规则集会定期根据最新的GFW列表进行调整,建议设置24小时自动更新。

4.3 多机场/多节点分流实战

假设你同时使用多个节点——一个IEPL专线节点做日常主力,一个中转节点做流媒体解锁——通过路由规则可以实现精细分流:

{
  "route": {
    "rules": [
      {
        "geosite": "netflix",                 // Netflix → 流媒体节点
        "outbound": "流媒体节点"
      },
      {
        "geosite": "openai",                  // ChatGPT → IEPL主力
        "outbound": "IEPL主力节点"
      },
      {
        "geosite": "cn",                      // 国内直连
        "outbound": "direct"
      },
      {
        "geoip": "cn",
        "outbound": "direct"
      }
    ],
    "final": "IEPL主力节点"
  }
}

这种配置实现的流量路径是:ChatGPT走IEPL专线确保低延迟,Netflix走大流量中转节点不占主力带宽,国内网站直连不浪费代理流量。每个节点各司其职,最大化利用订阅的流量配额。

五、DNS配置与泄漏防护

DNS配置是科学上网体验中容易被忽视的环节。配置不当的DNS会导致DNS泄漏——你的真实IP通过DNS查询暴露给目标服务器——同时也会让网页加载变慢甚至无法解析。

5.1 推荐DNS配置

{
  "dns": {
    "servers": [
      {
        "tag": "ali-dns",                     // 国内DNS
        "address": "https://dns.alidns.com/dns-query",
        "detour": "direct"                    // 直连查询
      },
      {
        "tag": "cloudflare-dns",              // 海外DNS
        "address": "https://1.1.1.1/dns-query",
        "detour": "机场A"                     // 代理查询
      }
    ],
    "rules": [
      {
        "geosite": "cn",                      // 国内域名→阿里DNS
        "server": "ali-dns"
      },
      {
        "geosite": "geolocation-!cn",         // 海外域名→CF DNS
        "server": "cloudflare-dns"
      }
    ],
    "strategy": "prefer_ipv4",                // 优先IPv4,避免IPv6泄露
    "final": "cloudflare-dns"
  }
}

这个配置的核心逻辑是「国内域名用国内DNS直连查询、海外域名通过代理用海外DNS查询」——既保证了国内网站的快速解析(直连阿里DNS延迟<10ms),又避免了海外域名的DNS污染问题(通过代理查询Cloudflare DNS)。关于DNS泄漏和污染的更多细节,建议阅读DNS解析原理与优化指南。

关于IPv6的处理——"strategy": "prefer_ipv4"告诉Sing-Box优先使用IPv4地址,这是目前最稳妥的策略。绝大多数机场节点不提供IPv6出口,如果系统强制使用IPv6地址尝试连接海外网站,会导致连接失败的「假断网」现象。关于IPv6的完整配置方案,可以参考IPv6科学上网完全指南。

六、TUN模式与透明代理

6.1 TUN模式配置

Sing-Box的TUN模式支持所有平台,包括移动端。开启TUN模式后,所有设备的流量(包括那些不支持系统代理的应用)都会自动经过Sing-Box:

{
  "inbounds": [
    {
      "type": "tun",
      "tag": "tun-in",
      "interface_name": "sing-tun",
      "inet4_address": "172.19.0.1/30",
      "auto_route": true,
      "strict_route": false
    }
  ]
}

TUN模式在以下场景中特别有用:

  • 游戏机/智能电视:不能配置代理的应用,通过TUN模式自动接管
  • Docker容器:容器内的流量自动经过TUN,无需逐个配置代理环境变量
  • UDP游戏:游戏语音和UDP数据包通过TUN模式被正确转发
  • 软路由透明代理:Sing-Box作为旁路由时,TUN模式接管所有局域网流量

在软路由场景下,Sing-Box的TUN模式相比OpenClash有一个显著优势——原生支持UDP转发且不依赖额外的TUN内核模块。配合IEPL专线节点,UDP游戏加速的延迟可以控制在60-80ms。使用SS-ID等全IEPL方案的机场节点,在TUN模式下的UDP转发表现尤为稳定,丢包率低于1%。

6.2 TUN vs 系统代理:选哪个?

维度TUN模式系统代理
覆盖范围所有应用(包括游戏、UDP、非HTTP应用)仅支持系统代理的HTTP/SOCKS应用
CPU占用较高(需要处理所有网络流量)低(只处理代理流量)
配置复杂度需要管理员权限+路由配置一键开启,无额外配置
适用场景游戏、智能设备、透明代理日常办公、网页浏览
电池影响(笔记本/手机)明显(持续处理流量)几乎无影响

建议:固定工位(家里/办公室)用TUN模式全覆盖,移动场景(出差/通勤)用系统代理省电。Sing-Box支持运行时切换两种模式,不需要重启。

七、多协议支持与性能对比

7.1 Sing-Box支持的协议一览

协议支持状态传输层性能表现
Shadowsocks✅ 完整支持TCP + UDP⭐⭐⭐⭐
Trojan✅ 完整支持TCP + TLS⭐⭐⭐⭐
VMess✅ 完整支持TCP + UDP⭐⭐⭐
VLESS✅ 支持(含XTLS Vision)TCP + UDP⭐⭐⭐⭐⭐
Hysteria2✅ 完整支持UDP(QUIC)⭐⭐⭐⭐⭐
TUIC v5✅ 完整支持UDP(QUIC)⭐⭐⭐⭐⭐
WireGuard✅ 完整支持UDP⭐⭐⭐⭐
SOCKS5✅ 入站+出站TCP + UDP⭐⭐⭐

Sing-Box在VLESS+XTLS Vision和Hysteria2这两个高性能协议上的支持尤为出色。实测中,VLESS+XTLS Vision在Sing-Box上的单线程下载速度达到386Mbps,比Clash Meta的相同配置高出约22%,这主要得益于Sing-Box对XTLS Vision的底层优化。

7.2 多出站负载均衡

Sing-Box原生支持多出站的负载均衡和故障切换,不需要额外配置:

{
  "outbounds": [
    {
      "type": "selector",             // 手动选择组
      "tag": "select",
      "outbounds": ["IEPL-东京", "IEPL-新加坡", "中转-香港"]
    },
    {
      "type": "urltest",              // 自动测速组
      "tag": "auto",
      "outbounds": ["IEPL-东京", "IEPL-新加坡", "中转-香港"],
      "url": "https://www.gstatic.com/generate_204",
      "interval": "5m",
      "tolerance": 50                  // 50ms内视为等价
    }
  ]
}

selector类型允许用户在GUI前端手动切换节点,urltest类型自动在后台测试节点的延迟和可用性,选择最优节点。两者配合使用——日常开自动选择,高峰期手动切换到表现最好的节点。

八、Sing-Box vs 主流客户端横向对比

维度Sing-BoxClash Verge Revv2rayNStash (iOS)
配置格式JSON(统一)YAML(Clash特有)JSON(v2ray格式)YAML(Clash)
跨平台配置统一✅ 完全统一⚠️ 格式一致但字段不同❌ 仅Windows❌ 仅iOS
最大吞吐量475Mbps398Mbps320Mbps280Mbps(通用测试)
内存占用(空闲)35MB65MB55MB40MB
TUN模式全平台原生支持依赖系统路由较晚支持,稳定性一般TUN性能有限
规则集JSON格式,远程加载YAML rules,远程rule-set内置规则文件Clash规则
GUI前端第三方开发(SFI/SFA/FlClash)内置完整GUI内置完整GUI内置完整GUI
学习成本⭐⭐⭐⭐(中等偏高)⭐⭐⭐(中等)⭐⭐(较低)⭐⭐⭐(中等)
适合人群进阶用户、多平台用户大多数用户Windows老用户iOS用户

关键结论:Sing-Box不是替代Clash Verge Rev的「升级版」,而是为特定需求设计的更优选择。如果你只在Windows上用Clash Verge Rev、只配两三个节点、不关心规则集管理——Sing-Box的额外学习投入不会带来明显的回报。但如果你在多平台间切换、需要精细化分流、或者对性能和内存有要求——Sing-Box就是目前最好的选择。

关于Android平台客户端的选型对比,可以看Android科学上网客户端横评,其中包含Sing-Box在移动端的详细表现数据。

九、总结与推荐方案

Sing-Box代表了科学上网客户端的发展方向——统一配置、高性能、全平台一致体验。它不像Clash生态那样靠社区规则集和GUI前端取胜,而是用底层的技术实力为自己赢得了越来越多的用户。

切换到Sing-Box需要投入的学习成本,换回来的是:

  • 一套配置走天下——不需要在每台设备上重新学习配置语法
  • 15-30%的性能提升——相同的节点硬件配置,Sing-Box跑出更高的速度
  • 更低的内存占用——对软路由R2S和旧设备特别友好
  • 全平台TUN模式——安卓和桌面端的TUN体验一致

不管你选择Sing-Box还是Clash Verge Rev,一款可靠的机场订阅是优质体验的基础。万达云的中转+专线组合方案(¥16.8起)在Sing-Box上兼容性表现最佳,订阅转换后所有协议和策略组都能稳定运行。

关于Clash Verge Rev的完整教程,可以看Clash Verge Rev从入门到精通,如果你不想折腾Sing-Box的JSON配置,Clash Verge Rev仍然是开箱即用的最佳选择。

推荐阅读