Linux 平台 sing-box 安装与配置教程
1. sing-box 介绍¶
sing-box 是一款开源、跨平台的下一代科学上网与网络代理软件,由社区开发并活跃维护。它以 高性能、模块化、可扩展 为核心设计理念,能够替代 v2ray、xray 等传统代理工具。 相比旧一代软件,sing-box 在架构上更为简洁,支持 多种协议,如 VLESS、VMess、Shadowsocks、Trojan、Hysteria、Naïve 等,并内置 分流、规则匹配、DNS 劫持 等功能,方便用户根据需求灵活配置。
其突出优势在于:
- 高性能 —— 使用 Go 语言编写,内存占用低,启动与连接速度快。
- 跨平台 —— 支持 Linux、Windows、macOS、Android、iOS 等系统,适配性强。
- 强大分流 —— 内置类 Surge/Clash 风格的规则系统,轻松实现按域名、IP、地理位置分流。
- 灵活配置 —— JSON 配置文件清晰易扩展,且不断完善 GUI 客户端(如 NekoBox、SFA、SFM),降低使用门槛。
- 未来导向 —— 原生支持 QUIC、gRPC 等新一代传输协议,并兼容多种加密算法,具备长远发展潜力。
得益于社区生态,sing-box 不仅适合个人用户科学上网,也适合机场主部署作为后端。其高效的网络处理能力和对新协议的快速跟进,使其逐渐成为新一代代理软件的主流选择。
2. sing-box 安装¶
针对不同的操作系统,请参考不同的安装步骤。
2.1. Debian 系列 Linux 系统下载并安装 sing-box¶
对于 debian 系列发行版(Ubuntu, Mint, MX, Kubuntu, Zorin 等等)
2.2. Redhat 系列 Linux 系统下载并安装 sing-box¶
对于 Redhat 系列发行版(Centos, Fedora, AlmaLinux, Rocky Linux 等)
sudo dnf config-manager addrepo --add-repo=https://sing-box.app/sing-box.repo
sudo dnf makecache
sudo dnf install sing-box
# 设置为开机自启动
sudo systemctl enable --now sing-box.service
# 查看服务状态
systemctl status sing-box.service
# 如果启动过程中出现任何错误,查看日志并进行修复
journalctl -u sing-box
如何出现以下错误,需要在sing-box.service service区块添加 Environment="ENABLE_DEPRECATED_SPECIAL_OUTBOUNDS=true" Jan 30 23:36:48 server-0hrxrx.novalocal sing-box[3807]: ERROR[0000] legacy special outbounds is deprecated in sing-box 1.11.0 and will be removed in sing-box 1. Jan 30 23:36:48 server-0hrxrx.novalocal sing-box[3807]: FATAL[0000] to continuing using this feature, set environment variable ENABLE_DEPRECATED_SPECIAL_OUTBOUNDS=true
2.3. Linux 平台和 OpenWrt 上 sing-box 一键安装脚本¶
该脚本从 GitHub 发布中下载并安装最新的软件包,适用于基于 deb 或 rpm 的 Linux 发行版、ArchLinux 和 OpenWrt。
安装正式版
设置为开机启动
2.4. App 平台¶
iOS/macOS/Apple tvOS 用户可以到 app store 中下载(前提是要有美区 id), 也可以使用 HomeBrew 直接安装:
除此之外你也可以直接到 GitHub Releases 页面下载客户端或者命令行版本。
获取美区 id 的三种方式 方式一: 自行注册美区苹果账号
方式二: 使用共享美区账号
- 点击获取美区账号密码
- 复制任意一个 Apple ID 账号与密码复制并粘贴到填写框登录美区苹果账号
- 回到登陆界面,粘贴账号和密码
方式三:购买 Apple ID
移步到 苹果 ID 专卖小店进行购买。
3. Windows 平台¶
Windows 没有图形界面客户端,官方还正在开发中,不过可以直接使用包管理器 Sccop、winget 或者 Chocolatey 安装命令行版本:
# Sccop
$ scoop install sing-box
# Chocolatey
$ choco install sing-box
# winget
$ winget install sing-box
4. 正确使用方式¶
4.1. 方式一:在 支持 sing-box 的 GUI 客户端 里¶
例如:
-
sing-box GUI(新版本)
-
一些 Android / iOS sing-box 客户端
操作:
-
打开客户端
-
找 “从 URL 导入 / 导入远程配置 / 导入订阅”
4.2. 方式二:直接用 sing-box 命令导入 URL¶
把这个链接里的 url 参数拿出来
for Linux
# 下载配置文件
curl -o config.json https://my.your_airports.com/api/v1/client/subscribe?token=xxxxxxxx?flag=sing-box
# 格式化config.json, 方便阅读。
sing-box format -c ./config.json > config_readable.json
# 检查config文件,看是否有任何错误
sing-box check -c config_readable.json
# 运行sing-box
sing-box run -c config_readable.json
- 如果机场支持 sing-box 格式的配置,那么 sing-box check 这一步大概率能顺利通过
- 如果运气好节点都处于健康,一切顺利此时就可以科学上网了
4.3. 开启 Clash API¶
最后的实验性配置用来开启 Clash API。没错,sing-box 是兼容 Clash API 滴!那么我们就可以使用 Clash 的 dashboard 来管理 sing-box 了,以下以 metacubexd 为例,其他如 zashboard 也是类似的配置。
在 config_readable.json 的 experimental 区块添加 clash_api,内容如下:
{
"experimental": {
"cache_file": {
"enabled": true // 启用缓存文件功能。当此项设置为true时,启用 DNS 查询的缓存,以便加快后续相同查询的响应速度。
},
"clash_api": {
"external_controller": "0.0.0.0:9090", // 定义 Clash API 的外部控制器地址。"0.0.0.0:9090" 表示在本机的9090端口上监听外部的连接请求。
"external_ui": "metacubexd", // 指定外部用户界面(UI)的名称。这里的 "metacubexd" 是一个自定义 UI 的名称。
"external_ui_download_url": "https://github.com/MetaCubeX/metacubexd/archive/refs/heads/gh-pages.zip", // 提供外部 UI 的下载 URL。这个 URL 是从 GitHub 上下载 "metacubexd" UI 的压缩包。
"external_ui_download_detour": "select", // 定义下载外部 UI 时使用的转发策略。"select" 表示将通过'select'出口选择转发
"default_mode": "rule" // 设置 Clash API 的默认模式。"rule" 模式意味着流量将根据用户定义的规则进行路由。
}
}
}
