VMess 與 VLESS 不能只改 Type 就互相轉換:兩者都使用 UUID,但認證方式與協定內的加密設計不同。本文以使用者已有自己的服務商與訂閱為前提,說明如何在 Shadowrocket(小火箭)中核對協定、TLS 與傳輸參數,並分開排查連線故障和規則分流問題。
先看結論:協定必須與伺服器端一致
在 Shadowrocket 中選擇 VMess 或 VLESS,首先要看現有連線資料指定的類型,而不是哪個名稱比較新。伺服器端接收 VMess,客戶端就必須使用相應的 VMess 參數;伺服器端接收 VLESS,也必須使用相符的 VLESS 參數。即使位址、連接埠與 UUID 看起來相同,變更 Type 仍可能導致認證或交握失敗。
選擇協定與流量分流是兩回事。Home 中選擇的伺服器決定代理連線使用哪些參數;Global Routing 則決定請求如何路由。Config 頁面用於管理設定檔與規則,Settings 則集中提供 App 設定。排查協定時,不要同時修改規則、切換伺服器和更改 TLS,否則很難判斷是哪項變更造成影響。
判斷方式:先核對整組參數,再討論協定差異
逐項比對現有資料中的 Type、位址、連接埠、UUID、TLS 與傳輸設定。只有伺服器端分別提供可用的 VMess 與 VLESS 設定,才具備比較兩種連線的條件。
加密差異:VMess 協定加密與 VLESS 外層保護
VMess 定義了認證與資料加密機制。常見的 VMess AEAD 設定會採用相應的認證設計,資料加密方式也必須符合伺服器端支援情況。VMess 也可以再套用 TLS:協定本身的資料加密與 TLS 保護屬於不同層次,不能把其中一項設定當成另一項的替代方案。
VLESS 本身不提供載荷加密,通常仰賴 TLS 等外層機制保護傳輸。因此,看到資料中的 VLESS 加密欄位為 none,不能直接判定整條連線是明文;反過來說,也不能認為只要選擇 VLESS 就會自動啟用 TLS。還需要核對連線資料要求的外層保護,以及客戶端是否設定正確。
| 核對項目 | VMess | VLESS |
|---|---|---|
| 使用者識別碼 | 使用 UUID,參與協定認證 | 使用 UUID,由伺服器端核對使用者身分 |
| 協定載荷加密 | 具備協定內的資料加密機制,具體選項須依設定核對 | 本身不提供載荷加密,須另行確認外層保護 |
| TLS | 可依伺服器端要求套用,與 VMess 的加密選項不同 | 常見的外層保護方式,必須符合伺服器端要求 |
| 能否只修改 Type | 不能據此轉換為 VLESS | 不能據此轉換為 VMess |
Allow Insecure 涉及 TLS 憑證驗證,不是提升速度的選項,也無法修復錯誤的 UUID 或傳輸路徑。遇到憑證錯誤時,應檢查系統時間、伺服器憑證,以及 TLS 使用的網域;不要以略過驗證取代這些檢查。是否顯示特定欄位,取決於目前選擇的類型與傳輸設定。
UUID 用法:格式相同,不代表帳號可以通用
UUID 是身分參數,不是伺服器位址,也不是訂閱網址。標準文字格式通常由十六進位字元與連字號組成,例如 123e4567-e89b-42d3-a456-426614174000。此處僅示範格式,不能用於連線。貼上實際 UUID 時,請檢查是否多帶空格、換行或引號,或誤將整段分享文字填入此欄位。
兩種協定都使用 UUID,不代表同一個 UUID 在任何伺服器端都有效。伺服器端必須設定相應的使用者與入站協定。若現有訂閱中有兩筆位址相近、但類型不同的紀錄,請分別保留完整參數,不要把一筆紀錄的 UUID、另一筆的連接埠,以及第三筆的傳輸選項拼在一起。
- 在 Home 找到要核對的紀錄,開啟編輯畫面,先確認 Type 是 VMess 還是 VLESS。
- 依照現有資料核對位址與 Port。位址欄位只填指定的主機名稱或 IP,不要加上協定前綴或路徑。
- 完整核對 UUID,不要只比對開頭和結尾;排查問題時也不要公開實際 UUID。
- 如果 VMess 資料包含 AlterId,請依資料填寫;常見的 VMess AEAD 設定使用
0,但不要憑經驗替換其他欄位。 - 確認裝置的日期與時間正確。VMess 認證會考量時間因素,系統時間明顯錯誤可能影響連線。
傳輸層搭配:TLS、WebSocket 與 Host 各自負責不同部分
VMess 和 VLESS 是代理協定;TCP、WebSocket 等描述連線使用的傳輸方式;TLS 則提供外層安全通道。這些參數需要彼此配合,但並非同義詞。資料指定使用 WebSocket 時,只填 Type 和 UUID 並不足夠,還要核對 Path、Host 與 TLS 相關要求。
以下為假設性的設定範例:現有資料要求連接埠 443、WebSocket 路徑 /connect,並啟用 TLS,就應將這些設定視為一組完整參數保留。不能因為 443 常用於 HTTPS 就省略 TLS 檢查,也不能看到 WebSocket 就自行將連接埠改為 80。兩者都只是數值,實際監聽方式由伺服器端決定。
分層核對:連線位址與傳輸參數
伺服器與身分層
- Type 必須對應伺服器端的 VMess 或 VLESS。
- 位址與 Port 決定連線目標。
- UUID 必須對應伺服器端已有的使用者。
- VMess 的額外認證與加密欄位應依資料保留。
外層與傳輸層
- TLS 設定必須符合伺服器端要求。
- SNI 對應 TLS 交握時使用的伺服器名稱。
- WebSocket 的 Host 對應 HTTP 請求標頭。
- Path 須保留開頭斜線、大小寫與資料中的完整內容。
SNI 與 Host 可能相同,也可能不同;不要只因位址相同,就自動將兩者設為同一個值。
gRPC 等其他傳輸方式同樣需要伺服器端支援,並有各自的附加參數。不要將 WebSocket 的 Path 當成所有傳輸方式共用的路徑。若現有資料不完整,應向自己的設定提供者確認缺少的欄位,而不是反覆嘗試填寫。本文未詳述的擴充選項,也應依完整設定核對,不能只用「VLESS + TLS」概括所有部署方式。
匯入與手動填寫:優先保留完整設定
現有訂閱可以同時包含多筆紀錄及其參數,有助於減少手動抄寫。匯入後仍應在 Home 檢查紀錄類型與重要設定,不要只憑顯示名稱判斷協定;名稱可能包含描述文字,實際連線行為取決於紀錄中的參數。更新訂閱會重新取得遠端內容,對訂閱紀錄所做的本機修改可能在之後更新時被覆寫。
保留現有訂閱中的完整參數
建議做法先匯入使用者已有的訂閱,再核對 Type、Port、UUID 與傳輸選項。保留原始紀錄,方便排查後還原,也可避免混用不同紀錄的欄位。
適用對象:已有可用訂閱,想確認 VMess 與 VLESS 差異的使用者
依完整資料手動填寫
在 Home → Add Server 中依資料選擇 Type,逐項填寫位址、連接埠、身分與傳輸設定。若只有位址和 UUID,卻缺少 TLS 或傳輸資訊,就不應視為資料完整。
適用對象:已有明確的單筆連線參數,需要逐項核對的使用者
若要比較修改前後的行為,請先保留原始參數,在獨立紀錄中一次只修改一項,並記下修改內容。訂閱更新失敗與某筆 VMess 或 VLESS 紀錄認證失敗也應分開處理:前者是取得訂閱內容的過程,後者則是使用現有參數建立代理連線的過程,兩者未必是同一個問題。
- 匯入後找不到預期紀錄:檢查訂閱是否成功取得,以及回傳內容是否包含該筆紀錄。
- 更新後參數有所變動:比對新的訂閱內容,不要繼續依賴舊紀錄的截圖。
- 只有手動修改後的紀錄失敗:先還原原始紀錄進行驗證,再檢查具體修改內容。
連線排查:先區分認證、傳輸與分流
不要把延遲測試出現數值,等同於網頁一定能正常使用。連接埠可連通、協定認證成功、TLS 正常、DNS 可用,以及請求符合預期策略,是不同的檢查環節。測試時應使用相同裝置、相同網路與相同目標請求;若未控制這些條件,就不能只憑一次快慢判斷 VMess 或 VLESS 的固有速度。
Global Routing 中的 Proxy、Direct、Config、Scene 描述路由模式,不會替你轉換協定。Config 會依目前設定處理請求;Direct 不適合用來驗證代理紀錄是否可用;Scene 則須搭配情境設定檢查。若要排除分流因素,可暫時使用 Proxy 檢查已選取的代理連線,完成後再恢復原本模式;仍須搭配 App 內的請求紀錄確認實際路徑。
同一個 UUID,把 VMess 改成 VLESS 就能使用嗎?
不能據此判定。返回 Home 開啟該筆紀錄的編輯畫面,還原原始 Type,再依現有資料核對 Port、TLS 與傳輸設定。只有伺服器端提供相應的 VLESS 設定時,才能使用那一組完整參數。
連接埠是 443,為什麼仍出現 TLS 問題?
443 並不能證明已設定 TLS。請檢查是否依資料啟用 TLS、SNI 是否正確、裝置時間是否準確,以及伺服器憑證是否有效。不要透過啟用 Allow Insecure 來掩蓋憑證問題或網域不相符的情況。
切換至 Proxy 後可以連線,回到 Config 就失敗,該更換協定嗎?
先保持伺服器紀錄不變,在 Config 檢查目前啟用的設定與請求命中的規則。特別留意目標是否先被 DOMAIN-SUFFIX 等規則比對、是否套用預期策略,以及 FINAL 如何處理未命中的請求,再一併檢查 DNS 設定。
WebSocket 一直無法連線,是 UUID 錯了嗎?
不一定。先核對 Type、位址與連接埠,再檢查 WebSocket 的 Path、Host 和 TLS 的 SNI。路徑大小寫錯誤、漏掉開頭斜線或 Host 不正確,都可能讓連線在身分驗證前就失敗。
實際使用時,先讓一筆與伺服器端完全相符的紀錄正常運作,再恢復日常的規則設定。協定名稱本身無法說明線路品質、伺服器負載或特定網路環境下的表現;VLESS 減少了協定本身負責的加密工作,也不代表在任何環境下都比 VMess 快。對一般使用者來說,保留完整參數並分層檢查,比只看協定名稱選擇更實用。