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 不相同。表中取值來自目前公開設定參考。
| 協議 | 可用 network | 回落規則 |
|---|---|---|
| VMess | tcp, ws, http, h2, grpc, mkcp, mekya | 留空或其他值按 tcp |
| VLESS | tcp, ws, http, h2, grpc, xhttp | 留空或其他值按 tcp |
| Trojan | tcp, ws, grpc | 留空或其他值按 tcp |
HTTP 與 HTTP/2
http 和 h2 是兩種不同的 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: grpc 和 grpc-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-connections和min-streams衝突。
WebSocket
WebSocket 傳輸由 network: ws 和 ws-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- 偽裝包頭可選
none、srtp、utp、wechat-video、dtls或wireguard。 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: true 與 alpn: [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 的進階欄位會改變上行拆分、填充、會話識別碼和連線重用。沒有伺服器端或反向代理的對應設定時,應從 path、host 和預設模式開始,不要一次填滿所有選項。
xhttp-opts.path按伺服器端- 請求路徑,必須與伺服器端或反向代理路由一致。
xhttp-opts.host按伺服器端- HTTP Host,與 TLS
servername是不同欄位。 xhttp-opts.mode可選- 可用
auto、stream-one、stream-up或packet-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不在目前欄位參考列出的可用上行方法中。
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