VMess、VLESS、Trojan、Shadowsocks 協定差異與使用情境比較

比較四種代理協定的加密方式、握手成本、傳輸層搭配與用戶端支援,依網路環境和裝置挑選合適方案。

本文重點速覽

本文適合正在挑選訂閱節點,或想在電腦與 Android 裝置上使用同一服務的使用者。先釐清協定、傳輸方式與安全層的差別,再比較四種協定的驗證與加密特性,最後確認用戶端相容性,並在相同條件下實測,選出主要使用的節點。協定名稱不直接決定速度;伺服器線路、完整設定和實際核心支援,往往更影響連線結果。

一、先釐清節點名稱:協定、傳輸方式與安全層

訂閱中常見的「VLESS + WebSocket + TLS」並不是三種互相取代的協定。VLESS 負責代理請求與使用者驗證,WebSocket 負責承載資料,TLS 則負責保護連線。只看 VLESS 就斷定節點比較快或安全,可能會忽略真正影響連線的設定。

用戶端與核心也要分開看。v2rayN、v2rayNG、v2flyNG 是用來管理設定的用戶端;實際連線則由核心處理。V2Ray 與 Xray 支援的範圍不盡相同,即使節點都標示為 VLESS,也可能需要特定傳輸方式或安全機制。

二、四種協定的加密與驗證差異

四種協定都能用於代理連線,但保護資料的方式不同。下表整理常見且相容性較廣的設定組合;若使用新擴充功能或特定核心參數,請以伺服器端要求和本機核心支援為準。

協定 驗證方式 加密方式與安全範圍 常見組合
VMess 以 UUID 識別使用者,現代設定採用 AEAD 驗證 具備協定內加密能力,實際效果取決於 security 設定;也可再加上 TLS TCP;WebSocket + TLS
VLESS 通常使用 UUID 常見的 encryption=none 設定沒有協定內的載荷加密,需仰賴 TLS 或 REALITY 等機制保護 TCP + TLS;WebSocket + TLS;TCP + REALITY + Vision
Trojan 共用密碼 傳統部署仰賴 TLS 保護驗證資訊與代理資料,正確驗證憑證相當重要 TCP + TLS
Shadowsocks 共用金鑰;輸入格式取決於加密方法 使用所選的密碼方案保護代理資料,須區分傳統 AEAD 與 2022 系列 原生 TCP / UDP;伺服器指定的擴充組合

VMess:先確認 AEAD,再檢查傳輸參數

VMess 並非「舊節點就一定不能用」。維護正常的 AEAD 節點仍有實際用途。舊設定中的 alterId 容易造成混淆:現代常見設定通常為 0,代表使用 AEAD;請勿自行改成更大的數字。VMess 驗證也與時間有關,請確保電腦和手機的系統時間準確。

VLESS:常見設定由外層負責加密

VLESS 常見的 encryption=none 設定,不代表整條連線都沒有加密。外層 TLS 或 REALITY 可以保護連線。反過來說,只有 VLESS + TCP、沒有安全層,也不能因為應用程式連線到 HTTPS 網站,就認為整條代理路徑都受到同等保護。部分新實作提供額外加密擴充功能,但不能直接套用到所有用戶端。

Trojan 與 Shadowsocks:密碼欄位的用途不同

Trojan 的共用密碼用於驗證,TLS 則提供連線保護。Shadowsocks 的密碼或金鑰必須搭配加密方法,才能建立連線,例如 aes-128-gcm 與 chacha20-ietf-poly1305 不能任意互換。2022 系列另有特定金鑰格式要求,不能只改 method 就直接沿用舊密碼。

三、握手成本與速度:別替協定排固定名次

首次開啟網頁的等待時間,包含網域名稱解析、連上伺服器、外層安全握手、代理驗證,以及連往目標網站等步驟。WebSocket 通常會經過 HTTP 升級程序;gRPC 仰賴 HTTP/2;TLS 是否重用工作階段,也會影響建立連線的成本。因此,不能簡化成某種協定永遠「少一次握手」。

吞吐量則是另一回事。伺服器頻寬、尖峰時段壅塞、封包遺失和裝置效能都可能成為瓶頸。VLESS + Vision 在適用條件下可減少重複加密相關的成本,但這不是所有 VLESS 節點的預設功能,也不保證任何線路都比其他協定快。

443
HTTPS 常用連接埠,也常用於 TLS 節點;連接埠本身無法證明已啟用 TLS
1080
SOCKS 常見的連接埠慣例,不代表目前用戶端實際的監聽連接埠
8388
Shadowsocks 設定範例常見的連接埠;匯入節點時仍以伺服器提供的數值為準

這些連接埠用來說明不同連線層的位置,不是速度實測。伺服器連接埠與本機代理連接埠是兩回事:瀏覽器連線到本機監聽連接埠,再由核心連往訂閱提供的伺服器連接埠。把伺服器的 443 填進本機 SOCKS 設定,並不會自動建立代理連線。

  1. 在同一台裝置、同一個網路及同一時段測試,優先選用同一伺服器線路提供的不同協定節點。
  2. 每個候選節點以相同頁面進行 5 次首次載入測試,再進行 3 次、每次 30 秒的相同下載測試。不要把單次峰值當成長期速度。
  3. 測試前固定系統代理或 VPN 接管狀態與路由規則,並確認目標請求確實經過目前節點,避免把直連結果混入比較。
  4. 記錄逾時次數、載入時間中位數及穩定下載速度。只比較 TCP 延遲,不足以判斷網頁、影片或 UDP 應用程式是否可用。

四、依使用情境選擇:先確認伺服器端條件

沒有伺服器端相應設定,就不能只在用戶端把 VMess 切換成 VLESS。以下建議的前提是服務提供者已提供相應的完整節點。對於目前使用穩定的節點,是否值得遷移應以實測結果判斷,而不是看名稱新舊。

VLESS + REALITY + Vision

建議

在連線兩端都支援且伺服器參數完整的前提下,可列為 Xray 環境的主要候選。務必核對公鑰、伺服器名稱、shortId 與 flow;不能從一般 VLESS 節點自行補上這些值。

適用情境:使用 Xray 核心,且伺服器已提供完整 REALITY 節點的桌上型電腦與 Android 裝置。

VMess + WebSocket + TLS

既有訂閱中相當常見。請重點檢查 AEAD、WebSocket 路徑、Host 與 TLS 伺服器名稱;若伺服器允許,可用於需要 WebSocket 轉送的環境。

適用情境:繼續使用維護正常的 VMess 服務,或已有 WebSocket 轉送設定。

Trojan + TLS

驗證與傳輸設定相對直覺,但仍需要有效憑證及正確的伺服器名稱。傳統 Trojan 使用 TLS,不代表任何轉送服務都支援;一般 HTTP 反向代理也不能直接取代 TCP 轉送。

適用情境:已有網域與 TLS 部署,且希望使用密碼驗證的服務。

Shadowsocks AEAD

常見設定包括位址、連接埠、加密方法及密碼。若需要 UDP,還要一併確認伺服器端、用戶端與目前的接管方式;支援 TCP 不代表 UDP 一定可用。

適用情境:已有加密方法相符的服務,或希望保留原生 TCP / UDP 代理方案。

五、v2rayN、v2rayNG 與 v2flyNG 如何搭配使用

確認相容性時,應核對「用戶端版本 + 核心版本 + 完整協定組合」,而不是只看用戶端名稱。v2rayN 是桌面用戶端,可依發行套件與設定使用不同核心;v2rayNG 使用 Xray 核心;v2flyNG 使用 V2Fly 核心。後兩者不能只因名稱相似,就視為能互換所有節點。

電腦與 Android 搭配使用:共用訂閱,分別檢查核心與接管方式

桌面端:v2rayN
  • 依 Windows、macOS 或 Linux 選擇合適的發行套件。
  • 使用 REALITY / Vision 節點前,請確認實際執行的是支援該組合的 Xray 核心。
  • 選取節點並啟動連線後,確認系統代理或 TUN 狀態及路由規則。
  • 本機監聽連接埠請以目前設定為準,不要沿用其他裝置的數值。
Android 端:v2rayNG / v2flyNG
  • v2rayNG 可搭配支援 Xray 功能的節點使用,仍須確認安裝版本。
  • v2flyNG 請依 V2Fly 核心的支援範圍選擇節點,勿預設它支援 Xray 專用組合。
  • 匯入同一份訂閱後,確認節點參數並完成系統 VPN 授權。
  • 檢查個別應用程式代理設定,避免測試用的應用程式被排除在代理之外。

同一份訂閱可以共用節點來源,但不會自動同步本機連接埠、路由規則、DNS 與個別應用程式設定。

以 v2rayN 傳統介面常見的選單位置為例,可在「訂閱分組」→「訂閱分組設定」管理訂閱,並在「設定」→「參數設定」檢查本機參數;桌面跨平台介面可能使用不同名稱,請以目前介面為準。Android 端可從主畫面的新增入口匯入分享連結,再檢查所選節點的編輯頁面。不同版本的按鈕位置不要直接照抄。

六、檢查協定參數:連線失敗時先查哪些項目

修改參數前,先保留服務提供者的原始設定做比較。每次只調整一個有依據的選項,重新啟動連線並查看記錄。若一次同時修改連接埠、SNI 和傳輸方式,排查時就失去參照。

節點類型 優先檢查欄位 常見錯誤操作
VMess UUID、alterId、security、系統時間、傳輸路徑 把舊教學中的非零 alterId 套用到現代 AEAD 節點
VLESS + TLS UUID、encryption、伺服器名稱、傳輸類型、flow 在 WebSocket 節點上硬加 Vision,或漏設 TLS
VLESS + REALITY UUID、公鑰、shortId、伺服器名稱、指紋、flow 複製其他節點的公鑰,或只把安全類型改成 REALITY
Trojan 密碼、連接埠、TLS 伺服器名稱、憑證驗證 誤以為連線位址是 IP,伺服器名稱也必須填相同的 IP
Shadowsocks method、密碼或金鑰、連接埠、UDP 支援 混用 2022 系列與傳統 AEAD 的金鑰格式

TLS 節點的伺服器名稱通常應與憑證涵蓋的網域相符,可能和連線位址不同。WebSocket 的 Host 則是 HTTP 層欄位;伺服器端可以分別設定它與 TLS 的 SNI,但兩者都必須符合伺服器要求。發生憑證錯誤時,應檢查系統時間、網域與憑證鏈,不要把 allowInsecure 當成日常修復選項。

如果記錄已顯示連線成功,但部分網站仍無法開啟,排查重點應轉向 DNS、規則比對與目標網站連線。切換協定有時只是剛好換到另一條線路,不能據此證明原協定本身有問題。一般檢查步驟可參考故障排除;若不熟悉相關概念,可查看概念速查。

七、協定選擇常見問題

VLESS 的 encryption 設為 none,需要改成加密選項嗎?

請勿自行修改。先開啟節點編輯頁,確認伺服器端要求的 TLS 或 REALITY 是否已設定。常見 VLESS 設定使用 none,由外層保護連線;新增加密擴充功能需要連線兩端明確支援,不能只在用戶端單方面啟用。

Trojan 已填入密碼,為什麼仍然握手失敗?

先核對連接埠與 TLS 伺服器名稱,再檢查系統時間及憑證錯誤。TLS 握手可能在密碼驗證之前就失敗,此時反覆更換密碼沒有幫助。伺服器名稱請依節點提供者的設定填寫,不要從節點備註猜測。

Shadowsocks 可以開啟網頁,遊戲卻連不上?

確認遊戲是否使用 UDP,再檢查伺服器端 UDP 轉送、本機接管方式及個別應用程式規則。一般 HTTP 代理無法涵蓋所有 UDP 應用程式;桌面端使用 TUN 時也要確認設定正確,Android 則請檢查遊戲是否被排除在 VPN 接管範圍之外。

同一份訂閱在 v2flyNG 中少了幾個可用節點,怎麼辦?

檢查缺少或連線失敗的節點所使用的完整組合。如果節點仰賴 Xray 的 REALITY / Vision 功能,請改用支援該組合的 v2rayNG,或向服務提供者索取相容 V2Fly 的節點。不要直接把不支援的安全類型改成 TLS。

直接選延遲最低的協定就可以了嗎?

先確認測量的是 TCP 連線,還是實際代理請求。依照前述相同條件的方法重複測試,比較網頁載入、持續下載與逾時次數。最後保留一個穩定的主要節點和一個確認可用的備援節點,比依協定名稱排序更可靠。

最後可依三個步驟選擇:先確認伺服器提供哪些設定,再確認用戶端與核心能否完整支援,最後比較目前網路環境下的實際表現。VMess、VLESS、Trojan 與 Shadowsocks 都需要相符的設定;路由、DNS 和線路品質也不會因為更換協定名稱就自動改善。

下載v2rayN