sing-box
> sing-box — 通用代理工具,统一配置、跨平台运行,解决多端代理管理混乱问题。
---
先唠两句。玩代理的朋友应该都有过这种体验:电脑用 Clash,手机用 Shadowrocket,路由器又刷个 OpenWrt 跑 PassWall,配置格式各不相同,规则同步全靠手搓,改个节点得在三个设备上重复劳动。我去年折腾了一圈,最后把所有设备都换成了 sing-box,世界清净了。
sing-box 是什么?简单说,它是一个用 Go 写的通用代理内核,支持 Vmess、Vless、Trojan、Shadowsocks、Hysteria2、WireGuard 等几乎所有主流协议,而且它不绑定任何图形界面,纯配置文件驱动。这意味着你可以把同一份配置丢到 Windows、macOS、Linux、Android、iOS 甚至路由器上,行为完全一致。它解决的核心问题就是:**一套配置,全端通用,规则逻辑统一,不再为每个客户端单独维护一套规则集**。
另外,它的性能很能打,内存占用比同类内核低不少,规则引擎也够灵活,支持 GEOIP、GEOSITE、DOMAIN 关键字、正则表达式等,还能做复杂的分流(比如直连、代理、拦截)。对于喜欢折腾的人来说,它甚至支持多出站负载均衡、故障转移、DNS 嗅探、TUN 虚拟网卡模式(全局接管流量,不需要设置系统代理)。
---
## 下载方式
官方发布页在 GitHub,但国内访问可能慢,我建议直接去官网下载:
[官网下载页面](https://sing-box.sagernet.org/zh-cn/download/)
这里能看到各平台预编译的二进制包,Windows 有 exe,macOS 有 pkg 和 zip,Linux 有 deb/rpm/静态二进制,Android 有 apk,iOS 有 App Store 版本(叫 sing-box,付费的,但值得)。
如果你喜欢命令行,也可以用包管理器:
- macOS: `brew install sing-box`
- Arch Linux: `pacman -S sing-box`
- Debian/Ubuntu: 添加官方仓库后 `apt install sing-box`
---
## 安装方法
以最常见的 Linux 服务器和 Windows 为例。
**Linux(Debian/Ubuntu)**:
```bash
# 下载最新版(去官网复制对应架构的链接)
wget https://github.com/SagerNet/sing-box/releases/download/v1.9.0/sing-box_1.9.0_linux_amd64.tar.gz
tar -xzf sing-box_1.9.0_linux_amd64.tar.gz
sudo mv sing-box /usr/local/bin/
sing-box version
```
**Windows**:下载 zip 解压,把 sing-box.exe 放到一个固定目录(比如 `C:\sing-box\`),然后打开 CMD 或 PowerShell 运行:
```powershell
cd C:\sing-box
.\sing-box.exe run -c config.json
```
建议把配置文件和 exe 放一起,方便管理。
---
## 基础使用教程
sing-box 的核心就是 `config.json`。新手不用怕,我给你们一个最基础的模板,跑起来再慢慢改。
假设你有一个 Vless + Reality 的节点(现在最流行的协议),配置大概长这样:
```json
{
"log": { "level": "info" },
"inbounds": [
{
"type": "mixed",
"listen": "127.0.0.1",
"listen_port": 1080,
"users": []
}
],
"outbounds": [
{
"type": "vless",
"server": "你的服务器IP",
"server_port": 443,
"uuid": "你的UUID",
"flow": "xtls-rprx-vision",
"tls": {
"enabled": true,
"server_name": "你的伪装域名",
"utls": { "enabled": true, "fingerprint": "chrome" }
},
"packet_encoding": "xudp"
},
{
"type": "direct",
"tag": "direct"
}
],
"route": {
"rules": [
{
"rule_set": ["geosite-cn"],
"outbound": "direct"
}
],
"rule_set": [
{
"tag": "geosite-cn",
"type": "remote",
"format": "binary",
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-cn.srs"
}
]
}
}
```
这个配置做了几件事:
1. 开启一个 `mixed` 入站,监听 1080 端口,HTTP 和 SOCKS5 都能用。
2. 出站默认走 Vless 代理。
3. 路由规则:访问中国域名(geosite-cn)时直连,其他走代理。
保存为 `config.json`,然后运行:
```bash
sing-box run -c config.json
```
看到 `start` 日志就说明成功了。把系统代理或浏览器代理设为 `127.0.0.1:1080` 就能用。
---
## 进阶技巧
**1. TUN 模式(全局接管)**
不想手动设置代理?用 TUN。在 inbounds 里加一个:
```json
{
"type": "tun",
"auto_route": true,
"strict_route": true,
"stack": "system"
}
```
这样 sing-box 会创建一个虚拟网卡,所有流量自动走规则,连游戏、命令行、某些不认代理的软件都能覆盖。Windows 上需要管理员权限运行,macOS 需要授权网络扩展。
**2. 多节点负载均衡**
如果你有多个机场或自建节点,可以配置 `urltest` 出站,自动选延迟最低的:
```json
{
"type": "urltest",
"tag": "auto",
"outbounds": ["proxy1", "proxy2", "proxy3"],
"url": "https://www.gstatic.com/generate_204",
"interval": "5m"
}
```
然后在路由规则里把默认出站改成 `auto` 即可。
**3. 规则集离线缓存**
远程规则集每次启动都会拉取,慢。可以下载 `.srs` 文件到本地,然后改成 `"type": "local"`,路径指向本地文件,启动秒开。
**4. 配置热重载**
改完配置不用重启,直接发 `SIGHUP` 信号(Linux)或执行 `sing-box check -c config.json` 验证后,再 `sing-box reload`(需开启 API 服务)。这个对长期运行的路由器特别友好。
---
## 最后说点感受
sing-box 的上手曲线比 Clash 陡一点,因为它没有默认 GUI,但一旦你习惯了 JSON 配置,你会发现它的灵活性和一致性是其他工具比不了的。尤其是你有多台设备的时候,只要维护一份配置,用 git 管理版本,改个节点推送到所有设备,那种掌控感很舒服。
如果你现在还在用 Clash,可以试试把它的配置转换成 sing-box 格式(官方有转换工具),或者直接手动写一份。花一晚上折腾,后面能省很多事。
有问题可以去 [官方文档](https://sing-box.sagernet.org/zh-cn/) 翻翻,写得挺详细的。就这样,祝上网愉快。