Sing-box 教程:新手入门到高级应用详解
Sing-box 是一款功能强大的网络代理工具,以其高性能、多协议支持和灵活的配置而著称。它不仅支持常见的 Shadowsocks、VMess、Trojan 等协议,还提供了诸如 XTLS、Reality 等高级功能,使其在穿透复杂网络环境、保护隐私方面表现出色。 本文将从新手入门到高级应用,详细介绍 Sing-box 的使用方法,帮助你掌握这款强大的工具。
一、 Sing-box 简介
Sing-box 采用 Golang 编写,拥有跨平台特性,可以在 Windows、macOS、Linux 以及 Android 等平台上运行。它的主要特点包括:
- 多协议支持: 涵盖 Shadowsocks、VMess、Trojan、SOCKS5、HTTP(S) 等主流代理协议。
- 高性能: 基于 Golang 语言的优化,提供出色的连接速度和稳定性。
- 灵活配置: 通过 JSON 文件进行配置,可定制各种网络策略和规则。
- 高级功能: 支持 XTLS、Reality、mKCP 等高级协议和技术,可有效抵抗流量审查。
- 流量控制: 可以进行流量统计、策略路由、负载均衡等精细化控制。
- 可扩展性: 易于集成其他插件和模块,实现更多功能。
二、 Sing-box 安装与配置
-
下载与安装:
- 访问 Sing-box 的 GitHub 发布页面(搜索 “sing-box github releases”),根据你的操作系统和架构下载对应的预编译二进制文件。
- 解压下载的文件,通常会包含一个
sing-box
可执行文件和一个config.json
配置文件模板。 - Windows: 将
sing-box.exe
文件放在一个方便访问的目录下,例如C:\Sing-box
。 -
macOS/Linux: 将
sing-box
文件移动到/usr/local/bin
目录下,并赋予执行权限:bash
sudo mv sing-box /usr/local/bin/
sudo chmod +x /usr/local/bin/sing-box
-
配置文件详解 (config.json):
config.json
是 Sing-box 的核心配置文件,用于定义代理服务器、路由规则、日志等参数。下面是一个简单的配置示例:json
{
"log": {
"level": "info",
"output": "console"
},
"inbounds": [
{
"tag": "socks-inbound",
"type": "socks",
"listen": "127.0.0.1",
"listen_port": 10808,
"sniff": true,
"sniff_override": {
"tls": false,
"http": false
}
},
{
"tag": "http-inbound",
"type": "http",
"listen": "127.0.0.1",
"listen_port": 10809
}
],
"outbounds": [
{
"tag": "proxy-outbound",
"type": "vmess",
"server": "your_server_address",
"server_port": 12345,
"uuid": "your_uuid",
"alter_id": 64,
"security": "auto",
"network": "tcp",
"tls": false,
"tls_allow_insecure": true,
"skip_cert_verify": true
},
{
"tag": "direct-outbound",
"type": "direct"
},
{
"tag": "block-outbound",
"type": "block"
}
],
"route": {
"rules": [
{
"type": "domain",
"domain": [
"geosite:category-ads-all"
],
"outbound": "block-outbound"
},
{
"type": "domain",
"domain": [
"geosite:cn"
],
"outbound": "direct-outbound"
},
{
"type": "default",
"outbound": "proxy-outbound"
}
],
"auto_detect_interface": true
}
}log
: 定义日志级别和输出位置。level
可以设置为 “info”、”debug”、”warning”、”error” 等。output
可以设置为 “console” (控制台) 或文件路径。inbounds
: 定义本地监听端口。tag
: 入站规则的唯一标识符。type
: 入站协议类型,可以是 “socks” (SOCKS5 代理)、”http” (HTTP 代理) 等。listen
: 监听地址,通常为127.0.0.1
(本地回环地址)。listen_port
: 监听端口。sniff
: 是否开启流量嗅探,如果开启,Sing-box 会尝试自动识别流量类型。sniff_override
: 用于覆盖默认的嗅探行为,例如禁用 TLS 和 HTTP 嗅探。
outbounds
: 定义出口代理服务器。tag
: 出站规则的唯一标识符。type
: 出站协议类型,例如 “vmess”、”trojan”、”shadowsocks” 等。server
: 服务器地址。server_port
: 服务器端口。uuid
(VMess): VMess 协议的 UUID。alter_id
(VMess): VMess 协议的 AlterID。security
(VMess): VMess 协议的加密方式,例如 “auto”、”aes-128-gcm”、”chacha20-poly1305” 等。network
(VMess): VMess 协议的传输协议,例如 “tcp”、”kcp”、”ws” 等。tls
: 是否启用 TLS 加密。tls_allow_insecure
: 是否允许不安全的 TLS 连接 (跳过证书验证)。skip_cert_verify
: 与tls_allow_insecure
类似,跳过证书验证。direct
: 直接连接,不通过任何代理。block
: 阻止连接。
route
: 定义路由规则,决定流量如何选择出口代理。rules
: 路由规则列表。type
: 规则类型,可以是 “domain” (域名)、”ip” (IP 地址)、”port” (端口) 等。domain
: 域名列表,可以使用域名列表文件,例如 “geosite:cn” (中国域名列表)。outbound
: 匹配规则后使用的出口代理的tag
。auto_detect_interface
: 是否自动检测网络接口,以便更好地进行路由。
-
启动 Sing-box:
- 打开终端 (Windows 的命令提示符或 PowerShell,macOS/Linux 的 Terminal)。
- 导航到包含
sing-box
可执行文件和config.json
文件的目录。 -
运行以下命令启动 Sing-box:
bash
sing-box run -c config.json如果一切正常,你将看到 Sing-box 的日志输出,表明它正在运行。
-
设置系统代理:
- Windows:
- 打开 “设置” -> “网络和 Internet” -> “代理”。
- 在 “手动设置代理” 下,启用 “使用代理服务器”。
- 在 “地址” 中输入
127.0.0.1
,在 “端口” 中输入你设置的 SOCKS5 代理端口 (例如 10808)。
- macOS:
- 打开 “系统偏好设置” -> “网络”。
- 选择你正在使用的网络连接,然后点击 “高级…”。
- 切换到 “代理” 选项卡。
- 勾选 “SOCKS 代理”,在 “SOCKS 代理服务器” 中输入
127.0.0.1
,在 “端口” 中输入你设置的 SOCKS5 代理端口 (例如 10808)。
- Linux:
- 不同的 Linux 发行版设置代理的方式可能有所不同。你可以使用
gsettings
命令或在图形界面中进行设置。 例如,在 GNOME 桌面环境下,你可以打开 “设置” -> “网络” -> “网络代理”,选择 “手动”,然后输入 SOCKS5 代理服务器地址和端口。
- 不同的 Linux 发行版设置代理的方式可能有所不同。你可以使用
- Windows:
-
验证代理是否生效:
- 打开浏览器,访问
https://www.whatismyip.com/
或类似的网站。 - 如果显示的 IP 地址是你的代理服务器的 IP 地址,则说明代理设置已成功。
- 打开浏览器,访问
三、 常用协议配置示例
-
VMess:
json
{
"tag": "vmess-outbound",
"type": "vmess",
"server": "your_server_address",
"server_port": 12345,
"uuid": "your_uuid",
"alter_id": 64,
"security": "auto",
"network": "tcp",
"tls": false,
"tls_allow_insecure": true,
"skip_cert_verify": true
}- 替换
your_server_address
、12345
和your_uuid
为你的 VMess 服务器信息。 security
可以设置为 “auto” (自动选择加密方式) 或指定加密方式,例如 “aes-128-gcm”、”chacha20-poly1305” 等。network
可以设置为 “tcp” (TCP)、”kcp” (mKCP)、”ws” (WebSocket) 等。- 如果你的 VMess 服务器启用了 TLS 加密,则将
tls
设置为true
,并确保tls_allow_insecure
和skip_cert_verify
设置为false
(除非你的服务器使用了自签名证书)。
- 替换
-
Trojan:
json
{
"tag": "trojan-outbound",
"type": "trojan",
"server": "your_server_address",
"server_port": 443,
"password": "your_password",
"tls": true,
"skip_cert_verify": true
}- 替换
your_server_address
、443
和your_password
为你的 Trojan 服务器信息。 tls
通常设置为true
,Trojan 协议需要使用 TLS 加密。skip_cert_verify
设置为true
仅在你的服务器使用了自签名证书时才需要。
- 替换
-
Shadowsocks:
json
{
"tag": "shadowsocks-outbound",
"type": "shadowsocks",
"server": "your_server_address",
"server_port": 8388,
"method": "aes-256-cfb",
"password": "your_password"
}- 替换
your_server_address
、8388
、aes-256-cfb
和your_password
为你的 Shadowsocks 服务器信息。 method
指定加密方式,例如 “aes-256-cfb”、”chacha20-ietf-poly1305” 等。
- 替换
四、 高级应用
-
XTLS:
XTLS (eXtended TLS) 是一种优化的 TLS 实现,可以提高代理的性能和安全性,尤其是在复杂的网络环境下。 要使用 XTLS,你需要确保你的服务器支持 XTLS。
json
{
"tag": "xtls-outbound",
"type": "vmess",
"server": "your_server_address",
"server_port": 443,
"uuid": "your_uuid",
"alter_id": 64,
"security": "auto",
"network": "tcp",
"tls": true,
"xtls": true,
"sni": "your_domain.com",
"allow_insecure": false,
"skip_cert_verify": false
}xtls
: 设置为true
启用 XTLS。sni
: 设置为你的服务器域名,用于 SNI (Server Name Indication)。allow_insecure
和skip_cert_verify
: 通常设置为false
,以确保 TLS 连接的安全性。
-
Reality:
Reality 是一种更加高级的抗审查技术,旨在模拟真实网站的流量,从而提高代理的隐蔽性。
json
{
"tag": "reality-outbound",
"type": "trojan",
"server": "your_server_address",
"server_port": 443,
"password": "your_password",
"tls": true,
"reality": {
"enabled": true,
"sni": "your_domain.com",
"short_id": "your_short_id",
"public_key": "your_public_key"
}
}reality.enabled
: 设置为true
启用 Reality。reality.sni
: 设置为你的目标网站的域名。reality.short_id
: Reality 连接的 Short ID。reality.public_key
: 目标网站的公钥。
-
mKCP:
mKCP (Multi-path Kernel Congestion Protocol) 是一种基于 UDP 的快速可靠传输协议,可以改善在高丢包网络环境下的连接质量。
json
{
"tag": "kcp-outbound",
"type": "vmess",
"server": "your_server_address",
"server_port": 12345,
"uuid": "your_uuid",
"alter_id": 64,
"security": "auto",
"network": "kcp",
"kcp": {
"mtu": 1350,
"tti": 50,
"uplink_capacity": 100,
"downlink_capacity": 100
}
}network
: 设置为kcp
使用 mKCP 传输协议。kcp.mtu
: 最大传输单元,通常设置为 1350。kcp.tti
: 传输时间间隔,通常设置为 50。kcp.uplink_capacity
和kcp.downlink_capacity
: 上行和下行带宽容量,单位为 Mbps。
五、 常见问题及解决方法
- 无法连接服务器:
- 检查服务器地址、端口、协议类型、UUID/密码等信息是否正确。
- 检查防火墙是否阻止了 Sing-box 的连接。
- 检查网络连接是否正常。
- 速度慢:
- 尝试更换服务器或协议。
- 调整 mKCP 的参数。
- 检查你的网络环境是否存在瓶颈。
- 日志中出现错误:
- 仔细阅读错误信息,尝试根据错误信息解决问题。
- 查阅 Sing-box 的官方文档或社区论坛,寻找解决方案。
六、 总结
Sing-box 是一款功能强大的网络代理工具,掌握其配置和使用方法,可以帮助你更好地穿透网络、保护隐私。 本文从新手入门到高级应用,详细介绍了 Sing-box 的各个方面。 希望你能通过本文的学习,熟练使用 Sing-box,并将其应用到你的实际需求中。