Sing-box 是一个功能强大、性能卓越的现代化代理工具箱。它凭借轻量级的设计和对多种先进协议的支持,在提升网络连接效率和稳定性方面表现出色。
本指南将带你从零开始,一步步在 Linux 服务器上部署一个稳定、安全的 Sing-box 服务。无论你是想不依赖域名和备案(使用 VLESS + Reality),还是希望使用自有域名进行最高伪装(使用 VLESS + TLS),都能在这里找到清晰的指引。
第 1 步:环境与前提条件
在开始之前,请确保你已具备以下条件:
-
一台拥有公网 IP 的 VPS 服务器(推荐使用 Ubuntu 22.04+ 或 Debian 11+ 系统)。
-
拥有服务器的
root或sudo权限,可通过 SSH 登录。 -
服务器防火墙已放行所需端口(如
443)。
第 2 步:安装 Sing-box
Sing-box 提供了多种安装方式。请根据你的偏好选择其中一种即可。 官方文档
方式 A:包管理器安装(官方首选)
这是最推荐、最省心的方法。它会自动处理程序路径、系统服务等所有配置,非常适合绝大多数用户。
sudo mkdir -p /etc/apt/keyrings &&
sudo curl -fsSL https://sing-box.app/gpg.key -o /etc/apt/keyrings/sagernet.asc &&
sudo chmod a+r /etc/apt/keyrings/sagernet.asc &&
echo '
Types: deb
URIs: https://deb.sagernet.org/
Suites: *
Components: *
Enabled: yes
Signed-By: /etc/apt/keyrings/sagernet.asc
' | sudo tee /etc/apt/sources.list.d/sagernet.sources &&
sudo apt-get update &&
sudo apt-get install sing-box # or sing-box-beta
通过这种方式安装后,请记住以下关键信息:
-
程序路径:
/usr/bin/sing-box -
配置文件路径:
/etc/sing-box/config.json -
系统服务(Systemd):已自动创建,服务名为
sing-box。
你可以直接使用 systemctl 命令来管理它,无需手动创建服务文件。
第 3 步:配置 Sing-box
接下来,我们需要创建核心的 config.json 文件。请根据你的需求选择一种模式。
模式一:VLESS + Reality (无需域名)
这是目前最受欢迎的模式,因为它无需购买域名,并且具有顶级的伪装能力。
1. 生成 Reality 密钥对
在服务器上运行以下命令:
sing-box generate reality-keypair
你会得到类似下面的输出,请妥善保存:
PrivateKey: Y3...abc <-- 用于下面的服务器配置
PublicKey: A2...xyz <-- 用于客户端配置
2. 编写配置文件
使用 nano 或 vim 编辑默认的配置文件:
sudo nano /etc/sing-box/config.json
将以下内容粘贴进去,并替换其中的占位符,只需要关注inbounds部分:
{
"dns": {
"servers": [
{
"tag": "dns_google",
"address": "https://8.8.8.8/dns-query",
"strategy": "ipv4_only",
"detour": "direct"
},
{
"tag": "dns_cloudflare",
"address": "https://1.1.1.1/dns-query",
"strategy": "ipv4_only",
"detour": "direct"
},
{
"tag": "dns_block",
"address": "rcode://refused"
}
],
"rules": [
{
"outbound": "any",
"server": "dns_cloudflare"
}
],
"final": "dns_google"
},
"inbounds": [
{
"type": "vless",
"listen": "::",
"listen_port": 443,
"tag": "vless-reality",
"users": [
{
"name": "longlikun",
"uuid": "cc11afe7-4af8-4bb1-a99d-ee51cc34e6c9"
}
],
"tls": {
"enabled": true,
"server_name": "www.bing.com",
"reality": {
"enabled": true,
"handshake": {
"server": "www.bing.com",
"server_port": 443
},
"private_key": "MLzdbWZIjZzmkFEUwBHvOBF6oH-0EKE3Pipkwyh4Unw",
"short_id": ["0123456789abcdef"]
}
}
}
],
"outbounds": [
{
"type": "direct",
"tag": "direct"
}
],
"log": {
"level": "debug"
}
}
重要提示:VLESS + Reality 模式与
flow字段不兼容。请确保users条目中没有"flow": "xtls-rprx-vision"这样的配置。
模式二:VLESS + TLS (需要自有域名)
如果你拥有一个域名,并已通过 Let’s Encrypt 等工具申请了 TLS 证书,可以使用此模式。
sudo nano /etc/sing-box/config.json
{
"log": {
"level": "info",
"timestamp": true
},
"inbounds": [
{
"type": "vless",
"listen": "::",
"listen_port": 443,
"tag": "vless-tls-in",
"users": [
{
"uuid": "换成你自己的UUID",
"flow": "xtls-rprx-vision" // TLS 模式下可以使用 flow
}
],
"transport": {
"type": "tls",
"server_name": "your.domain.com", // 换成你自己的域名
"certificate_path": "/path/to/your/fullchain.pem", // 换成你的证书路径
"key_path": "/path/to/your/privkey.pem" // 换成你的私钥路径
}
}
],
"outbounds": [
{
"type": "direct",
"tag": "direct"
}
]
}
第 4 步:运行与验证
配置完成后,我们就可以启动并验证服务了。
4.1 启动服务与日志检查
# 重启 Sing-box 使配置生效
sudo systemctl restart sing-box
# 设置开机自启动
sudo systemctl enable sing-box
# 查看服务运行状态
sudo systemctl status sing-box
如果状态显示 active (running),说明服务已成功启动。强烈建议再通过以下命令实时查看日志,确保没有报错信息:
# 按 Ctrl + C 退出日志查看
journalctl -u sing-box -f
4.2 检查端口监听与防火墙
这是极其关键的一步,能帮你排除绝大多数网络问题。
1. 检查服务是否在监听端口
在服务器上执行以下命令:
sudo ss -nltp | grep sing-box
如果你看到类似下面这样包含 LISTEN 和 sing-box 的输出,说明服务已成功绑定到你配置的端口(例如443)。
LISTEN 0 4096 [::]:443 [::]:* users:(("sing-box",pid=12345,fd=7))
2. 检查防火墙是否放行
端口不通通常有两个原因:云服务商的安全组和服务器自身的防火墙。
-
云服务商防火墙:请登录你的 VPS 提供商(如 Oracle, AWS, Google Cloud 等)的管理后台,找到"安全组"或"防火墙"规则,确保已经为你的服务器 IP 添加了入站规则,允许
TCP协议访问你配置的端口(如443)。 -
服务器本地防火墙(根据你的系统选择一种)
-
UFW (Ubuntu/Debian 默认):
# 查看 ufw 状态,确保是 active sudo ufw status # 如果需要,添加端口放行规则 sudo ufw allow 443/tcp # 重载 ufw 使规则生效 sudo ufw reload -
Iptables (CentOS/RHEL 或其他系统):
iptables 的规则是即时生效但重启后会丢失,需要额外步骤来保存。
# 1. 添加规则允许 TCP 端口 443 的入站连接 sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT # 2. 保存规则使其持久化 # 对于 Debian/Ubuntu 系统: sudo apt-get install iptables-persistent -y sudo netfilter-persistent save # 对于 CentOS/RHEL 系统: sudo service iptables save # 或 # sudo /sbin/iptables-save > /etc/sysconfig/iptables
-
-
最终测试:你可以从自己的电脑(而不是服务器)上运行
nc命令来做最终测试:nc -vz 你的服务器IP 443-
如果返回
succeeded!,恭喜你,网络是通的! -
如果返回
Connection refused,说明端口通了但服务没在监听,请检查sing-box状态。 -
如果长时间无响应或
timed out,说明是防火墙问题,请仔细检查上述两处防火墙设置。
-
第 5 步:客户端配置
以 Clash.Verge 客户端为例,配置一个 VLESS + Reality 节点:
- {
name: 'vless-reality',
type: 'vless',
server: '47.90.178.145',
port: '443',
uuid: '',
network: 'tcp',
tls: true,
udp: true,
client-fingerprint: 'firefox',
servername: 'www.bing.com',
reality-opts:
{
public-key: '0CyCCb6jAitBudtGogBhjgUrD0O5roCzqiL2tu9n4kE',
short-id: '0123456789abcdef',
},
}
附录:常见问题与手动配置
错误排查: unknown version: 80 与 EOF
这是配置 VLESS + Reality 时最常见的错误。它 99% 的原因都是客户端与服务器的 Reality 配置不匹配。请逐字检查以下参数:
-
servername(客户端) vsserver_names(服务器) -
public-key(客户端) vsprivate_key(服务器) -
short-id(客户端) vsshort_id(服务器)
确保它们完全对应。这个错误是 Reality 握手失败的典型特征。
结语
Sing-box 凭借其现代化的设计和强大的功能,已成为自建代理服务的绝佳选择。希望这篇指南能帮助你顺利完成部署,享受稳定、高效的网络体验。
📬 关注我获取更多资讯