VMess 和 VLESS 的差別,歸根究柢在於一個設計選擇。VMess 用內建的加密方式自己加密你的流量,而 VLESS 本身沒有加密,靠的是底下的 TLS 或 REALITY。這讓 VLESS 更輕量,也讓它擁有 REALITY 和 Vision 流控等較新的功能。新架的伺服器通常選 VLESS 比較好;已經在用、搭配 TLS 的 VMess 伺服器也照樣能用。

以下是兩者的詳細比較。

兩者的由來

VMess 是 V2Ray(Project V)最初的協定,大約誕生於 2016 年。它的設計目標是本身就足夠安全,所以不需要 TLS 也會驗證並加密每條連線。

VLESS 在 2020 年由 V2Ray 社群提出,作為更輕量的後繼者。同年 Xray 從 V2Ray 分支出來,VLESS 的開發也延續到了 Xray。Xray、V2Ray、sing-box 和 Mihomo 都支援這兩種協定,但新功能都出現在 VLESS 上。VLESS 和 REALITY 的細節請讀 VLESS REALITY 是什麼?

VMess 與 VLESS 一覽

VMess VLESS
內建加密 有:aes-128-gcm、chacha20-poly1305、auto 或 none 無(Xray 中有選用的 VLESS Encryption)
使用者 ID UUID UUID,或由 Xray 轉換成 UUID 的文字
需要 TLS 才能保密 不需要,但建議使用 需要,或使用 REALITY
依賴時鐘時間 是 否
alterId 有;請用 0 無
REALITY 否 是
Vision 流控 否 是
XHTTP 傳輸 Potatso 不支援 是
WebSocket、gRPC、HTTP Upgrade、HTTP/2 是 是
憑證釘選、ECH(Potatso 中) 否 是
UDP 是,Potatso 中預設關閉 是,Potatso 中預設關閉
搭配 TLS 時的負擔 加密兩次 加密一次

標示「Potatso」字樣的列說明的是 Potatso 的支援情況;所有設定都列在 VMess 和 VLESS 參考文件中。

加密:自帶加密 vs TLS

VMess 會用你在伺服器上選擇的加密方式加密每條連線:

  • aes-128-gcm 在任何 Apple 裝置上都很快,因為這些裝置以硬體執行 AES。
  • chacha20-poly1305 適合沒有 AES 硬體加速的裝置。
  • auto 讓用戶端自行選擇,Potatso 會選 aes-128-gcm。
  • none 關閉 VMess 的加密。只能搭配 TLS 使用,由 TLS 來加密連線。

VLESS 則省略了這一層。VLESS 連線的保密程度完全取決於底下那一層,所以幾乎都會搭配 TLS 或 REALITY 使用。兩者都沒有的話,VLESS 會以明文傳送你的流量。

因此,TLS 上的 VMess 會把你的資料加密兩次:VMess 一次、TLS 一次。這樣雖然安全,卻很浪費。TLS 上的 VLESS 只加密一次。

關於 VLESS Encryption。 Xray 在 2025 年為 VLESS 加入了 VLESS Encryption,這是一個選用的後量子加密層。它還很新,大多數伺服器都沒有使用。如果連結或訂閱中帶有這項設定,Potatso 也支援。

alterId 與驗證

VMess 最初的驗證採用以 MD5 為基礎的機制,並由一個叫 alterId 的設定控制。V2Ray 在 2020 年推出 AEAD 驗證(alterId 為 0 時使用),伺服器則在 2022 年棄用了舊機制。

  • 如果服務商給了你 alterId,能填 0 就填 0。
  • Potatso 一律使用 AEAD 驗證。使用者 alterId 仍大於 0 的伺服器也會接受,所以伺服器端不需要做任何更改。

VMess 也會檢查時間戳記,所以裝置的時間必須和伺服器相近。iPhone 會自動設定時間,因此這很少造成問題;但如果伺服器的時鐘不準,它會拒絕所有 VMess 用戶端。

VLESS 沒有 alterId,也不檢查時間。它只送出使用者 ID,其餘交給 TLS 或 REALITY。

傳輸

兩種協定都能使用同一系列的傳輸:

  • 不使用傳輸的 TCP,直接連線或搭配 TLS。
  • WebSocket、HTTP Upgrade 和 gRPC,常用來穿過 CDN。
  • HTTP/2,Xray 後來已改用 XHTTP 取代。

兩者在 Potatso 中的差別在於 Xray 最新、以 HTTP 為基礎的傳輸 XHTTP:VLESS 可以用,VMess 目前還不行。兩者都不支援 mKCP 和 QUIC。

REALITY 與 Vision:VLESS 獨有

如今選擇 VLESS 最大的理由,是建立在它之上的功能:

  • REALITY 讓伺服器借用真實網站的 TLS 交握,因此不需要自己的網域或憑證,陌生的訪客也只會看到那個網站。VMess 無法使用 REALITY。
  • Vision(xtls-rprx-vision)會填充你透過代理建立的 TLS 交握,讓「TLS 套 TLS」的特徵更難被看出來。

想用其中任何一項,就得用 VLESS。用戶端的設定方式請見 iPhone 設定 VLESS REALITY 教學。

速度與限制

VLESS 省去了 VMess 額外的加密,所以 CPU 用量稍低,額外負擔也稍小。不過在手機上你大概感覺不出來:伺服器的距離、負載和網路路徑影響大得多。

在 Potatso 中,VMess 有一個實際的限制:單一 VMess 連線約可上傳 1 GiB,之後 Potatso 會關閉該連線,而不是降低加密強度。下載沒有限制。如果要單次上傳非常大的檔案,請使用 VLESS 或 Trojan。

流量特徵

兩種協定只要設定得當都有加密,但加密並不能隱藏一切。沒有 TLS 的 VMess 有自己可辨識的樣貌。Potatso 不使用 VMess 的 chunk 遮罩或填充選項,所以在沒有 TLS 包覆時,VMess 流量的封包大小模式更容易被辨識。TLS 上的 VLESS,尤其是搭配 Vision 的 REALITY,看起來更像一般的 HTTPS。兩者都不是無法偵測的。

該選哪一個?

選 VLESS,如果:

  • 你要架設新的伺服器,
  • 你想用 REALITY,省去網域和憑證,
  • 你想用 Vision、XHTTP 或憑證釘選。

繼續用 VMess,如果:

  • 你的服務商只提供 VMess,或你已經有一台運作正常的 VMess 伺服器,
  • 它使用 TLS,或透過 CDN 使用 TLS 上的 WebSocket。

避免:

  • 在新伺服器上使用 alterId 大於 0 的 VMess,
  • 使用 none 或 zero 加密方式又沒有 TLS 的 VMess,
  • 沒有 TLS、REALITY 或 VLESS Encryption 的 VLESS。

如果你考慮的不只這兩種,代理協定比較把 VLESS 和 VMess 與 Trojan、Shadowsocks、Hysteria 2 和 AnyTLS 放在一起比較。

在 iPhone 上使用 VMess 或 VLESS

Potatso 可以從分享連結、QR 碼,以及 Clash、V2Ray 或 Xray 訂閱匯入這兩種協定;VMess 也能從 Surge 設定匯入。步驟和其他伺服器相同:

  1. 安裝 App Store 上的 Potatso。
  2. 貼上你的 vmess:// 或 vless:// 連結、掃描它的 QR 碼,或匯入你的訂閱。
  3. 如果你的伺服器會轉送 UDP,請在伺服器設定中開啟 UDP 轉送。
  4. 允許 VPN,然後在首頁連線。

包含 REALITY 欄位與常見錯誤的完整教學,請見 iPhone 設定 VLESS REALITY 教學。如果你的訂閱裡有很多伺服器,請見 iPhone 匯入 Clash 訂閱教學。

常見問題

VMess 和 VLESS 有什麼不同?
VMess 會用 aes-128-gcm 之類的加密方式自己加密你的流量。VLESS 沒有內建加密,而是靠底下的 TLS 或 REALITY,因此更輕量,也能使用 REALITY 和 Vision 流控等較新的功能。
VLESS 比 VMess 快嗎?
通常稍微快一點,因為 TLS 上的 VLESS 只加密一次,而 TLS 上的 VMess 會加密兩次。不過在手機上差異往往不大,伺服器的距離和負載影響大得多。
不搭配 TLS 的 VLESS 安全嗎?
不安全。單純的 VLESS 會以未加密的方式傳送你的流量。請一定要搭配 TLS 或 REALITY,或是 Xray 的 VLESS Encryption 使用。
VMess 的 alterId 應該填多少?
填 0。alterId 為 0 代表目前的 AEAD 驗證;大於 0 的值屬於舊的 MD5 驗證,伺服器已在 2022 年棄用。Potatso 一律使用 AEAD,這些伺服器同樣接受。
VMess 可以用 REALITY 嗎?
不行。REALITY 適用於 VLESS(部分伺服器也支援 Trojan),不適用於 VMess。想用 REALITY,請架設 VLESS 伺服器。

其他語言版本: English · 简体中文 · 日本語 · Русский