Sing-box 入门指南:一个强大的通用代理平台
摘要
在当今复杂的网络环境中,拥有一个功能强大、灵活且高效的代理工具至关重要。Sing-box 作为一个后起之秀,正迅速成为网络爱好者和专业人士的首选。它是一个通用的代理平台,以其卓越的性能、广泛的协议支持和高度的可定制性而闻名。本指南将带您从零开始,详细了解 Sing-box 的安装、配置和使用,帮助您轻松驾驭这个强大的工具。
什么是 Sing-box?
Sing-box 是一个基于 Go 语言开发的现代化、开源的通用代理平台。您可以将其视为 V2Ray/Xray、Clash、Surge 等工具的有力替代品。它的核心设计理念是提供一个统一的框架,通过模块化的方式支持海量的协议和功能。
主要优势:
- 协议支持广泛:几乎支持所有主流的代理协议,包括 Shadowsocks、VMess、Trojan、VLESS、Hysteria、SOCKS5、HTTP 等。
- 性能卓越:得益于 Go 语言的并发优势和底层优化,Sing-box 在处理高流量和并发连接时表现出色。
- 高度可定制:通过一个 JSON 格式的配置文件,您可以精确控制流量的走向、DNS 解析、分流规则等,实现各种复杂的代理策略。
- 跨平台运行:完美支持 Windows、macOS、Linux、Android 和 iOS,无论您在哪个设备上,都能获得一致的体验。
- 客户端与服务端一体:Sing-box 既可以作为客户端连接远程服务器,也可以自行部署为功能强大的代理服务器。
- 活跃的社区与开发:项目迭代速度快,新功能和性能优化层出不穷。
安装 Sing-box
Sing-box 的安装方式因操作系统而异。最可靠的安装方式始终是参考其官方 GitHub Releases 页面。
- 官方 GitHub 页面: https://github.com/SagerNet/sing-box/releases
Windows
- 从 GitHub Releases 页面下载适用于您系统架构的
...windows-amd64.zip或...windows-arm64.zip压缩包。 - 解压后会得到一个
sing-box.exe文件。 - 您可以将此文件放置在任意目录,并通过命令行
cmd或PowerShell来运行它。为了方便,建议将其所在目录添加到系统的Path环境变量中。
Linux (以 AMD64 为例)
对于 Linux 用户,可以直接下载预编译的二进制文件,这是最简单的方式。
-
下载:
bash
wget https://github.com/SagerNet/sing-box/releases/download/v1.9.0-rc.11/sing-box-1.9.0-rc.11-linux-amd64.tar.gz
(请注意将链接替换为最新的版本) -
解压:
bash
tar -xzf sing-box-1.9.0-rc.11-linux-amd64.tar.gz -
移动到可执行目录:
bash
# 进入解压后的文件夹
cd sing-box-1.9.0-rc.11-linux-amd64
# 移动二进制文件
sudo mv sing-box /usr/local/bin/ -
验证安装:
bash
sing-box version
如果输出了版本号,则表示安装成功。
Android / iOS
在移动平台上,通常使用图形化客户端,这些客户端内置了 Sing-box 核心。
- Android:可以在 Google Play 或 GitHub 上搜索
sing-box for Android(SFA)。 - iOS:在 App Store 中搜索
Sing-box或其他支持导入 Sing-box 配置的客户端。
理解核心配置
Sing-box 的所有功能都通过一个名为 config.json 的文件来定义。理解其核心结构是掌握 Sing-box 的关键。
一个典型的配置文件主要包含以下几个部分:
log: 日志设置,用于调试和监控。dns: DNS 解析设置,可以有效防止 DNS 污染和实现精细化解析。inbounds: 入站连接,定义了流量如何进入 Sing-box。例如,监听一个本地端口作为 SOCKS5 或 HTTP 代理。outbounds: 出站连接,定义了流量如何离开 Sing-box。这里配置您的代理服务器信息(如 VMess、Trojan 服务器),以及direct(直连) 和block(阻止) 等特殊出口。route: 路由规则,这是 Sing-box 的灵魂。它根据域名、IP、地理位置等信息,决定将来自inbounds的流量导向哪个outbounds。
编写您的第一个客户端配置
让我们通过一个实际例子来理解如何配置 Sing-box。假设您有一个 VMess 协议的代理服务器,现在我们来编写一个客户端配置文件,让本地应用通过 Sing-box 走代理。
config.json 示例:
json
{
"log": {
"level": "info",
"timestamp": true
},
"dns": {
"servers": [
{
"tag": "remote-dns",
"address": "8.8.8.8",
"detour": "proxy" // 让DNS查询通过代理,防止污染
},
{
"tag": "local-dns",
"address": "223.5.5.5",
"detour": "direct" // 国内DNS直连
}
],
"rules": [
{
"domain_suffix": [".cn", "geosite:cn"], // 匹配中国域名
"server": "local-dns"
},
{
"outbound": "any", // 其他所有查询
"server": "remote-dns"
}
]
},
"inbounds": [
{
"type": "socks",
"tag": "socks-in",
"listen": "127.0.0.1",
"listen_port": 1080 // 监听本地1080端口作为SOCKS代理
},
{
"type": "http",
"tag": "http-in",
"listen": "127.0.0.1",
"listen_port": 1081 // 监听本地1081端口作为HTTP代理
}
],
"outbounds": [
{
"type": "vmess",
"tag": "proxy", // 这是我们的代理出口
"server": "your_server_address", // 替换为你的服务器地址
"server_port": 443, // 替换为你的服务器端口
"uuid": "your_uuid", // 替换为你的UUID
"security": "auto",
"alter_id": 0,
"transport": {
"type": "ws", // 假设使用WebSocket传输
"path": "/your_path" // 替换为你的WebSocket路径
},
"tls": {
"enabled": true,
"server_name": "your_server_address" // 替换为你的域名
}
},
{
"type": "direct",
"tag": "direct" // 直连出口
},
{
"type": "block",
"tag": "block" // 阻止连接的出口
}
],
"route": {
"rules": [
{
"protocol": ["dns"],
"outbound": "dns-out" // DNS查询流量特殊处理
},
{
"domain_suffix": [".cn", "geosite:cn"], // 中国网站直连
"outbound": "direct"
},
{
"domain": ["geosite:google", "geosite:facebook"], // 访问Google和Facebook走代理
"outbound": "proxy"
},
{
"ip_is_private": true, // 私有地址直连
"outbound": "direct"
}
],
"final": "proxy" // 默认规则,所有未匹配的流量都走代理
}
}
配置说明:
inbounds: 我们创建了两个本地代理入口,一个是 SOCKS5 (1080端口),另一个是 HTTP (1081端口)。您的浏览器或应用程序可以连接这两个端口来使用 Sing-box。outbounds:proxy: 这是核心的代理服务器配置。您需要将your_server_address、your_uuid等占位符替换成您自己的服务器信息。direct: 用于直连国内网站,提高访问速度。block: 用于屏蔽广告或恶意网站。
route: 规则引擎按顺序匹配流量。- 国内域名 (
geosite:cn) 走direct直连。 - 访问 Google 等网站 (
geosite:google) 走proxy代理。 final: 如果以上规则都未匹配,流量将默认走proxy代理。
- 国内域名 (
dns: 我们配置了国内外两个 DNS 服务器,并通过规则让国内域名使用国内 DNS,国外域名使用国外 DNS (并通过代理查询),以达到最佳解析效果。
运行与验证
-
保存配置:将上述内容保存为
config.json文件,并放置在与sing-box.exe相同的目录,或您指定的任意位置。 -
启动 Sing-box:打开命令行工具,执行以下命令:
bash
sing-box run -c /path/to/your/config.json
(如果config.json和sing-box在同一目录,可以直接运行sing-box run) -
配置系统或浏览器代理:
- 将您操作系统的 SOCKS5 或 HTTP 代理设置为
127.0.0.1,端口为1080或1081。 - 或者使用浏览器插件(如 SwitchyOmega)进行配置。
- 将您操作系统的 SOCKS5 或 HTTP 代理设置为
-
验证:访问一个被屏蔽的网站(如 Google),如果能正常打开,说明 Sing-box 已成功运行。再访问一个国内网站(如百度),它应该会快速加载,因为走了直连通道。
进阶功能简介
当您熟悉了基础配置后,可以探索 Sing-box 更强大的功能:
- TUN 模式:在 Linux 或移动平台上,Sing-box 可以创建一个虚拟网卡 (TUN),接管设备的所有流量,实现真正的“全局代理”,无需为每个应用单独配置。
- 规则集 (Rule-set):对于复杂的路由规则,您可以使用
rule-set将大量的域名或 IP 列表分离到单独的文件中,使主配置文件更整洁。 - 服务器部署:您也可以在自己的服务器上配置 Sing-box 作为服务端,提供稳定高效的代理服务。配置方式与客户端类似,只是
inbounds变为接收公网连接的协议(如 VMess),outbounds通常是direct。 - 图形化界面 (GUI):如果您不习惯手写 JSON,社区也提供了一些第三方 GUI 工具,可以帮助您更直观地管理配置和节点。
结语
Sing-box 凭借其强大的功能、卓越的性能和无与伦比的灵活性,无疑是当今最值得学习和使用的代理工具之一。虽然初次接触其 JSON 配置可能会有些许门槛,但一旦掌握了其核心逻辑,您将能解锁前所未有的网络自由度和控制力。希望本篇入门指南能为您打开新世界的大门。
要获取最全面、最权威的信息,请务必常访问 Sing-box 官方文档网站:https://sing-box.sagernet.org/