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