代理協定 · Clash文件

傳輸層設定

Clash 生態系的傳輸層設定參考,以目前 Mihomo 欄位為準,協助 VMess、VLESS 與 Trojan 正確搭配 network、相關 opts、TLS 及協定界線。

  • network
  • WebSocket
  • HTTP/2
  • gRPC
  • TLS
代理協定

network 與 opts 如何關聯

傳輸層設定附著在具體出站節點上,不是獨立代理協議。先填寫 VMess、VLESS 或 Trojan 的必填欄位,再用 network 選擇承載方式。

每個 *-opts 只在相同名稱的 network 下生效。TLS、Reality、UDP 和協議認證通常仍是節點頂層欄位,不會因為選擇 WebSocket、gRPC 或 XHTTP 自動開啟;XHTTP 的 download-settings 是可為下行連線嵌套覆蓋 TLS 與 Reality 參數的例外。

network選擇器
選擇傳輸層。留空或填寫該協議不支援的值時,目前核心按 TCP 處理。
*-opts條件生效
只在對應 network 下讀取,例如 ws-opts 只配合 network: ws
tls / reality-opts通常位於頂層
負責傳輸安全,必須按伺服器端單獨設定;XHTTP 下行連線可在 download-settings 中覆蓋。
udp / packet-encodingVMess / VLESS
控制代理 UDP 能力和這兩種協議的資料包編碼,不是 Trojan 傳輸層欄位,也不由 network 自動決定。

協議支援矩陣

不同協議允許的 network 不相同。表中取值來自目前公開設定參考。

VMess、VLESS 與 Trojan 的傳輸層支援
協議可用 network回落規則
VMesstcp, ws, http, h2, grpc, mkcp, mekya留空或其他值按 tcp
VLESStcp, ws, http, h2, grpc, xhttp留空或其他值按 tcp
Trojantcp, ws, grpc留空或其他值按 tcp

HTTP 與 HTTP/2

httph2 是兩種不同的 network。它們都要求路徑、Host 和伺服器端路由保持一致,但使用不同的 opts 對象。

http-opts.methodHTTP
HTTP 請求方法,按伺服器端實作填寫。
http-opts.pathHTTP
HTTP 請求路徑清單,必須與伺服器端設定一致。
http-opts.headersHTTP
附加 HTTP 請求標頭,Host 或 Connection 等值應與反向代理規則一致。
h2-opts.hostHTTP/2
主機網域清單。設定多個值時用戶端隨機選擇,伺服器端會驗證。
h2-opts.pathHTTP/2
HTTP/2 請求路徑,必須與伺服器端一致。

gRPC

gRPC 傳輸由 network: grpcgrpc-opts 組成。服務名是最先需要核對的欄位,連線與流數量參數只在明確瞭解伺服器端和併發需求時調整。

grpc-opts.grpc-service-name按伺服器端
gRPC 服務名稱,必須與伺服器端一致。
grpc-opts.grpc-user-agent可選
覆蓋 gRPC User-Agent。普通節點通常無需修改。
grpc-opts.ping-interval可選
心跳間隔,單位為秒,預設關閉。
grpc-opts.max-connections可選
最大底層連線數,預設 1,與 max-streams 衝突。
grpc-opts.min-streams可選
開啟新連線前的最小重用流數量,與 max-streams 衝突。
grpc-opts.max-streams可選
開啟新連線前的最大重用流數量,與 max-connectionsmin-streams 衝突。

WebSocket

WebSocket 傳輸由 network: wsws-opts 組成。路徑與 Host 通常還要同時透過 CDN 或反向代理驗證。

ws-opts.path按伺服器端
WebSocket 請求路徑,必須與伺服器端或反向代理路由一致。
ws-opts.headers可選
附加請求標頭,常見為 Host,不要與 TLS 的 servername 混為一個欄位。
ws-opts.max-early-data可選
WebSocket Early Data 首包長度閾值,只有伺服器端支援時才啟用。
ws-opts.early-data-header-name可選
承載 Early Data 的請求標頭名稱,需要與伺服器端實作一致。
ws-opts.v2ray-http-upgrade可選
使用 V2Ray HTTP Upgrade 模式,不能脫離伺服器端能力單獨開啟。
ws-opts.v2ray-http-upgrade-fast-open可選
為 HTTP Upgrade 啟用 Fast Open,依賴前一欄位和伺服器端支援。

mKCP 與 Mekya

mKCP 和 Mekya 目前僅用於 VMess。兩者都不是 VLESS 或 Trojan 的通用傳輸層,訂閱轉換時不要跨協議保留。

mkcp-opts.mtumKCP
最大傳輸單元,需結合鏈路 MTU 調整。
mkcp-opts.ttimKCP
傳輸時間間隔,單位為毫秒。
mkcp-opts.uplink-capacitymKCP
上行容量,單位為 MB/s。
mkcp-opts.downlink-capacitymKCP
下行容量,單位為 MB/s。
mkcp-opts.congestionmKCP
控制是否啟用擁塞控制。
mkcp-opts.seedmKCP
啟用 AES-GCM 認證時使用的種子,留空使用預設認證。
mkcp-opts.headermKCP
偽裝包頭可選 nonesrtputpwechat-videodtlswireguard
mekya-opts.urlMekya
Mekya 伺服器端 URL,必須與伺服器端入口一致。
mekya-opts.max-write-delayMekya
首包後的最大聚合等待時間,單位為毫秒。
mekya-opts.max-request-sizeMekya
單次 HTTP 請求最大負載,單位為位元組。
mekya-opts.polling-interval-initialMekya
空輪詢初始間隔,單位為毫秒。
mekya-opts.h2-pool-sizeMekya
HTTP/2 連線池大小。
mekya-opts.kcpMekya
Mekya 內部 KCP 參數,欄位含義與 mkcp-opts 相同。

XHTTP

XHTTP 目前僅用於 VLESS。預設使用 H2;使用 H3 時必須設定 tls: truealpn: [h3],且目前 H3 實作不接受 Reality、ShadowTLS、Restls 或 JLS。使用 HTTP/1.1 時設定 alpn: [http/1.1]

UUID 與 VLESS Encryption 仍在節點頂層。TLS 和 Reality 通常也位於頂層,但 xhttp-opts.download-settings 可以為下行連線嵌套覆蓋 TLS、Reality、ECH、SNI 等參數。

XHTTP 的進階欄位會改變上行拆分、填充、會話識別碼和連線重用。沒有伺服器端或反向代理的對應設定時,應從 pathhost 和預設模式開始,不要一次填滿所有選項。

xhttp-opts.path按伺服器端
請求路徑,必須與伺服器端或反向代理路由一致。
xhttp-opts.host按伺服器端
HTTP Host,與 TLS servername 是不同欄位。
xhttp-opts.mode可選
可用 autostream-onestream-uppacket-up
xhttp-opts.headers可選
附加 HTTP 請求標頭。
xhttp-opts.no-grpc-header可選
控制 stream-up 或 stream-one 上行是否省略用於偽裝 gRPC 的 Content-Type 頭。
xhttp-opts.x-padding-bytes可選
請求標頭填充長度範圍,預設範圍為 100-1000
xhttp-opts.x-padding-obfs-mode可選
啟用填充混淆,出於相容性預設 false
xhttp-opts.uplink-http-method可選
上行可使用伺服器端和中間網路允許的帶請求體方法,例如 POST、PUT、PATCH 或 DELETE。
xhttp-opts.session-placement可選
會話 ID 可放在 path、query、cookie 或 header。
xhttp-opts.seq-placement可選
序列號位置需與會話位置規則相容;會話放在 path 時序列號也必須放在 path。
xhttp-opts.uplink-data-placementpacket-up
packet-up 模式控制拆分後上行資料的位置。
xhttp-opts.uplink-chunk-size條件生效
上行資料不放在 body 時控制單塊最大位元組數,最小為 64 位元組。
xhttp-opts.reuse-settings可選
XHTTP 連線重用設定。沒有預設值,省略時不開啟重用。
xhttp-opts.reuse-settings.max-concurrency二選一
每條底層連線的最大併發請求數,與 max-connections 衝突。
xhttp-opts.reuse-settings.max-connections二選一
最大同時連線數,與 max-concurrency 衝突。
xhttp-opts.download-settings可選
覆蓋下行連線參數,可嵌套 TLS、Reality、ECH、SNI、ALPN 與用戶端指紋等欄位;未填寫的值沿用上行設定。
  • 不要把 xhttp 用在 VMess 或 Trojan 節點。
  • 不要同時啟用 XHTTP reuse-settings 和通用 smux,避免形成兩層重複重用。
  • 路徑、Host、ALPN 或模式與伺服器端不一致時,優先修正這些基礎欄位。
  • uplink-http-method: GET 不在目前欄位參考列出的可用上行方法中。
YAML
proxies:
  - name: vless-xhttp-h2
    type: vless
    server: edge.example.com
    port: 443
    uuid: 00000000-0000-0000-0000-000000000001
    encryption: ""
    udp: true
    tls: true
    servername: origin.example.com
    alpn:
      - h2
    client-fingerprint: chrome
    network: xhttp
    xhttp-opts:
      path: /xhttp
      host: origin.example.com
      mode: auto