Sing-box 入门指南:一个强大的通用代理平台 – wiki基地


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 页面

Windows

  1. 从 GitHub Releases 页面下载适用于您系统架构的 ...windows-amd64.zip...windows-arm64.zip 压缩包。
  2. 解压后会得到一个 sing-box.exe 文件。
  3. 您可以将此文件放置在任意目录,并通过命令行 cmdPowerShell 来运行它。为了方便,建议将其所在目录添加到系统的 Path 环境变量中。

Linux (以 AMD64 为例)

对于 Linux 用户,可以直接下载预编译的二进制文件,这是最简单的方式。

  1. 下载
    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

    (请注意将链接替换为最新的版本)

  2. 解压
    bash
    tar -xzf sing-box-1.9.0-rc.11-linux-amd64.tar.gz

  3. 移动到可执行目录
    bash
    # 进入解压后的文件夹
    cd sing-box-1.9.0-rc.11-linux-amd64
    # 移动二进制文件
    sudo mv sing-box /usr/local/bin/

  4. 验证安装
    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" // 默认规则,所有未匹配的流量都走代理
}
}

配置说明:

  1. inbounds: 我们创建了两个本地代理入口,一个是 SOCKS5 (1080 端口),另一个是 HTTP (1081 端口)。您的浏览器或应用程序可以连接这两个端口来使用 Sing-box。
  2. outbounds:
    • proxy: 这是核心的代理服务器配置。您需要将 your_server_addressyour_uuid 等占位符替换成您自己的服务器信息。
    • direct: 用于直连国内网站,提高访问速度。
    • block: 用于屏蔽广告或恶意网站。
  3. route: 规则引擎按顺序匹配流量。
    • 国内域名 (geosite:cn) 走 direct 直连。
    • 访问 Google 等网站 (geosite:google) 走 proxy 代理。
    • final: 如果以上规则都未匹配,流量将默认走 proxy 代理。
  4. dns: 我们配置了国内外两个 DNS 服务器,并通过规则让国内域名使用国内 DNS,国外域名使用国外 DNS (并通过代理查询),以达到最佳解析效果。

运行与验证

  1. 保存配置:将上述内容保存为 config.json 文件,并放置在与 sing-box.exe 相同的目录,或您指定的任意位置。

  2. 启动 Sing-box:打开命令行工具,执行以下命令:
    bash
    sing-box run -c /path/to/your/config.json

    (如果 config.jsonsing-box 在同一目录,可以直接运行 sing-box run)

  3. 配置系统或浏览器代理

    • 将您操作系统的 SOCKS5 或 HTTP 代理设置为 127.0.0.1,端口为 10801081
    • 或者使用浏览器插件(如 SwitchyOmega)进行配置。
  4. 验证:访问一个被屏蔽的网站(如 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/

滚动至顶部