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。
安装
curl -fsSL https://sing-box.app/install.sh | sh
sing-box version版本必须 ≥ 1.14.0,否则识别不了 snell。
PSK
长度按字符串本身计算,推荐 32 字节随机值的 Base64:
sing-box generate rand --base64 32不要用短口令,也不要让 Base64 文本超过 255 字节。
服务端
写入 /etc/sing-box/config.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,不清楚影响就不要改。
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 只用于日志。
{
"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。
{
"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。