本文重點

Shadowrocket(小火箭)中的 VMess 與 VLESS 不能只修改 Type 就互相轉換。兩者都能使用 UUID 識別使用者,但協定的加密機制不同,傳輸方式與 TLS 設定也須分別確認。本文適合已備妥伺服器參數或訂閱的使用者,依序說明協定、身分、傳輸與安全層的設定方式,並整理連線失敗時的檢查方法。

VMess 與 VLESS 的主要差異

請依伺服器設定選擇協定,不要只看名稱或新舊。VMess 是具備驗證與協定層加密機制的代理協定;常見的 VLESS 設定則不在協定本身加密傳輸內容,通常須透過 TLS 等外層機制保護傳輸。兩者都能搭配不同傳輸方式,因此「VMess 就是 WebSocket」或「VLESS 就是 TLS」都不是正確的對應方式。

VMess 與 VLESS 設定重點比較
比較項目VMessVLESS
使用者身分通常使用 UUID,且必須與伺服器端的使用者設定一致。通常使用 UUID,且必須與伺服器端的使用者設定一致。
協定層加密具備協定層加密機制,具體方式依伺服器端要求設定。常見設定的 Encryption 為 none,傳輸保護需另外設定。
TLS可另外使用,不等同於 VMess 本身的加密。常見部署會使用 TLS 等外層保護,不能只憑協定名稱判定傳輸已加密。
傳輸方式必須與伺服器端設定相符,例如 TCP 或 WebSocket。同樣必須與伺服器端設定相符,不能直接沿用其他連線設定的傳輸參數。
切換方式取得對應伺服器的完整設定後,再新增或匯入連線,而非只修改 Type。

VMess 的 AEAD 驗證與內容加密彼此相關,但並非同一概念;AEAD 也不是 TLS 開關。若舊參數包含 AlterId,不要自行改成某個數值嘗試相容,應向現有服務的管理者確認目前有效的設定。VLESS 若另有 Flow 等參數,也須確認用戶端與伺服器端皆支援且設定相符,不宜參考其他連線設定自行填入。

UUID 是身分憑證,不是加密方式

UUID 用來讓伺服器辨識獲准使用服務的使用者。格式相同,不代表兩種協定可以共用同一組帳號設定:伺服器必須在對應協定的使用者清單中設定該身分,位址、連接埠及其他參數也都必須相符。複製 UUID 時多出空格或少一個字元,都會影響驗證結果。

128 bit
UUID 標準長度
8-4-4-4-12
常見 UUID 文字格式
443
常見 TLS 連接埠範例;不代表該連接埠一定啟用了 TLS

判斷方式:分別確認身分、連接埠與 TLS

UUID 格式正確,只能表示文字格式看起來符合要求。接著仍須向伺服器端確認使用者是否有效、連接埠是否對應目前使用的協定,以及是否啟用 TLS;不要因為 UUID 沒變,就認為其他設定也能直接沿用。

協定、Transport 與 TLS 各自控制什麼

可將一筆伺服器連線設定視為幾個彼此獨立的層次:VMess 或 VLESS 決定代理協定,TCP、WebSocket 等決定資料的傳輸方式,TLS 則決定是否在外層建立受保護的連線。WebSocket 本身不等於 TLS;啟用 TLS 與未啟用 TLS 的 WebSocket,對端要求也不同。

以既有的 WebSocket 加 TLS 設定為例,伺服器位址用來指定連線目標,Port 指向監聽連接埠,WebSocket 的 Host 和 Path 用來對應伺服器端路由,TLS 的 Server Name(SNI)則是在交握時宣告目標名稱。這些欄位可能使用同一個網域,也可能依部署方式分別指定;不要因為幾個欄位都涉及網域,就一律改填伺服器 IP。

啟用 TLS,並依伺服器端設定驗證憑證

建議

若伺服器端提供 TLS,請填入指定的 Server Name,並維持憑證驗證。遇到憑證錯誤時,先檢查名稱、裝置時間與伺服器憑證,不要直接略過驗證。

適用情況:既有服務端明確要求使用 TLS 的 VMess 或 VLESS 設定

停用 TLS,僅依伺服器端明確要求連線

僅適用於伺服器端確實提供相應連線方式的設定。停用 TLS 不會自動啟用其他保護機制;尤其是 VLESS,Encryption 設為 none 不代表傳輸已加密。

適用情況:已確認保護範圍的受控網路測試,或伺服器端明確指定的部署

上述建議針對 TLS 設定,不代表所有既有連線都必須強制啟用 TLS。若伺服器端連接埠只接受未啟用 TLS 的連線,單方面在用戶端啟用 TLS 會導致交握失敗。同樣地,連接埠號碼為 443 只是常見部署方式,不能據此判定協定或加密狀態。

在 Add Server 中依什麼順序填寫

若有完整訂閱或分享設定,請先匯入再逐項確認,通常比手動重新輸入更能保留參數。手動設定時,從 Home 右上角的新增入口進入 Add Server,先選擇 Type,再依該類型顯示的欄位填寫。畫面欄位會因類型及 App 狀態而異,以下提供檢查原則,不代表每個欄位都會同時出現。

  1. 確認 Type。伺服器端使用 VMess 就選 VMess,使用 VLESS 就選 VLESS。類型不符時,即使後續欄位相同,也不能視為有效設定。
  2. 填寫位址與 Port。位址欄填入主機名稱或 IP,不要附加網頁路徑。連接埠請依伺服器端提供的值填寫;例如伺服器端指定 8443,就不能因為啟用 TLS 而自行改成 443。
  3. 填寫 UUID。請使用這筆連線設定對應的使用者身分。VMess 的加密選項,以及 VLESS 的 Encryption、Flow 等附加項目,都應以既有服務設定為準。
  4. 確認 Transport。若伺服器端使用 WebSocket,請確認 Host 與 Path;若使用其他傳輸方式,請勿沿用 WebSocket 欄位。
  5. 確認 TLS。檢查是否啟用、Server Name 是否正確,以及憑證驗證設定。即使位址使用 IP,伺服器端仍可能要求以網域格式填寫 Server Name。
  6. 儲存並選取連線。返回 Home,在 SERVER 清單中選取剛儲存的伺服器,再進行連線測試,避免測到先前選取的其他連線。

連線失敗時,依症狀縮小排查範圍

先確認實際使用的是哪一筆伺服器連線設定,再判斷問題發生在哪個層次。Home 中的連線開關已開啟,表示本機連線流程已啟動,不代表遠端驗證、TLS 交握及目標網頁存取都已成功。Connectivity Test 可作為初步檢查,但單次測試結果無法涵蓋所有網域、規則與 App。

UUID 相同,為什麼從 VMess 改成 VLESS 就無法連線?

先恢復原本的連線設定,不要繼續只修改 Type。向現有服務的管理者確認是否提供 VLESS 入口,並取得其連接埠、UUID、Transport 與 TLS 參數。兩種協定的交握方式不同,相同的 UUID 不會讓伺服器自動切換協定。

出現 TLS 相關錯誤時,應先檢查什麼?

開啟該伺服器的編輯頁面,先確認 TLS 設定是否與伺服器端一致,再檢查 Server Name、裝置系統時間及憑證網域。若位址使用 IP,仍須確認原設定要求的 SNI;不要以停用憑證驗證代替問題排查。

WebSocket 連線失敗時,UUID 正確還要檢查什麼?

依序檢查 Port、TLS、WebSocket Host 與 Path。若連線紀錄提供 HTTP 狀態碼,404 可能表示路徑或反向代理路由不符,403 則可能與存取限制有關;這些只能作為排查線索,不能單憑狀態碼判定 UUID 有誤。

Connectivity Test 有結果,網頁卻無法開啟?

先檢查 Home → Global Routing。Direct 不適合用來驗證所選代理的網頁存取;Config 則會受規則影響。可暫時切換至 Proxy,選取目標連線後重新開啟同一個網頁,測試完成再恢復原設定;若只有在 Config 下失敗,請繼續檢查規則與 DNS。

排查時一次只修改一項,並記錄修改前後的狀況。若同時更換協定、連接埠、SNI 與 Path,即使之後恢復連線,也無法確定真正原因。若連線由訂閱管理,請先保留問題資訊並確認更新後的參數,以免本機手動修改在下次更新訂閱時被覆蓋。

如何選擇與驗證,而非只看協定名稱

一般使用者可依序確認:現有服務支援哪些設定、Shadowrocket 中的參數能否完整對應,最後再比較實際使用結果。VLESS 的協定設計較精簡,不代表在任何網路環境下都更快;VMess 具備協定層加密,也不代表可以忽略 TLS、憑證或伺服器身分。延遲、壅塞、伺服器負載與傳輸方式都會影響使用體驗。

結論:先保留完整設定,再比較連線結果

為 VMess 與 VLESS 分別保留獨立連線設定,逐項確認身分、傳輸與 TLS,並在相同條件下測試。若目前只有一組有效設定,請先確保它穩定運作,不要靠猜測欄位來嘗試另一種協定。