Snell v6 部署指南(sing-box)

Snell v6 用 PSK 派生协议画像,并用 mode 做流量整形。sing-box 1.14.0 起提供该入站。字段见 Snell inbound 与 outbound。

模式 说明
default 默认整形,适合生产
unshaped 不做整形
unsafe-raw 明文调试,禁止用于生产

不要在多台服务器之间复用同一个 PSK。

准备

  • 带 systemd 的 Linux VPS,有 root 或 sudo。官方安装脚本覆盖 deb、rpm、Arch、OpenWrt,不是任意发行版。
  • 安全组和本机防火墙放行 TCP 443,且端口未被占用。
  • 一串 12–255 字节的随机 PSK。

安装

bash
curl -fsSL https://sing-box.app/install.sh | sh
sing-box version

版本必须 ≥ 1.14.0,否则识别不了 snell。

PSK

长度按字符串本身计算,推荐 32 字节随机值的 Base64:

bash
sing-box generate rand --base64 32

不要用短口令,也不要让 Base64 文本超过 255 字节。

服务端

写入 /etc/sing-box/config.json:

json
{
  "log": {
    "level": "info",
    "timestamp": true
  },
  "inbounds": [
    {
      "type": "snell",
      "listen": "::",
      "listen_port": 443,
      "version": 6,
      "psk": "CHANGE_THIS_TO_A_GENERATED_PSK"
    }
  ],
  "outbounds": [
    {
      "type": "direct"
    }
  ]
}
配置项 说明
psk 12–255 字节的随机值
listen_port 默认 443
listen 禁用 IPv6、报 cannot assign requested address 时改为 0.0.0.0

mode 默认 default,不清楚影响就不要改。

bash
sudo chmod 600 /etc/sing-box/config.json
sudo sing-box check -c /etc/sing-box/config.json
sudo systemctl enable sing-box
sudo systemctl restart sing-box

日志:sudo journalctl -u sing-box -e。

多用户

顶层 psk 仍是服务器密钥。每个用户用自己的 userkey。name 只用于日志。

json
{
  "inbounds": [
    {
      "type": "snell",
      "listen": "::",
      "listen_port": 443,
      "version": 6,
      "psk": "SERVER_PSK",
      "users": [
        {
          "name": "user1",
          "userkey": "USER1_KEY"
        }
      ]
    }
  ]
}

客户端同时填写顶层 psk 和该用户的 userkey。

客户端

本机代理是 127.0.0.1:1080。协议没有 TLS。mode 必须与服务端一致。reuse 是出站字段,默认关闭,需要连接复用时再设为 true。

json
{
  "log": {
    "level": "info",
    "timestamp": true
  },
  "inbounds": [
    {
      "type": "mixed",
      "listen": "127.0.0.1",
      "listen_port": 1080
    }
  ],
  "outbounds": [
    {
      "type": "snell",
      "tag": "snell-out",
      "server": "YOUR_SERVER_IP",
      "server_port": 443,
      "psk": "CHANGE_THIS_TO_A_GENERATED_PSK",
      "version": 6
    }
  ]
}

排查

  • 版本是否 ≥ 1.14.0,version 是否为数字 6,PSK 是否落在 12–255 字节。
  • 端口占用看 sudo ss -lntp | grep ':443'。禁用 IPv6 时不要听 ::。
  • 客户端地址、端口、PSK 一致。多用户还要填对 userkey。两端 mode 一致。
  • unsafe-raw 不加密,只用于本地调试。出现 unknown inbound type 或 unsupported version 时,升级到 1.14.0 及以上再试。

安全

PSK 用生成命令,不要短口令,也不要多机复用。config.json 权限 600。不要在生产环境使用 unsafe-raw。443 上没有 TLS。升级后重新执行 sing-box check。