VMess 與 VLESS 不能只改 Type 就互相轉換。本文適合已持有服務商提供且可合法使用之設定的使用者,說明協定、UUID、Transport 與 TLS 各自的用途,以及如何在 Shadowrocket 的 Add Server 中逐項核對。請先依現有設定還原參數,再透過連線記錄驗證;協定名稱本身不代表速度或安全性。
VMess 與 VLESS 的主要差異
Shadowrocket(小火箭)支援多種協定的連線設定。VMess 與 VLESS 都可使用 UUID 作為使用者識別碼,但驗證方式、資料處理方式及可用組合並不相同。伺服器設定為 VMess 時,客戶端必須選擇 VMess;伺服器設定為 VLESS 時,也必須選擇相應類型。即使位址、連接埠和 UUID 相同,也不代表兩種協定可以互換。
| 核對項目 | VMess | VLESS |
|---|---|---|
| 識別資訊 | 使用 UUID 等驗證參數,並須考量時間有效性 | 使用 UUID 識別及驗證使用者,不沿用 VMess 的驗證機制 |
| 協定內資料加密 | 支援協定內資料加密,實際方式取決於所選加密設定 | 常見設定的 encryption 為 none,不具備同類型的載荷加密 |
| 外層安全防護 | 可搭配 TLS;協定內加密不等於 TLS | 通常依賴 TLS 或設定指定的其他安全層保護傳輸 |
| 傳輸方式 | 必須符合伺服器的 Transport,例如 TCP 或 WebSocket | 同樣必須符合 Transport,不能只根據協定名稱推斷 |
| 遷移方式 | 使用伺服器提供的完整 VMess 參數 | 使用伺服器提供的完整 VLESS 參數,不要直接修改舊項目 |
此處所說的「VLESS 不具備同類型的載荷加密」,不代表整條連線必然以明文傳輸。VLESS 正確運行於 TLS 之上時,外層 TLS 會保護客戶端與對應 TLS 終點之間的資料。反之,設定中即使標示 TLS,仍須確認憑證驗證、名稱是否相符,以及實際連線結果。
先分清協定、Transport 與 TLS 三層參數
一次連線可同時包含 VLESS、WebSocket 和 TLS:VLESS 負責協定處理,WebSocket 是傳輸封裝,TLS 則負責外層加密與憑證驗證。這些名稱並非互斥選項。VMess 也可以搭配 WebSocket、TLS,WebSocket 並非 VLESS 專用功能。
結論:依完整參數組合設定,不要按協定名稱自行補上預設值
現有設定若未標明 Transport、TLS 或連接埠,請先確認原始參數;不要自行改成 WebSocket、啟用 TLS 或改用 443。每次只修改一個已確認有誤的欄位,才能判斷修正是否有效。
UUID 不是位址,也不是訂閱連結。常見格式由五組十六進位字元組成,長度結構為 8-4-4-4-12。複製時請留意首尾空格、換行及全形符號。即使格式正確,若伺服器未授權該 UUID,仍會驗證失敗,因此格式檢查只是第一步。
- Address:決定最先連線的主機;即使填入 IP,也不能據此推定 SNI 應填相同的 IP。
- Port:決定要連線的監聽連接埠;
443、8443都只是可能的設定值,請以現有參數為準。 - Transport:決定協定資料的承載方式;選擇 WebSocket 時,還須檢查 Host 與 Path。
- TLS:涉及安全交握、伺服器名稱與憑證驗證;修改 UUID 無法修正憑證名稱錯誤。
Add Server 最容易填錯的欄位
在 Home 點選新增入口進入 Add Server,先選擇 Type,再填寫相應欄位。後續顯示的選項會因 Type、Transport 與 App 內設定而異;下表依參數用途逐項核對,不代表不同協定的編輯表單完全相同。若現有訂閱可正常匯入,請先保留匯入結果,避免憑印象重新建立。
| 欄位或參數 | 核對內容 | 常見錯誤填法 |
|---|---|---|
| Type | 須與伺服器協定一致,區分 VMess 與 VLESS | 只修改 Type,卻保留另一種協定的參數 |
| Address / Port | 位址與數字連接埠分開填寫 | 將包含路徑的完整網址填入位址欄 |
| UUID | 完整複製使用者識別碼,不要附上說明文字 | 複製顯示名稱,或漏掉其中一組字元 |
| VMess 加密設定 | 依照現有設定及伺服器支援範圍填寫 | 將 VLESS 的 none 直接套用到 VMess |
| Transport | 須與伺服器的 TCP、WebSocket 等設定一致 | 看到 443 就推定一定使用 WebSocket |
| WebSocket Host / Path | Host 填入指定主機名稱;Path 保留開頭斜線及必要的查詢參數 | 把 SNI 當成 Path,或漏掉路徑開頭的斜線 |
| TLS / SNI | 確認是否啟用 TLS,以及應傳送的伺服器名稱 | 把連線 IP 當成憑證對應的網域名稱 |
| Allow Insecure | 維持憑證驗證,優先修正憑證、名稱或裝置時間問題 | 把略過驗證當成長期解決方式 |
例如,某份現有設定可能要求連線至特定 IP,但將 SNI 和 WebSocket Host 都設為 edge.example.com,Path 設為 /tunnel。這三個參數在此範例中彼此相關,但用途仍然不同:Address 用來指定連線目標,SNI 用於 TLS 交握時指示名稱,Host 則用於 WebSocket 的 HTTP 交握。範例中的網域名稱和路徑僅用來說明欄位關係,不是可用的連線設定。
從匯入到驗證:先保留原始設定,再檢查路由模式
協定參數正確,不代表目標請求一定經由該連線傳送。Home 中的選擇、Global Routing 的模式及 Config 中的規則,會共同決定實際流向。排查時應分開確認「連線本身是否可用」和「請求是否符合預期規則」。
- 匯入自己有權使用的現有設定或訂閱,在 Home 確認項目數量與 Type;手動輸入時,先完成上一節的欄位核對。
- 選擇要驗證的項目並啟用連線;首次使用時,依系統提示允許新增 VPN 設定。
- 確認 Global Routing 目前採用的模式,避免停留在 Direct,卻用瀏覽網頁的結果判斷協定是否成功。
- 連線至自己有權存取且可重複檢查的目標,並參照 App 內連線記錄查看目標、策略與錯誤資訊。
- 若要更新現有訂閱,更新後請再次檢查目前選取的項目。訂閱內容變更可能會覆蓋手動修改,重要變更應先妥善保留私密備份。
Config
建議依目前啟用的設定規則決定流向。完成協定驗證後,還原已核對的 Config,並查看請求實際符合的策略;只有規則指向目前代理時,該請求才適合用來驗證此連線。
適用情境:日常使用已設定規則的設定,以及還原後的驗證
Proxy
讓交由 Shadowrocket 處理的請求採用代理模式,可暫時減少規則分流的干擾。這不是修復協定的開關,也無法修正錯誤的 UUID、Port 或 TLS 參數。
適用情境:短時間區分連線參數與規則比對問題
Direct
採用直連模式,不適合用來判斷所選 VMess 或 VLESS 連線能否正常轉送。直連可以開啟頁面,只能表示該目標在目前直連條件下可存取。
適用情境:對照直連網路與目標本身是否可連通
Global Routing 也包含 Scene,請確認目前場景實際套用的設定,不要只憑名稱判斷流向。Settings → On Demand 用來依條件觸發連線,不會變更 VMess 或 VLESS 的驗證參數;若出現自動連線情況,請檢查此設定;若驗證失敗,仍須回頭檢查相應項目的參數。
如何排查逾時、驗證失敗與憑證錯誤
錯誤現象只能協助縮小範圍,無法單憑現象證明是哪個欄位有誤。請先記錄原有設定,再依「位址可連通性 → 安全交握 → 協定驗證 → 請求路由」的順序檢查,避免一次修改多處而失去判斷依據。以下問答提供排查方向,不代表所有錯誤訊息都有固定解釋。
UUID 已正確複製,為什麼仍然連線逾時?
先在 Home 開啟該項目的編輯頁面,核對 Address 與 Port,再檢查目前網路能否連線至目標。逾時可能發生在驗證之前,也可能是後續交握未完成;此時不要反覆產生或更換 UUID。若先前可以使用,請確認現有服務狀態及訂閱更新結果。
提示憑證名稱不符,該啟用 Allow Insecure 嗎?
先核對 TLS 的伺服器名稱與 SNI,檢查裝置日期和時間,並確認伺服器憑證仍有效。如果 Address 填的是 IP,但憑證是簽發給網域名稱,請依原始設定填入正確名稱。不要以略過憑證驗證取代修正名稱或憑證問題。
VMess 參數沒有變更,卻突然出現驗證錯誤,該怎麼辦?
先確認裝置日期與時間準確,再核對 UUID 是否仍獲授權,以及伺服器參數是否變更。VMess 驗證涉及時間有效性,明顯的時間偏差可能導致失敗;舊設定中的 AlterId 也不能當成任意數字反覆嘗試,請以目前有效參數為準。
VLESS 已連線,但網頁仍無法開啟,接下來如何排查?
先查看 App 內連線記錄,確認該網頁請求是否使用預期策略。若請求已進入目標連線,接著核對 Transport、WebSocket Host 與 Path,以及 TLS 和設定要求的附加參數。系統顯示 VPN 已連線,不代表遠端驗證、DNS 解析及每個目標請求都已成功。
延遲測試有數值,不代表所有網頁都能存取:不同測試方式涵蓋的階段可能不同,仍須以實際請求驗證。分享排查記錄前,請刪除 UUID、訂閱權杖、密碼及其他存取憑證;保留 Type、Transport、錯誤類別及已遮蔽敏感資訊的欄位關係,通常更有助於找出問題。
選擇與遷移:依現有設定和驗證結果判斷
如果目前的 VMess 設定運作正常,不必只因 VLESS 名稱不同就遷移。VLESS 不具備同類型的載荷加密,也不能直接推論為「一定更快」:外層安全協定、傳輸方式、網路品質、伺服器負載與目標網站都會影響結果。比較時應使用相同的測試目標及相近的網路條件,分別記錄連線狀況、失敗階段與多次測試結果,而不是只看單次延遲。
- 只有一組可用設定:依該設定填寫,不要自行將 VMess 改成 VLESS。
- 已有兩組獲授權的設定:分別建立項目並逐項驗證;不要覆蓋唯一可用的項目。
- 從一種協定遷移至另一種:重新取得完整參數,確認 UUID、連接埠、Transport、TLS 及附加選項,不要假設任何欄位可以沿用。
- 需要長期保存:安全備份可用設定與必要說明,請勿公開分享含有憑證的截圖或檔案。
Shadowrocket 是 Apple 平台上的閉源商業 App,主要使用裝置為 iPhone、iPad,唯一取得管道為 App Store。App 採一次性買斷,購買 App 與連線服務互不相關;本文假設使用者已有自己的服務商與訂閱,不提供、銷售或推薦連線服務。系統需求及購買適用範圍請以 App Store 頁面標示為準。