2026-09-09 · 協定選型 · 約 10 分鐘

VMess、VLESS、Trojan、Shadowsocks 協定比較:四種代理協定怎麼選

比較 VMess、VLESS、Trojan 與 Shadowsocks 的加密、握手耗時、傳輸方式及用戶端支援,整理 TLS、REALITY 等配置的適用情境。

本文重點

先確認伺服器提供的完整配置,再選擇用戶端核心。現有 VMess 節點穩定可用,就不必更換;新建連線且兩端都支援 Xray 時,可優先評估 VLESS 搭配 TLS 或 REALITY;已有憑證與網域管理流程,可考慮 Trojan;需要較精簡的加密代理配置,則可考慮 Shadowsocks。本文適合使用訂閱或自行設定節點的使用者,說明協定、安全層、傳輸方式與路由各自的用途,以及如何避免匯入成功卻無法連線。

一、四種協定的差異:驗證、加密與外層保護

四種協定不能只按「新舊」排序。VMess 與 Shadowsocks 內建資料加密機制;常見的 VLESS 配置不會在協定層加密負載,因此需要外層安全通道;Trojan 的常見部署則仰賴 TLS。比較安全性時,必須一併列出協定與外層保護,不能直接拿未加外層保護的 VLESS,和已加密的 VMess 連線相比。

協定 驗證與加密 常見部署組合 需確認的欄位
VMess UUID 身分識別;現代部署採用 AEAD,實際負載加密方式依配置而定 TCP;WebSocket + TLS UUID、加密方式、傳輸參數;舊欄位 alterId 通常設為 0
VLESS UUID 身分識別;常見設定為 encryption none,由 TLS 或 REALITY 保護通道 TCP + TLS;TCP + REALITY;依伺服器需求啟用 Vision UUID、flow、安全層、serverName;REALITY 的公鑰與 shortId
Trojan 密碼驗證;依賴 TLS 加密通道並驗證伺服器身分 TCP + TLS 密碼、連接埠、serverName、憑證驗證
Shadowsocks 密碼或金鑰;由指定的加密方式提供保護 直接使用 TCP/UDP;延伸組合依實作而異 method、密碼或金鑰、UDP 支援情況;是否採用 2022 系列

VMess 的 alterId: 0 是現代 AEAD 配置中常見的相容性欄位,不代表沒有加密。Shadowsocks 也不能只寫「支援 SS」:傳統 AEAD 方法與 2022 系列對金鑰格式和核心版本的要求不同。匯入後若核心不識別方法名稱,修改顯示名稱也無法解決問題。

二、依使用情境選擇:先符合伺服器條件

訂閱使用者通常不需要自行更改協定。VMess 伺服器不會因為用戶端把類型改成 VLESS 就接受連線。自行架設時,才需要一併考量憑證管理、連接埠開放、傳輸支援與用戶端版本。以下建議適用於新建、兩端配置可控且支援相應設定的連線,不代表各種網路環境下的速度排名。

VLESS + TLS / REALITY

建議

支援的 Xray 組合可使用 Vision。TLS 與 REALITY 是不同的安全配置方式,不能只更改名稱;請依伺服器提供的參數完整設定。

適用情境:新建連線、兩端配置可控,且能維護核心版本

VMess + WebSocket + TLS

已有成熟配置時,繼續使用可省下排查時間。若經過反向代理,WebSocket 路徑、Host、TLS 網域與後端監聽位址也必須一致。

適用情境:保留現有 VMess 節點、沿用已驗證的反向代理配置

Trojan + TLS

設定重點是密碼與 TLS。若已有網域、有效憑證及憑證更新流程,維運範圍較明確;憑證過期或網域不符仍會造成連線失敗。

適用情境:已有 TLS 維運流程,且希望使用密碼驗證的部署

Shadowsocks AEAD

基本參數較少,但必須確認實際使用的加密方式。若應用程式需要 UDP,也要確認伺服器、用戶端與中間網路都完整支援 UDP 轉送。

適用情境:已提供相符的加密方式,且希望簡化基本參數管理的連線

結論:先列出伺服器的完整配置,再決定是否遷移

將節點記錄為「協定 + 傳輸 + 安全層 + flow」,例如「VLESS + TCP + REALITY + Vision」。只有目標用戶端支援整組配置,遷移才有意義;只看支援 VLESS 的標示,無法判斷是否可用。

三、握手耗時與速度:沒有放諸四海皆準的最快協定

握手耗時會影響新連線的建立時間;持續傳輸速度則更多取決於線路頻寬、封包遺失、伺服器負載與終端效能。建立 TCP 連線、TLS 握手及 WebSocket 的 HTTP Upgrade 都可能增加往返時間;是否重用連線、是否恢復 TLS 工作階段,也會影響實際耗時。因此,不能替四種協定訂出固定的毫秒數。

常見配置下,VLESS 不會在協定層重複加密負載,但不代表它一定比所有 VMess 或 Shadowsocks 節點快。若節點位於不同機房或使用不同出口,測試結果主要反映線路差異。Vision 也不是「啟用後頻寬翻倍」的開關;其用途與適用條件應依核心文件和兩端配置判斷。

  1. 固定測試條件。盡量使用相同的伺服器、出口與測試資源;若無法控制這些條件,只能將結果視為節點體驗比較,不應歸因於協定本身。
  2. 分開測量連線建立與下載。記錄首次回應時間,再觀察至少 30 秒的持續傳輸平均速率。單次延遲測試無法代表串流影片或大型檔案的使用體驗。
  3. 每組重複測試 3 次。採用中位數,並記錄測試時間、是否啟用連線重用,以及是否有背景下載。保留失敗次數,不要只記下最好的一次。
  4. 保持路由設定一致。確認測試請求確實經過待測的出站。如果某次測試符合直連規則,測得的速度就不代表代理連線。

多路複用也應分開評估。它可能降低部分短連線的開銷,但若組合不合適或網路有封包遺失,也可能加劇連線之間的相互影響。先保留用戶端與伺服器已驗證的設定,確認有明確問題後再單獨調整,避免一次更改協定、多路複用和 DNS 三項參數。

四、TLS、REALITY 與傳輸層:不同配置不能互相取代

TLS 用來保護通道並驗證伺服器身分;WebSocket 是傳輸封裝方式;REALITY 是 Xray 提供的安全機制,並非第五種代理協定。TCP、WebSocket 與安全層屬於不同的配置面向。伺服器提供 TCP + REALITY 時,不能自行改成 WebSocket + TLS,並期待連線仍能正常運作。

以下是 Xray JSON 中 VLESS + TCP + TLS 的出站結構範例。example.net 是文件範例網域,UUID 也是示範值,這段內容無法用來連線。實際使用時,必須採用伺服器提供的位址、身分識別資訊與憑證網域;REALITY 節點不能直接套用這份 TLS 配置。

{
  "outbounds": [
    {
      "tag": "proxy",
      "protocol": "vless",
      "settings": {
        "vnext": [
          {
            "address": "example.net",
            "port": 443,
            "users": [
              {
                "id": "6e7d180b-486c-4f4a-89c4-574ca70b83d2",
                "encryption": "none"
              }
            ]
          }
        ]
      },
      "streamSettings": {
        "network": "tcp",
        "security": "tls",
        "tlsSettings": {
          "serverName": "example.net",
          "allowInsecure": false
        }
      }
    }
  ]
}

這裡的 outbounds 只描述出站,不包含完整的本機入站與路由。使用 v2rayN 管理節點時,應優先在節點編輯介面維護參數;不要直接覆寫用戶端產生的執行配置,以免下次啟動或更新訂閱時被重新產生。如需了解其他欄位的用途,請參閱JSON 設定手冊。

五、用戶端與核心:名稱相同不代表支援相同組合

v2rayN 是桌面用戶端,支援的協定能力取決於實際呼叫的核心及版本。Android 上的 v2rayNG 使用 Xray 核心,v2flyNG 使用 V2Fly 核心。Project V、V2Fly、Xray 之間有技術淵源,但不同專案的設定欄位與擴充能力不能直接畫上等號,尤其是 REALITY、Vision 與較新的傳輸方式。

用戶端檢查重點發生連線失敗時先做什麼
v2rayN節點使用的核心、核心版本、傳輸與安全參數開啟節點編輯介面確認配置,再查看啟動記錄中的核心資訊
v2rayNG用戶端隨附的 Xray 版本與節點欄位檢查節點編輯頁面的 TLS/REALITY 與 flow;更新後重新確認匯入的內容
v2flyNGV2Fly 對特定協定與傳輸方式的支援情況REALITY 等 Xray 專用組合應先確認支援情況,不要勉強改寫連結

訂閱連結是用來傳送節點參數的載體,不是第五種代理協定。即使成功匯入,訂閱格式轉換仍可能遺失部分擴充欄位。若同一節點在一個用戶端可用、另一個卻無法使用,先逐項比對協定、連接埠、傳輸、安全層、SNI、flow 與驗證資訊,再判斷是否為核心支援能力不同。

六、連接埠、UDP 與路由:分辨連線的不同層級

伺服器連接埠、本機代理連接埠與應用程式的目標連接埠用途不同。以下三個數字僅用來辨認配置位置,並非所有節點的預設值,也不是效能建議。實際監聽位址與連接埠請以用戶端目前設定為準。

443
TLS 伺服器入口連接埠範例
10808
本機 SOCKS 監聽連接埠範例
8388
Shadowsocks 伺服器連接埠範例

將伺服器連接埠設為 443,不會自動啟用 TLS;仍須正確設定協定握手與安全層。同樣地,瀏覽器連線至本機 SOCKS 連接埠,與用戶端連線至遠端 443,是兩個不同階段。系統代理只會影響遵循系統代理設定的應用程式,不能據此判定所有流量都經過代理。

結論:分別確認網頁、UDP 與出口位址

先透過一般網頁確認 TCP 連線,再測試需要 UDP 的應用程式,最後確認目標請求符合哪條路由規則。分別記錄這三項結果,就能避免把應用程式未使用代理誤判為協定問題。

七、常見問題:成功匯入後如何排查

VMess 節點還能用,需要全部換成 VLESS 嗎?

沒有一定要遷移的要求。先確認目前的 VMess 使用現代 AEAD 配置;舊式配置中的 alterId 通常應為 0,並確保系統時間同步。只有在伺服器提供新的完整配置,而且用戶端支援相應組合時,才複製節點進行對照測試,不要直接修改原節點的協定類型。

VLESS 匯入後一直逾時,應先檢查哪個參數?

先確認遠端位址與連接埠可連通,再開啟節點編輯介面檢查安全層。REALITY 節點應優先確認公鑰、shortId、serverName 與 flow;TLS 節點則檢查憑證網域。接著查看記錄,分辨網路逾時、驗證失敗與握手失敗,不要只憑「逾時」就判定 UUID 有誤。

Trojan 發生憑證錯誤,開啟略過驗證就可以了嗎?

應先檢查裝置日期與時區、serverName、憑證有效期限及伺服器憑證鏈。即使使用 IP 連線,仍須依伺服器說明填入憑證對應的網域。略過驗證會降低伺服器身分驗證的安全性,不應作為日常的修復方式。

Shadowsocks 密碼正確,為什麼還是連不上?

請一併確認伺服器連接埠與完整的 method 名稱,例如 aes-128-gcm 和 2022 系列並非相同配置。部分方法要求固定長度的編碼金鑰,不能用任意密碼取代。若記錄顯示不支援該加密方式,請檢查使用的核心版本,再向節點提供者確認相容配置。

更換協定後,中國大陸與海外的分流會自動調整嗎?

不會。協定決定連線方式,路由則決定請求要走哪個出站。在 v2rayN 的「設定」→「路由設定」檢查目前規則,選單名稱可能因版本而異;也要確認系統代理狀態。若規則綁定特定出站標籤,還須確認該標籤仍指向新的節點。

下載v2rayN