代理協定 · Clash文件

VMess

Clash 生態系的 VMess 出站設定參考,以目前 Mihomo 欄位為準,用於核對使用者 ID、協定版本、加密、UDP、傳輸層與 TLS 參數。

  • uuid
  • alterId
  • cipher
  • TLS
  • WebSocket
代理協定

VMess 出站欄位

本頁說明 Clash 生態用戶端 proxies 陣列中的 VMess 出站欄位,不代替 VMess 伺服器端文件。用戶端的認證、傳輸層和 TLS 參數必須與伺服器端逐項一致。

最小可解析節點由通用必填欄位和 VMess 必填欄位組成。是否開啟 UDP、TLS 或其他傳輸層,取決於伺服器端實際部署。

name必填
節點名稱,在同一份設定中不可重複。
type必填
固定填寫 vmess
server必填
VMess 伺服器端的網域或 IP 位址。
port必填
伺服器端監聽連接埠,必須與伺服器端一致。

認證、版本與加密欄位

uuidalterIdcipher 都被目前欄位參考標為必填。它們不是可以互相替代的認證選項。

uuid必填
VMess 使用者 ID,必須使用伺服器端分配的值。
alterId必填
現代設定通常為 0;非零值會啟用舊協議形態,只能在伺服器端仍要求時使用。
cipher必填
可用值為 autononezeroaes-128-gcmchacha20-poly1305
global-padding可選
啟用 VMess 全域填充,會增加額外流量,不應脫離伺服器端和相容性要求自行開啟。
authenticated-length可選
控制長度塊加密,用戶端與伺服器端能力需要匹配。

UDP 與資料包編碼

允許 UDP 透過節點和選擇 UDP 封裝格式是兩件事。只填寫其中一個欄位不能保證 UDP 可用。

udp可選
通用欄位,預設 false。需要代理 UDP 時設為 true,同時確認伺服器端支援。
packet-encoding可選
留空時使用原始編碼;可選 packetaddrxudp,必須與伺服器端實作相容。

選擇 VMess 傳輸層

network 選擇承載 VMess 的傳輸層。未填寫或填寫目前核心不識別的值時按 TCP 處理,因此錯誤值可能不會直接發生錯誤,而是表現為連線超時。

VMess 目前傳輸層取值
network配套欄位適用說明
tcp無專用 opts預設傳輸層
wsws-optsWebSocket 路徑、Host 和 Early Data
httphttp-optsHTTP 方法、路徑和請求標頭
h2h2-optsHTTP/2 Host 和路徑
grpcgrpc-optsgRPC 服務名和連線參數
mkcpmkcp-opts僅 VMess 支援的 mKCP 傳輸
mekyamekya-opts僅 VMess 支援的 Mekya 傳輸

TLS、Reality 與憑證驗證

TLS 和 Reality 位於傳輸安全層,不會改變 VMess 的 uuidalterIdcipher。普通 TLS、Reality 以及其他 TLS 載體應按伺服器端選擇其中適用的設定。

tls可選
設為 true 後啟用 TLS;伺服器端未啟用 TLS 時不要填寫。
servername可選
VMess 的 SNI 欄位。通常留空時使用 server;WebSocket 設定存在 Host 請求標頭時,目前實作會優先把該 Host 用作 SNI。
alpn可選
TLS 應用層協議清單,順序和可用值應與伺服器端傳輸層一致。
client-fingerprint可選
uTLS 用戶端指紋,例如 chrome。它不是憑證指紋。
fingerprint可選
伺服器端憑證的 SHA-256 指紋,與 client-fingerprint 含義不同。
reality-opts可選
非空時啟用 Reality,至少核對 public-keyshort-id,並與 tls: trueservername 一起按伺服器端填寫。
skip-cert-verify謹慎
跳過 TLS 憑證驗證會降低身分驗證能力,不應作為長期疑難排解方案。

WebSocket 與 TLS 設定示例

下面示例只演示 VMess、WebSocket 與 TLS 的欄位層級。網域、路徑、UUID 和憑證名稱都必須替換為伺服器端提供的值。

YAML
proxies:
  - name: vmess-ws-tls
    type: vmess
    server: edge.example.com
    port: 443
    uuid: 00000000-0000-0000-0000-000000000001
    alterId: 0
    cipher: auto
    udp: true
    packet-encoding: xudp
    tls: true
    servername: origin.example.com
    network: ws
    ws-opts:
      path: /vmess
      headers:
        Host: origin.example.com

常見設定不匹配

VMess 連不上時先逐項對照伺服器端,不要同時改動多個欄位。

  • network 寫成 xhttp 或其他不支援的值,目前核心按 TCP 處理後與伺服器端傳輸層不一致。
  • 現代伺服器端要求 alterId: 0,用戶端卻沿用舊訂閱中的非零值。
  • WebSocket 的 pathHost 與反向代理規則不一致。
  • 啟用 TLS 後把 servername 寫成節點 IP,導致憑證名稱或 Reality 目標不匹配。