代理協定 · Clash文件

Snell

Clash 生態系的 Snell 出站設定參考,以目前 Mihomo 欄位為準,用於核對 psk、version、udp、obfs-opts 與 smux,並涵蓋最小 YAML、版本相容性及驗證疑難排解。

  • psk
  • version
  • udp
  • obfs-opts
  • reuse
代理協定

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 設定。

Snell 版本能力
versionUDPreuse 設定說明
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 的欄位集合不同,只填寫目前伺服器端實際啟用的模式和參數。

Snell 混淆模式
mode主要欄位邊界
httphostHTTP 外觀混淆,host 應與伺服器端設定一致
tlshostsimple-obfs TLS 外觀,不等同於標準 HTTPS 代理
shadow-tlshostpasswordversionalpnShadow TLS 版本支援 1、2、3
restlshostpasswordversion-hintrestls-scriptversion-hint 可使用 tls12 或 tls13
jlshostusernamepasswordalpn認證欄位必須與 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、外層密碼、版本和用戶端指紋。
YAML
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