VMess、VLESS、Trojan、Shadowsocks 協定差異比較:依使用情境挑選代理協定

比較 VMess、VLESS、Trojan 與 Shadowsocks 的加密方式、傳輸搭配、設定難度及用戶端支援,依使用情境挑選合適的代理協定。

本文速覽

先釐清代理協定、傳輸方式與安全層的差異,再核對伺服器參數及用戶端核心。本文適合正在挑選訂閱節點、移轉桌面與 Android 設定,或準備自架服務的使用者。讀完即可了解 VMess、VLESS、Trojan、Shadowsocks 各自需要哪些設定欄位、哪些組合不能互換,以及連線失敗時應先檢查哪一層。

一、代理協定、傳輸方式與安全層是不同設定

VMess、VLESS、Trojan、Shadowsocks 定義用戶端與代理伺服器如何驗證、封裝及轉送要求。TCP、WebSocket、gRPC 描述連線或承載方式;TLS、REALITY 則屬於安全機制。節點名稱常把不同層的資訊放在一起,因此不能只看協定名稱開頭就判斷完整設定。

例如,VLESS + WebSocket + TLS 和 VLESS + TCP + REALITY 雖然都使用 VLESS,但伺服器入口、握手參數及中間網路需求各不相同。把第一種節點的傳輸方式改成 TCP,不會自動變成第二種設定;若伺服器沒有相應的監聽服務,用戶端只會連線失敗。

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

比較加密方式時,必須同時確認兩件事:代理協定本身是否會加密負載資料,以及外層是否另有 TLS 等保護。欄位顯示 none,不一定代表整條連線都沒有加密;反過來說,使用 443 連接埠也不能證明連線已啟用 TLS。

協定 驗證與加密 常見組合 需要核對的欄位
VMess 以 UUID 識別使用者;新版設定使用 VMess AEAD,負載資料是否加密由 security 設定決定 TCP;WebSocket + TLS UUID、security、alterId、傳輸方式、安全層、系統時間
VLESS 以 UUID 識別使用者;協定本身不負責加密負載資料 TCP + TLS;WebSocket + TLS;Xray 下的 TCP + REALITY UUID、encryption、flow、TLS 或 REALITY 參數
Trojan 以密碼驗證;常見部署會依賴 TLS 保護連線 TCP + TLS;其他承載方式需雙方實作支援 密碼、連接埠、伺服器名稱、憑證驗證、傳輸方式
Shadowsocks 依 method 與密碼或金鑰資料加密;AEAD 與 2022 系列的要求不同 原生 TCP、UDP 轉送;其他承載方式需額外支援 method、密碼或金鑰格式、連接埠、UDP 支援

VMess:留意 AEAD 與舊版欄位

新版 VMess 設定通常使用 alterId: 0 表示 AEAD 用法。舊教學中的非零 alterId 不應直接套用到目前的設定。VMess 驗證也依賴系統時間;若 Windows 或 Android 的時間明顯有誤,請先啟用自動校時,再判斷 UUID 是否填錯。是否加上 TLS,仍須以伺服器端部署方式為準。

VLESS:不內建負載加密,不代表可以明文傳輸

VLESS 的 encryption: "none" 是常見設定值,連線保護則交由 TLS 或 REALITY 等機制負責。一般公開網路上的部署,不應只因為「VLESS 開銷較低」就移除安全層。xtls-rprx-vision 是特定組合使用的 flow 值,不能直接套用到所有 WebSocket 節點,也不能只在用戶端單方面啟用。

Trojan 與 Shadowsocks:除了密碼,其他設定也必須相符

即使 Trojan 密碼正確,只要 TLS 伺服器名稱錯誤,仍可能在驗證前就因握手失敗而無法連線。Shadowsocks 則必須正確指定加密方法;aes-128-gcm 和 2022-blake3-aes-128-gcm 並非可互換的名稱,後者對金鑰格式有明確要求,不能隨意填入一般密碼。

結論:先確認安全層,再比較協定名稱

檢查節點編輯頁中的 TLS 或 REALITY 設定,以及憑證驗證狀態。不要因為 VLESS 的 encryption 是 none 就關閉安全層,也不要把停用憑證驗證當作 Trojan 的長期解決方式。

三、依使用情境選擇,不要替協定排名

使用訂閱時,可選的協定首先取決於服務提供者。若兩個不同協定的節點,在伺服器、網路線路、負載及出口方面都不相同,測速結果就無法證明哪種協定普遍較快。自架服務則可先確認憑證、網域及網路入口條件,再決定傳輸組合。

VLESS:建立新的 Xray 設定

建議

在伺服器與用戶端都支援的前提下,依部署條件選擇 TLS 或 REALITY。先核對 UUID、安全參數及 flow,不要把「參數較少」誤解為「可以省略安全層」。此建議適用於可自行管理伺服器的新建設定。

適合:使用 Xray、可管理伺服器,並能維護完整連線參數的情況

VMess:保留已驗證可用的節點

如果現有 VMess AEAD 節點連線穩定,且桌面與 Android 都能匯入,就可以繼續使用。移轉協定前,先確認舊版欄位與時間設定;不必只為了更換協定名稱就重建服務。

適合:現有訂閱、已部署 WebSocket + TLS,或需相容既有設定的情況

Trojan:已有網域與憑證

一般 TCP + TLS 部署的設定結構較直接,但仍須維護憑證效期、網域解析及伺服器名稱。除了密碼,TLS 握手連線同樣需要檢查。

適合:具備憑證維護條件,且伺服器已提供 Trojan 入口的情況

Shadowsocks:需要明確的加密轉送功能

原生連線所需欄位較集中,重點在 method、金鑰與連接埠。若需要 UDP,必須另外確認伺服器轉送設定及網路是否放行;不能只根據網頁能否開啟來判斷。

適合:已有相符的伺服器,且希望維持原生 TCP/UDP 轉送架構的情況

這四種協定都不能完全保障匿名性。伺服器的營運方式、DNS 路徑、應用程式的登入狀態及用戶端分流設定,仍會影響實際使用結果。選擇協定時應記下部署限制,不要光憑名稱推斷所有安全特性。

四、v2rayN、v2rayNG、v2flyNG 的支援範圍

v2rayN 是桌面用戶端,v2rayNG 是採用 Xray 核心的 Android 用戶端,v2flyNG 則使用 v2fly 核心。用戶端負責管理節點及產生設定,實際執行協定的是核心。能辨識訂閱項目,不代表目前使用的核心一定支援其中所有擴充參數。

用戶端 檢查位置 選用注意事項
v2rayN 節點編輯視窗中的協定、傳輸與安全設定;啟動記錄中的核心資訊 依桌面端實際使用的核心判斷;VLESS + REALITY 須確認 Xray 支援及相關參數
v2rayNG 長按節點 → 編輯;查看記錄頁中的啟動錯誤 四種基本協定可依相應設定使用;新擴充功能取決於應用程式隨附的 Xray 版本
v2flyNG 節點編輯頁、應用程式版本及啟動記錄 以 v2fly 核心實際支援的功能為準;不能直接移入 Xray 的 REALITY、Vision 參數

移轉方式:先確認協定類型,再核對擴充欄位

桌面端:v2rayN
  • 匯入後查看節點編輯視窗,確認位址、連接埠、傳輸方式與安全層。
  • 使用 REALITY 時,請核對公鑰、shortId、伺服器名稱及指紋設定。
  • 啟動後查看核心記錄,先排除設定解析錯誤,再測試網頁。
Android:v2rayNG 或 v2flyNG
  • 使用與伺服器參數相符的核心,不要只比較應用程式介面顯示的協定名稱。
  • 移轉到 v2flyNG 前,先確認設定是否包含 Xray 專用擴充功能。
  • 檢查系統 VPN 授權及個別應用程式設定,避免把流量入口問題誤判為協定問題。

共用訂閱網址可減少重複輸入,但兩端能否使用同一個節點仍取決於核心支援;訂閱更新也須在各端分別執行。

五、透過連接埠與記錄判斷連線失敗的位置

以下三個數字用來說明不同層級的連接埠用途,並非所有用戶端的預設值,也不是部署要求。伺服器入站連接埠與本機代理監聽連接埠位於連線兩端,不能互相替代。填寫前請先查看節點設定及本機實際監聽值。

443
伺服器 TLS 入站範例連接埠
10808
本機 SOCKS 入口範例連接埠
1080
另一個 SOCKS 入口範例連接埠
  1. 先確認核心已啟動。若記錄中出現設定解析失敗、未知欄位或連接埠被占用,請先修正設定。此時測試協定速度沒有意義。
  2. 接著確認應用程式有將流量交給用戶端。桌面端檢查系統代理是否指向實際監聽連接埠;Android 則確認 VPN 是否已建立,以及目標應用程式是否遭到排除。
  3. 檢查伺服器是否可連線。若連線逾時,先核對位址、入站連接埠、防火牆及服務是否正在執行。逾時本身不能證明 UUID 錯誤。
  4. 分辨安全握手與使用者驗證。憑證錯誤時,優先檢查系統時間、伺服器名稱及憑證鏈;驗證錯誤時,再核對 UUID、密碼、金鑰及加密方法。
  5. 最後檢查傳輸參數。WebSocket 須核對 path 與 Host;gRPC 須核對 serviceName;REALITY 則須核對伺服器提供的公鑰、shortId 等欄位。

例如,本機 SOCKS 監聽位址確認為 127.0.0.1:10808 時,可以使用以下指令驗證要求能否經由用戶端送出。此處使用網域測試頁,不含訂閱憑證;若實際連接埠不同,請改用實際值。

curl --proxy socks5h://127.0.0.1:10808 --connect-timeout 10 --max-time 20 https://example.com/

socks5h 表示將目標網域交由 SOCKS 代理處理。這項測試會略過系統代理設定,但不會略過核心路由:若規則將該網域分流為直連,即使成功回應,也不能證明遠端代理出口可用。請同時查看記錄中的命中規則及出口,再做判斷。

六、比較效能時,哪些條件要保持一致

不同線路之間的延遲、壅塞、封包遺失及伺服器負載,往往比協定封裝方式的差異更明顯。VMess、VLESS、Trojan、Shadowsocks 這些名稱無法直接換算成傳輸量。硬體是否支援加密加速、是否啟用額外承載方式,以及測試流量是否經過相同出口,都會影響結果。

結論:保留穩定組合,再進行單一變因測試

先匯出可還原的設定,每次只調整一項伺服器端也支援的選項。連續 3 次測試都有改善,且記錄確認流量經過相同出口後,再考慮替換日常使用的節點。

七、協定選型常見問題

VLESS 的 encryption 是 none,需要手動改成 AES 嗎?

不需要。VLESS 的這個欄位不是 VMess 或 Shadowsocks 的加密方法選擇器。請開啟節點編輯頁,確認安全層依伺服器要求設為 TLS 或 REALITY,並核對相應參數;不要在 encryption 欄位填入其他協定的演算法名稱。

Trojan 使用 443 連接埠,為什麼仍出現憑證錯誤?

連接埠不負責驗證身分。先啟用裝置自動校時,再比對 TLS 伺服器名稱與伺服器憑證涵蓋的網域,並檢查憑證是否過期及憑證鏈是否完整。連線位址可以與伺服器名稱不同,但後者必須符合部署要求,不應長期以停用驗證的方式運作。

同一份訂閱在 v2rayNG 可用,v2flyNG 卻不能用,該怎麼辦?

先開啟該節點的編輯頁,檢查是否包含 REALITY 或 xtls-rprx-vision。這類 Xray 擴充功能不能當成通用 VLESS 參數移轉。請改用伺服器另外提供的相容節點,或使用相符的核心;不要只刪除錯誤欄位,因為伺服器可能仍需要這些設定。

Shadowsocks 可以開啟網頁,但遊戲流量失敗,是選錯協定嗎?

先確認遊戲是否使用 UDP,再檢查伺服器是否啟用 UDP 轉送、防火牆是否放行相應連接埠,以及用戶端的流量接管方式是否涵蓋該應用程式。TCP 網頁連線成功不能取代 UDP 測試;確認這些條件後,再比較其他伺服器提供的協定組合。

現有 VMess 節點很穩定,有必要全部改用 VLESS 嗎?

不必只因為協定名稱不同就移轉。先確認現有設定採用新版 AEAD 用法、系統時間正確,且安全設定符合部署要求。若確實需要新功能或維護需求,再新增一組相符的 VLESS 伺服器設定,測試通過後才移轉;不要直接覆蓋唯一可用的節點。

下載 v2rayN桌面與 Android 用戶端