返回

在 Debian 12 上快速部署 Sing - Box VLESS 代理服务

介绍如何在 Debian 12 系统上快速安装和配置 Sing - Box VLESS 协议,用于科学上网和流量伪装
2025-07-03
4015 字 · 约 11 分钟阅读

sing-box 是一个高性能、支持多协议(如 VLESS、VMess、Shadowsocks、Trojan、SOCKS 等)的网络代理工具,常用于科学上网、代理分流等场景,兼容多种前端、支持多平台

sing-box 不分客户端与服务端,其部署方式与 shadowsocks 类似,根据需要选择合适的配置文件进行部署

下面实践如何快速地在 debian12 服务器上部署一个 vless 协议的 sing-box 代理服务

sing-box 下载地址

  • https://github.com/SagerNet/sing-box/releases/tag/v1.11.14

选择合适版本,这里我选择二进制的 amd64 版本,如下:

mkdir -p /opt/sing-box
cd /opt/sing-box
wget https://github.com/SagerNet/sing-box/releases/download/v1.11.14/sing-box-1.11.14-linux-amd64.tar.gz
tar -xvf sing-box-1.11.14-linux-amd64.tar.gz
cd sing-box-1.11.14-linux-amd64

接下来创建一个配置文件 config.json,内容如下:

{
   "log": {
      "level": "info"
   },
   "inbounds": [
      {
         "type": "vless",
         "listen": "::",
         "listen_port": 443,
         "users": [
            {
               "uuid": "621d1745-382d-40e4-87cf-23e1b17a7b57",
               "flow": "xtls-rprx-vision"
            }
         ],
         "tls": {
            "enabled": true,
            "server_name": "www.microsoft.com",
            "reality": {
               "enabled": true,
               "handshake": {
                  "server": "www.microsoft.com",
                  "server_port": 443
               },
               "private_key": "",
               "short_id": ["12345678","23456789","34567890"]
            }
         }
      }
   ],
   "outbounds": [
      {
         "type": "direct"
      }
   ]
}

以上配置需要修改:

  • uuid:替换为你自己的 UUID,使用 ./sing-box generate uuid 命令生成
  • private_key:替换为你自己的 private_key,可以使用 ./sing-box generate reality-keypair 命令生成(公钥也要记住,在客户端需要填写)
  • short_id:替换为你自己的 short_id,8 位数即可,可以多放几个,用于伪装握手时识别正确的流量

以上参数说明:

  • type:协议类型,这里使用 vless
  • listen:监听地址,:: 表示监听所有地址
  • listen_port:监听端口,这里使用 443
  • users:用户列表,这里只配置了一个用户,使用 UUID 进行身份验证
  • tls:TLS 配置,启用 TLS 并配置相关参数,server_name 为域名,要避免使用 cloudflare 的域名(敏感),建议使用微软的域名或者其他在国内比较正常的域名
  • reality:启用 Reality 协议,配置握手服务器、私钥和 short_id
  • outbounds:出站配置,这里使用 direct 直连

Xray Reality Vision 伪装原理如下:

  • 利用 TLS(HTTPS)握手过程,模仿真实网站(如 www.microsoft.com)进行 TLS 指纹伪装,不需要目标站证书,客户端和服务端通过私钥/short_id 验证身份,防 DPI
  • server_name 等同于目标网站,外部行为与访问目标站一致,达到不可区分效果

通过伪造与真实网站一致的 TLS 参数和握手,做到高度伪装流量,提升代理隐匿性和防检测能力

运行方法:

./sing-box run -c config.json

后台运行可以采用 systemd 管理,创建一个服务文件 /etc/systemd/system/sing-box.service,内容如下:

[Unit]
Description=Sing-box Proxy Service
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/opt/sing-box/sing-box-1.11.14-linux-amd64
ExecStart=/opt/sing-box/sing-box-1.11.14-linux-amd64/sing-box run -c /opt/sing-box/sing-box-1.11.14-linux-amd64/config.json
Restart=on-failure
RestartSec=3s
LimitNOFILE=65535
StandardOutput=append:/var/log/sing-box.log
StandardError=append:/var/log/sing-box.log
ProtectSystem=full
ProtectHome=yes
NoNewPrivileges=yes
PrivateTmp=yes

[Install]
WantedBy=multi-user.target

如果对速度有要求,那么还需要打开 /etc/sysctl.conf 文件,添加以下内容:

# 1 客户端TCP Fast Open / 2 服务端TCP Fast Open / 3 同时启用客户端和服务器的TCP Fast Open
net.ipv4.tcp_fastopen=3
# 允许TCP Time-Wait状态的插槽被重新使用。这对于高并发服务器非常有用
net.ipv4.tcp_tw_reuse=1
# 增加了处于监听状态的套接字队列的最大长度。当服务器接收到大量并发连接请求时,这个参数可以防止新连接被拒绝
net.core.somaxconn=10240
# 设置了所有套接字的接收缓冲区最大值(以字节为单位)。更大的缓冲区可以容纳更多的数据,从而提高网络吞吐量,尤其是在高带宽和高延迟网络中
net.core.rmem_max=16777216
# 设置了所有套接字的发送缓冲区最大值(以字节为单位)。与rmem_max类似,更大的发送缓冲区可以提高数据发送效率
net.core.wmem_max=16777216
# 定义了TCP接收缓冲区的最小值、默认值和最大值
net.ipv4.tcp_rmem=4096 87380 16777216
# 定义了TCP发送缓冲区的最小值、默认值和最大值。
net.ipv4.tcp_wmem=4096 65536 1677721
# 设置默认的排队规则为 Fair Queue (FQ)。FQ是一种流量调度算法,它为每个流提供公平的带宽分配,有助于减少延迟和提高交互性
net.core.default_qdisc=fq
# 将TCP拥塞控制算法设置为 BBR (Bottleneck Bandwidth and RTT) 
net.ipv4.tcp_congestion_control=bbr
# 启用TCP时间戳。尽管这会增加一点点开销,但它可以帮助操作系统更有效地处理乱序数据包和重复ACK,提高高吞吐量连接的性能
net.ipv4.tcp_timestamps=1
# 启用选择性确认 (SACK)。SACK允许接收方告诉发送方哪些数据段是丢失的,从而避免不必要的重传,提高恢复丢失数据包的效率
net.ipv4.tcp_sack=1
# 启用TCP窗口缩放。对于高带宽长延迟网络,更大的TCP窗口可以允许发送方在收到确认之前发送更多的数据,从而提高吞吐量
net.ipv4.tcp_window_scaling=1
# 增加可用临时端口的范围。对于高并发代理服务器,扩大可用端口范围可以避免端口耗尽问题。您可以根据实际情况调整起始和结束端口号。
net.ipv4.ip_local_port_range=1024 65535
# 增加Netfilter连接跟踪表的最大条目数。对于高并发代理服务器,维护大量并发连接需要更大的连接跟踪表
net.nf_conntrack_max=655360

以上参数中,以下几个是最重要的(从高到低):

  • net.ipv4.tcp_congestion_control=bbr BBR (Bottleneck Bandwidth and RTT) 是 Google 开发的拥塞控制算法,旨在最大限度地利用带宽并最小化延迟
  • net.core.default_qdisc=fq 与 BBR 配合使用效果更佳。Fair Queue (FQ) 作为默认排队规则,能够为每个数据流提供更公平的带宽分配,有助于减少单个连接对整体性能的影响,并降低延迟
  • net.ipv4.tcp_fastopen=3 启用 TCP Fast Open,可以减少连接建立的延迟,尤其在高延迟网络中效果明显
  • net.core.somaxconn=10240 增加监听套接字队列长度,允许更多的并发连接请求
  • net.ipv4.tcp_tw_reuse=1 允许 TIME-WAIT 状态的套接字被重用,减少端口耗尽问题

留言

发表留言