VMess、VLESS、Trojan、Shadowsocks 怎麼選?四種代理協定比較與適用情境

比較 VMess、VLESS、Trojan 與 Shadowsocks 的加密方式、握手成本、傳輸搭配和客戶端相容性,整理不同情境的選擇重點。

本文重點

選擇協定前,先確認伺服器提供的設定,以及客戶端使用的核心,再檢查傳輸方式與安全參數。本文適合需要匯入訂閱、遷移舊節點或比較連線方案的使用者:看完即可分辨協定與傳輸層、辨識 UUID、密碼、SNI、flow 等欄位,並在相同線路下測試,避免把網路差異誤認為協定差異。

先分清協定、傳輸方式與安全層

VMess、VLESS、Trojan、Shadowsocks 是代理協定名稱。WebSocket、gRPC 等是承載代理資料的傳輸方式;TLS 和 REALITY 則是需要另外確認的安全設定。訂閱中出現「VLESS + WebSocket + TLS」,代表同一條連線的不同層次,並非三種可互換的協定。

客戶端也不等於協定。v2rayN 是桌面客戶端;v2rayNG 在 Android 上使用 Xray 核心;v2flyNG 在 Android 上使用 V2Fly 核心。介面能儲存設定,不代表目前使用的核心一定支援每個欄位。尤其是 REALITY、特定 flow 和較新的加密方式,都要確認實際核心是否支援。

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

以下比較常見的部署方式,不會把某種傳輸方式視為某協定的唯一搭配。尤其要分清「代理協定本身的資料加密」和「外層 TLS」:兩者位於不同層次,不能只憑名稱判斷連線是否受到完整保護。

協定 驗證與加密 常見搭配 匯入後優先核對
VMess 以 UUID 辨識使用者;現代部署通常採用 AEAD 驗證,資料加密方式由 security 設定決定。 TCP,或 WebSocket + TLS。 UUID、security、傳輸類型、路徑、TLS;舊設定也可能包含 alterId。
VLESS 以 UUID 驗證;常見的 encryption=none 設定不提供協定層資料加密,通常會搭配 TLS 或 REALITY。 TCP + TLS、TCP + REALITY,或 WebSocket + TLS。 UUID、encryption、flow、伺服器名稱,以及 REALITY 的公鑰與 shortId。
Trojan 以密碼驗證;傳統部署仰賴 TLS 保護連線。 TCP + TLS;其他傳輸封裝須確認連線兩端都支援。 密碼、連接埠、SNI、憑證有效性與傳輸類型。
Shadowsocks 加密方式由方法與密碼或金鑰決定;AEAD 方法與 Shadowsocks 2022 的金鑰規則不同。 使用協定本身的 TCP、UDP 轉送;額外封裝須另行確認。 method、密碼或金鑰、伺服器位址、連接埠,以及是否開放 UDP。

VMess 驗證會依賴時間;裝置時鐘若明顯不準,可能導致連線失敗。請先啟用系統自動校時,再檢查 UUID 與傳輸參數。舊分享連結若含有 alterId,不要照舊教學一律改成某個非零值;現代 AEAD 設定通常使用 0,最後仍須與伺服器設定一致。

VLESS 常見設定中的 encryption=none 不代表「整條連線都未加密」,因為外層仍可能使用 TLS 或 REALITY。但也不能因此認定 VLESS 會自動提供這些保護。若設定使用新增的 VLESS 加密擴充功能,必須確認連線兩端的實作與版本都支援,不能套用傳統設定的欄位解讀方式。

結論:依完整參數組合選擇

比較時請記錄「協定 + 傳輸方式 + 安全層 + 核心」,例如「VLESS + TCP + REALITY + Xray」。只記錄「VLESS 節點」會漏掉影響相容性的關鍵條件,也不利於重現問題。

握手成本與速度:如何有效比較

握手次數不等於下載速度排名。建立連線時,TCP、TLS、代理驗證與傳輸封裝都可能增加等待時間;連線重複使用後,大型檔案傳輸則主要受線路頻寬、壅塞、伺服器負載和封包遺失影響。VLESS 的協定標頭較精簡,也不代表任何 VLESS 節點都比 VMess 節點快。

WebSocket 或 gRPC 常用來搭配現有的接入架構,不是免費的加速開關。TLS 工作階段恢復、連線重複使用和伺服器部署方式,也會影響實際表現。下列兩個連接埠只用來說明連線方向,不代表任何客戶端的預設連接埠,也不是速度測試數據。

443
常見的遠端 TLS 伺服器連接埠,請以伺服器設定為準
1080
本機 SOCKS 入口範例,請勿填入遠端連接埠欄位

依使用情境選擇協定

以下建議適用於「全新部署、兩端支援 Xray,且能取得完整設定」的情況。若現有服務運作穩定,維持相容性比為了協定名稱而遷移更重要。若沒有伺服器管理權限,也無法在本機自行新增協定。

VLESS:新設定的選項

建議

若連線兩端都支援所需功能,可評估使用 VLESS + TLS 或 REALITY。請逐項確認 flow、伺服器名稱與金鑰參數,別把 REALITY 當成所有 VLESS 節點的必備項目。

適用情境:使用 Xray,且能取得完整伺服器參數的新部署。

VMess:延續現有設定

若現有 VMess + WebSocket + TLS 服務運作正常,可以繼續使用。先檢查時間同步與 AEAD 相關設定,不必只因為出現其他協定就重建服務。

適用情境:已有 VMess 服務,需要延續現有接入設定。

Trojan:已有 TLS 服務

適合已能管理網域、憑證與 TLS 入站設定的情境。憑證過期、SNI 錯誤與密碼錯誤應分別排查;停用憑證驗證不是日常解決方法。

適用情境:已有網域憑證維護流程,且伺服器明確提供 Trojan。

Shadowsocks:設定明確的連線

主要參數包括位址、連接埠、加密方法與密碼。請選擇連線兩端都支援的加密方法;使用 Shadowsocks 2022 時,也要確認兩端支援相應的方法與金鑰格式。

適用情境:伺服器直接提供相容的 Shadowsocks 設定。

客戶端方面,v2rayN 應依節點功能選擇可用核心;v2rayNG 使用 Xray,遇到新增欄位仍須確認目前核心是否支援;v2flyNG 使用 V2Fly,不能因為都屬於相關生態系,就假設它支援 Xray 的 REALITY 或特定 flow。訂閱更新成功,只代表設定已取得,不代表所有節點都能啟動。

匯入與核對:從分享連結到實際連線

訂閱網址與單一節點分享連結是兩種不同的匯入方式。訂閱網址通常透過 HTTPS 取得一組節點;單一分享連結則常以 vmess://、vless://、trojan:// 或 ss:// 開頭。前綴只能辨識大致類型,不能保證核心支援所有擴充欄位。

  1. 辨識連結

    先分清訂閱網址與單一分享連結。本文流程適用於單一連結;不要把訂閱網頁內容當成節點密碼,也不要將含有 UUID、密碼或金鑰的完整連結貼到公開討論區。

  2. 匯入節點

    v2rayN 常見的匯入方式是「伺服器」→「從剪貼簿匯入分享連結」;v2rayNG 則是在主畫面右上角點選「+」→「從剪貼簿匯入」。不同版本的介面文字可能略有不同,請選擇匯入分享連結的項目,而非訂閱設定。

  3. 核對欄位

    在 v2rayN 選取節點後開啟編輯視窗,或在 v2rayNG 點選節點的編輯圖示。依序檢查位址、遠端連接埠、UUID 或密碼、傳輸類型、TLS 或 REALITY;使用 WebSocket 時,也要核對 Host 與路徑。

  4. 啟動並查看記錄

    先啟動節點,再開啟所需的代理入口。v2rayN 可在底部「系統代理」選擇「自動設定系統代理」;v2rayNG 啟動後,依系統提示允許 VPN 連線。若連線失敗,先查看記錄,判斷問題是設定解析、握手還是連線逾時,再針對相應項目調整。

常見問題:連線失敗時,先檢查哪一層

VLESS 匯入成功,為什麼一啟動就出錯?

先檢查是否出現不支援的欄位、flow 或安全類型。確認目前使用的核心,再對照伺服器設定檢查 UUID、REALITY 公鑰與 shortId。不要為了讓設定勉強儲存就刪除不熟悉的欄位;它們可能正是伺服器要求的條件。

Trojan 顯示憑證錯誤,可以直接略過驗證嗎?

先檢查裝置時間、SNI 和憑證有效期限。即使連線位址是 IP,也應填入伺服器指定的名稱。略過驗證會降低伺服器身分驗證的安全性,不能取代正確的憑證與名稱設定。

Shadowsocks 密碼相同,為什麼還是連不上?

也要檢查 method 與連接埠。不同加密方法對密碼或金鑰的要求不盡相同,不能只複製密碼。若網頁能開啟,但需要 UDP 的應用程式無法使用,請再檢查伺服器的 UDP、防火牆與客戶端轉送設定。

節點延遲正常,為什麼瀏覽器還是無法開啟網頁?

先確認瀏覽器流量確實經過客戶端,再檢查 DNS 與路由。TCP 探測成功不代表代理驗證或 TLS 握手也成功。桌面端請先單獨測試系統代理;排查期間不要同時切換 TUN、路由和協定。

最後應依可驗證的條件做選擇:伺服器確實提供、客戶端核心支援、參數可完整匯入,且實際應用能穩定連線。協定名稱只是檢查清單的第一項;保留一份可用設定,每次只修改一個變數,通常比反覆更換協定更容易找出問題。

下載 v2rayN選擇作業系統與安裝格式