Snell 节点与版本机制
客户端使用预共享密钥 psk 建立 Snell 出站,并按 version 选择对应的报文格式。服务端地址、端口、PSK 和版本必须来自同一份节点配置。
版本会直接决定 UDP 与连接复用能力。未填写 version 时,当前实现为兼容旧配置默认使用 v1,因此不应把版本字段当作可忽略的展示信息。
最小必填字段
Snell 的最小配置由四个通用连接字段和一个 PSK 组成。建议显式填写版本,以免落入默认 v1。
name必填- 节点名称,用于策略组与规则引用。
type必填- 固定填写
snell。 server必填- Snell 服务端域名或 IP。
port必填- Snell 服务端监听端口。
psk必填- Snell 预共享密钥,必须与服务端完全一致。
version建议显式填写- 支持 1、2、3、4、5;省略时当前实现默认使用 1。
版本、UDP 与连接复用
当前字段参考把 UDP 和 reuse 的可用范围按 Snell 版本划分。当前实现会利用 v5 服务端对 v4 客户端的向后兼容,按 v4 客户端路径处理 v5 配置。
| version | UDP | reuse 配置 | 说明 |
|---|---|---|---|
| 1 | 不支持 | 不适用 | 未填写 version 时的当前默认值 |
| 2 | 不支持 | 始终复用 | v2 固定使用连接复用,reuse 开关不生效 |
| 3 | 支持 | 不适用 | 可开启 udp: true |
| 4 | 支持 | 支持 | reuse 默认 false,可按服务端能力开启 |
| 5 | 支持 | 支持 | 当前实现通过 v4 客户端兼容 v5 服务端 |
udp版本相关- 仅 v3、v4、v5 可开启;v1 或 v2 开启时会初始化失败。
reuse版本相关- 官方配置项用于 v4、v5 连接复用,默认
false。
混淆模式与专属字段
obfs-opts 用于配置 Snell 外层混淆。不同 mode 的字段集合不同,只填写当前服务端实际启用的模式和参数。
| mode | 主要字段 | 边界 |
|---|---|---|
http | host | HTTP 外观混淆,host 应与服务端配置一致 |
tls | host | simple-obfs TLS 外观,不等同于标准 HTTPS 代理 |
shadow-tls | host、password、version、alpn | Shadow TLS 版本支持 1、2、3 |
restls | host、password、version-hint、restls-script | version-hint 可使用 tls12 或 tls13 |
jls | host、username、password、alpn | 认证字段必须与 JLS 服务端一致 |
obfs-opts按需- Snell 混淆配置对象,未使用混淆时可以省略。
client-fingerprint按需- 用于 Shadow TLS、Restls 或 JLS 等 TLS 外观模式,官方默认值为 Chrome。
obfs-opts.host按需- 混淆使用的域名外观,应按服务端给出的值填写。
obfs-opts.password模式相关- Shadow TLS 或 Restls 模式的外层密码,不等同于 Snell
psk。
Snell v4 混淆示例与排查
示例显式指定 v4 并开启 UDP。这里使用 simple-obfs TLS 外观;如果服务端没有启用混淆,应删除整个 obfs-opts。
- 认证失败时先核对
psk,不要把 Shadow TLS 或 Restls 的外层密码填入psk。 - TCP 可用而 UDP 初始化失败时,检查
version是否为 3、4 或 5。 - 混淆握手失败时,逐项核对 mode、host、外层密码、版本和客户端指纹。
proxies:
- name: snell-node
type: snell
server: server.example.com
port: 44046
psk: your-psk
version: 4
udp: true
obfs-opts:
mode: tls
host: example.com