最隐匿的节点搭建方案:用 Sing-box 快速部署 VLESS + Reality/VLESS + TLS

手把手教你在 Linux 上使用 Sing-box 搭建稳定高速的 VLESS + Reality 或 VLESS + TLS 节点,支持 Clash、Stash、Shadowrocket 等客户端,适合内容创作者与高需求用户自建代理。

阅读时长: 5 分钟
共 2057字
作者: eimoon.com

Sing-box 是一个功能强大、性能卓越的现代化代理工具箱。它凭借轻量级的设计和对多种先进协议的支持,在提升网络连接效率和稳定性方面表现出色。

本指南将带你从零开始,一步步在 Linux 服务器上部署一个稳定、安全的 Sing-box 服务。无论你是想不依赖域名和备案(使用 VLESS + Reality),还是希望使用自有域名进行最高伪装(使用 VLESS + TLS),都能在这里找到清晰的指引。

第 1 步:环境与前提条件

在开始之前,请确保你已具备以下条件:

  • 一台拥有公网 IP 的 VPS 服务器(推荐使用 Ubuntu 22.04+ 或 Debian 11+ 系统)。

  • 拥有服务器的 rootsudo 权限,可通过 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. 编写配置文件

使用 nanovim 编辑默认的配置文件:

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

如果你看到类似下面这样包含 LISTENsing-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: 80EOF

这是配置 VLESS + Reality 时最常见的错误。它 99% 的原因都是客户端与服务器的 Reality 配置不匹配。请逐字检查以下参数:

  • servername (客户端) vs server_names (服务器)

  • public-key (客户端) vs private_key (服务器)

  • short-id (客户端) vs short_id (服务器)

确保它们完全对应。这个错误是 Reality 握手失败的典型特征。

结语

Sing-box 凭借其现代化的设计和强大的功能,已成为自建代理服务的绝佳选择。希望这篇指南能帮助你顺利完成部署,享受稳定、高效的网络体验。

📬 关注我获取更多资讯

公众号
📢 公众号
个人号
💬 个人号
使用 Hugo 构建
主题 StackJimmy 设计