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/) 翻翻,写得挺详细的。就这样,祝上网愉快。