Shadowrocket VMess 與 VLESS 差異:加密方式、傳輸層與欄位對照

比較 VMess 與 VLESS 的加密、UUID 和 TLS 需求,說明在 Add Server 中要填寫的欄位,以及如何辨識訂閱中的協定類型。

本文重點

VMess 與 VLESS 並非可以直接互換的名稱。兩者都常用 UUID 識別使用者,但 VMess 可在協定層加密資料;VLESS 本身不提供資料加密,須另外確認 TLS 等安全層設定。本文適合已有服務商與訂閱的使用者,分別從協定、傳輸與安全層說明差異,再整理 Shadowrocket 欄位核對與疑難排解順序。

一、先分清協定、傳輸與 TLS

在 Shadowrocket(小火箭)中,選擇 VMess 或 VLESS 只代表指定連線使用的代理協定,並未同時決定傳輸方式與安全設定。名稱中有 VLESS,不代表一定使用 WebSocket;使用 VMess,也不代表已啟用 TLS。

可以將一條連線拆成三個問題:雙方使用什麼協定識別使用者、代理資料如何封裝傳送,以及用戶端到伺服器這段連線是否受 TLS 保護。填寫時必須逐層配合伺服器設定,不能只填地址、連接埠和 UUID 就忽略其他欄位。

層級範例核對項目
代理協定VMess / VLESSType 必須與伺服器端類型一致,UUID 也必須對應同一個帳戶。
傳輸封裝TCP / WebSocket選擇伺服器指定的方式;使用 WebSocket 時,還須核對 Host 與 Path。
安全層TLS確認是否已啟用,並核對用於交握與憑證驗證的伺服器名稱。

TCP 與 WebSocket 是本文用來說明的兩種常見設定,不代表完整的支援清單。可選項目以 App 目前顯示為準;若現有訂閱提供了特定傳輸參數,應以該設定為準,不要只憑協定名稱自行補填。

二、VMess 與 VLESS 的加密和 UUID 對照

VMess 的協定設計包含驗證與資料加密機制,常見設定採用 AEAD。VLESS 的協定設計較精簡,本身不會加密代理負載。因此,VLESS 設定中出現 encryption=none,不能單獨解讀為「整條連線都沒有加密」:還要確認外層是否使用 TLS。

項目VMessVLESS
使用者識別碼通常使用 UUID。通常使用 UUID。
協定層加密具備資料加密機制;具體選項應依伺服器設定保留。本身不提供資料加密,不能直接套用 VMess 的加密演算法設定。
TLS 的作用可作為額外的外層保護;是否使用不會由 VMess 名稱自動決定。常用於保護用戶端與伺服器之間的連線;仍須核對實際安全設定。
舊欄位舊設定可能會出現 AlterId;現代 AEAD 設定通常為 0。不使用 VMess 的 AlterId 驗證機制。
能否改名轉換不能。修改 Type 不會一併轉換伺服器的監聽方式或帳戶設定。

UUID 是身分憑證,不是伺服器地址,也不是 TLS 憑證。即使兩筆設定恰好顯示相同的 UUID,只要協定、連接埠或傳輸方式不同,仍是不同的連線設定。請勿將 UUID 放進公開截圖、疑難排解貼文或分享文字中。

2 種
本文核對的協定類型:VMess 與 VLESS
36 個字元
標準連字號格式 UUID 的文字長度,不含前後空格
443
常見的 TLS 伺服器連接埠,但僅憑連接埠無法確認已啟用 TLS

判斷方式:先檢查 TLS,再解讀 none

遇到 VLESS 的 encryption=none 時,先開啟該筆設定檢查 TLS 與伺服器名稱;不要為了消除 none 字樣而改用 VMess,也不要因為連接埠是 443 就預設已啟用 TLS。

三、在 Home → Add Server 逐項填寫

手動新增時,從 Home 進入 Add Server。不同 Type 與傳輸選項會影響後續欄位,介面也可能隨 App 更新而調整;下表說明應核對的欄位含義,不代表每條連線的表單都完全相同。

  1. 先選擇 Type。依服務商提供的資訊選擇 VMess 或 VLESS,再填寫其他欄位,避免切換類型後遺漏重設的選項。
  2. 填寫 Address 與 Port。Address 只填指定的主機名稱或 IP,Port 填入指定數字;不要將整條分享連結貼進地址欄。
  3. 填寫 UUID。完整複製使用者識別碼,檢查前後空格、漏字元或誤複製的換行,不要自行產生替代值。
  4. 核對傳輸參數。若使用 WebSocket,請再核對 Host 與 Path。路徑開頭的斜線與大小寫都應保留。
  5. 核對安全參數。依原始設定配置 TLS 與伺服器名稱。只有在服務商明確提供相關參數,且 App 顯示對應選項時,才填寫額外欄位。
  6. 儲存後返回 Home。選取剛儲存的項目,再進行連線測試。成功儲存只代表表單資料已記錄,不表示伺服器已接受連線。
欄位或概念填寫依據常見錯誤填法
Address / Port使用現有服務商提供的連線地址與連接埠。將 443 當成固定值,取代原設定中的其他連接埠。
UUID使用對應目前伺服器端帳戶的完整使用者識別碼。混用另一筆設定的 UUID,或複製時多帶空格。
VMess 加密選項保留匯入設定或服務商指定的內容。直接套用其他協定的密碼或演算法。
Host / Path依 WebSocket 等傳輸方式設定伺服器端參數。漏掉 Path 的 /,或誤以為 Host 必須與 Address 相同。
TLS / SNI安全層設定與伺服器名稱要求。使用 IP 連線時,誤將 IP 當成憑證對應的網域名稱。

Address、WebSocket Host 與 TLS SNI 可能相同,也可能因伺服器部署方式而異。Address 決定連線目標,Host 是相應的應用層請求資訊,SNI 則是在 TLS 交握時提供的伺服器名稱指示。不要為了「統一」而將三者全部改成同一個網域名稱。

四、如何辨識訂閱中的 VMess 與 VLESS

訂閱是設定的分發方式,不是第三種代理協定。一份現有訂閱可能包含多種類型;名稱中的「VMess」或「VLESS」若只是備註,就不能作為最終判斷依據。請在 Home 開啟指定項目的編輯畫面,查看 Type 與相應參數。

例如 https://example.com/sub?token=xxxx 只是訂閱地址格式的示意,並非可用服務。實際訂閱中的 token 與 UUID 都應視為敏感資訊妥善保存;需要回報問題時,只記錄 Type、傳輸方式、連接埠,以及不含憑證的錯誤現象即可。

五、連線疑難排解:先固定設定,再檢查路由模式

VMess 與 VLESS 都可能因地址、驗證、傳輸或 TLS 參數不符而連線失敗。排查時一次只修改一個變數:先確認選取的伺服器,再確認協定與欄位,最後檢查流量是否確實經過該連線。不要同時修改 Type、連接埠、TLS 與 Global Routing,否則無法判斷是哪個項目影響結果。

保留原始協定與參數

建議做法

先依現有訂閱或服務商提供的參數逐項比對,再分開測試。若設定明確要求 TLS,請維持憑證驗證,不要以關閉驗證取代錯誤排查。

適用情境:首次匯入、手動填寫、無法確認協定類型

Global Routing → Proxy

若要排除規則的影響,可暫時使用 Proxy 測試網頁請求。這不代表所有系統流量都必然會經過代理,也無法修正伺服器端參數錯誤。

適用情境:伺服器測試有回應,但懷疑網頁請求被規則分配到其他策略

Global Routing → Config

依目前 Config 的規則處理流量。測試結束後,還原原有模式,並檢查目標請求命中的規則與策略;不要將規則處理結果誤判為協定效能。

適用情境:確認連線可用後,日常進行規則分流與命中檢查

  1. 在 Home 選取目標項目,核對備註與實際 Type,避免測試到另一台伺服器。
  2. 執行 Connectivity Test,記錄該項目顯示的回應或失敗結果。測試結果只反映該次檢測過程,不保證所有網站與 App 都能存取。
  3. 完成系統提示的 VPN 設定授權並開啟連線開關,再測試實際網頁。若 Global Routing 設為 Direct,網頁直連結果無法證明代理協定可用。
  4. 若出現憑證相關錯誤,優先核對系統時間、TLS 伺服器名稱與憑證對應網域;若連線逾時,再檢查地址、連接埠與網路可達性。錯誤現象只是線索,不能單憑此作出診斷。
  5. 若使用 Config,請檢查規則順序,以及 DOMAIN-SUFFIX、IP-CIDR、GEOIP、FINAL 對應的目標策略。這些規則決定請求如何分流,不會自動將 VMess 轉換為 VLESS。

檢查順序:可達性、驗證、傳輸、安全層、路由

先儲存原始設定並記錄一次失敗現象,再依層逐項核對;若修改某項後情況沒有改善,先還原該項再檢查下一項,不要連續疊加未確認的修改。

六、VMess 與 VLESS 常見問題

UUID 相同,可以直接把 VMess 改成 VLESS 嗎?

不能只憑 UUID 相同就轉換。請在 Home 開啟該項目確認 Type,並向現有服務商確認該連接埠實際接收的協定。即使使用者識別碼相同,伺服器端也必須具有相符的協定、傳輸與安全設定。需要使用另一種協定時,請改用服務商已提供的對應項目。

VLESS 顯示 none,是不是應該手動選擇加密演算法?

不要套用 VMess 的演算法。VLESS 的協定層不提供資料加密,請繼續檢查 TLS 等安全層設定。若原始設定明確使用 TLS,請在項目編輯畫面核對 TLS 與伺服器名稱;若安全參數不明確,先向現有服務商確認,再進行連線。

連接埠填了 443,為什麼還會出現 TLS 錯誤?

443 只是連接埠數字。請檢查是否依要求啟用 TLS、SNI 是否與憑證相符、裝置日期與時間是否正確,並確認 Address 是否連到正確的伺服器。不要透過關閉憑證驗證來掩蓋名稱不符的問題。

哪種協定一定比較快、延遲比較低?

不能只憑協定名稱判斷。比較時應盡量讓連線網路、伺服器位置、傳輸方式、TLS 與測試目標保持一致,並在 Home 重複執行 Connectivity Test,再檢查實際請求。不同伺服器的一次回應結果,不能單獨歸因於 VMess 或 VLESS。

訂閱更新後,手動修正的欄位又變了,該怎麼辦?

先確認變動的是由訂閱管理的原項目,還是獨立儲存的測試項目,再核對更新後的 Type、地址與安全參數。將不含憑證的修改前後差異提供給現有服務商;不要反覆覆寫 UUID,也不要公開完整訂閱地址。

App Store 正版核對 →