本文適合已有自己的服務提供者與連線參數,並需要在 Shadowrocket(小火箭)中核對 VMess 或 VLESS 設定的使用者。先區分協定、身分憑證與外層傳輸,再檢查 UUID、alterId、flow 和 TLS;若連線失敗,依序檢查位址與連接埠、驗證、傳輸及路由,不要只憑協定名稱判斷速度或穩定性。
VMess 與 VLESS:先分清協定層和傳輸層
VMess 與 VLESS 都要求用戶端和伺服器使用相互對應的協定。兩者通常都以 UUID 作為使用者身分憑證,但封包結構與驗證方式不同。在 Add Server 中將類型從 VMess 改成 VLESS,並不代表轉換已完成;伺服器也必須提供相應設定。
VMess 具備協定層資料加密機制,實際方式取決於雙方設定。VLESS 本身不會加密載荷,安全性須搭配 TLS 等外層保護一併評估。因此,看到 VLESS 的 encryption 為 none,不能直接推斷整條連線都是明文;同樣地,使用 VMess 也不能忽略伺服器身分驗證。
| 核對項目 | VMess | VLESS |
|---|---|---|
| 身分憑證 | 通常使用 UUID,且必須與伺服器端的使用者設定一致。 | 通常使用 UUID,但不能只因 UUID 與 VMess 相同,就認定兩者可以互換。 |
| 協定層加密 | 具備可設定的資料加密機制,不能與外層 TLS 混為一談。 | 不提供載荷加密,常見設定中的 encryption 為 none。 |
alterId | 歷史相容欄位;現代 VMess AEAD 設定通常為 0。 | 不使用此欄位。 |
flow | 不使用 VLESS 的這類流程參數。 | 部分組合會使用,例如 xtls-rprx-vision,且必須與伺服器端設定相符。 |
| 外層設定 | 仍須核對 TCP、WebSocket、TLS 等實際參數。 | 同樣須核對傳輸方式與外層安全參數。 |
協定名稱只描述連線堆疊中的其中一層。完整連線還包括伺服器位址、監聽連接埠、傳輸方式與安全層。即使兩筆設定都標示 VLESS,只要其中一筆採用不同的傳輸方式或伺服器名稱,就不能直接套用彼此的欄位。
UUID 與 alterId:驗證資訊不能靠試填
UUID 用來識別伺服器端授權的使用者,不是伺服器位址,也不是訂閱網址中的存取權杖。複製時請確認沒有多出空格、換行或引號。即使 UUID 格式正確,只要伺服器端沒有對應的使用者,仍無法完成驗證。
alterId 是 VMess 的歷史設定概念,不是「備用線路數量」,也不是數值越大就越安全。現代 VMess AEAD 設定通常使用 0;舊資料中的非零數值不能直接套用到目前的伺服器端設定。若現有參數仍有非零值,請向原設定提供者確認相容需求,不要在不同數值間逐一試填。
VMess 驗證也與時間有關。若近期突然出現驗證失敗,可檢查 iPhone 或 iPad 的「設定」→「一般」→「日期與時間」,確認時間和時區正確。校準時間只是排查步驟,不能取代 UUID、伺服器狀態與協定類型的核對。
結論:先確認憑證來源,再檢查欄位格式
以同一份有效設定作為核對依據;若 UUID 或 alterId 不一致,先重新匯入或確認原始參數,不要把格式正確當成驗證有效。
flow 與 TLS:分別核對流程參數和伺服器身分
flow 是部分 VLESS 組合中的流程參數,不是速度等級。常見值 xtls-rprx-vision 必須受用戶端支援,並搭配伺服器端的傳輸與安全設定。伺服器端沒有要求時,不要只因介面上有此選項就自行填入。
TLS 負責加密外層連線並驗證伺服器身分。連線位址可能是網域名稱,也可能是 IP 位址;TLS 使用的伺服器名稱通常會用於 SNI 和憑證驗證。連線位址、TLS 伺服器名稱與 WebSocket 的 Host 可以相同,也可能因伺服器部署方式而不同,必須分別核對。
- 先確認是否啟用 TLS:伺服器端要求 TLS 時,用戶端不能以一般明文連線處理;反之,也不能任意在未設定 TLS 的連接埠啟用 TLS。
- 接著核對伺服器名稱:憑證必須涵蓋設定要求的名稱。使用 IP 連線,不代表伺服器名稱也應改成該 IP。
- 核對傳輸參數:使用 WebSocket 時,Host 與 path 必須相符。範例路徑
/example-ws僅用來說明欄位用途,不能直接用於實際連線。 - 最後核對 flow:只保留伺服器端明確提供的值;不要複製另一筆 VLESS 設定中的 flow。
Add Server 核對步驟:每次只驗證一組參數
在 Shadowrocket 的 Home 頁面進入 Add Server 後,先選擇與現有參數相符的協定類型,再填入欄位。不同協定與所選傳輸方式會影響顯示的選項;以下順序說明核對邏輯,不表示所有欄位都會出現在同一個畫面。
- 位址與連接埠:填入原始伺服器位址與監聽連接埠。例如
example.com:443只是虛構範例;不能因為使用 TLS,就自動把原有連接埠改成443。 - 協定與憑證:確認使用 VMess 或 VLESS,並貼上 UUID。使用 VMess 時再檢查加密選項與 alterId;VLESS 不需要沿用 VMess 的 alterId。
- 傳輸方式:依原始設定選擇 TCP、WebSocket 等實際方式;若有 Host、path 等附加參數,請逐項核對,並保留路徑開頭的斜線。
- 安全參數:核對 TLS、伺服器名稱與憑證驗證;若 VLESS 設有 flow,也要確認其值及相應條件。
- 儲存與測試:返回 Home 選取該筆設定,確認已完成 VPN 設定授權,再連線並實際造訪目標。記錄失敗階段,避免一次修改多個欄位。
若使用自己已有的訂閱,請優先保留匯入後的原始欄位。訂閱更新可能重新產生項目並覆蓋手動修改;需要比對排查時,應先記錄差異。訂閱網址用來取得一組設定,不是 Add Server 的伺服器位址,不能將整個訂閱 URL 填入伺服器位址欄。
Home 主要用於選擇連線與查看狀態,Config 用於管理設定檔,Settings 用於調整 App 設定。更新訂閱項目與更新 Config 中的規則檔是不同操作:前者可能更換伺服器參數,後者會改變流量比對與策略,兩者不能互相取代。
連線測試與路由模式:別把規則問題當成協定問題
Home → Connectivity Test 可提供連線狀況的參考,但單次延遲結果不代表服務一定可用,也不能直接比較 VMess 與 VLESS 的傳輸量。測試方式可能只涵蓋連線的一部分,應搭配實際瀏覽網頁或使用目標服務驗證。
Config:依現有規則進行驗證
建議在 Home → Global Routing 選擇 Config 後,流量會依目前的設定規則處理。請確認目標實際套用代理策略,再判斷連線是否正常。
適用情境:日常使用已有正確規則的設定,以及排查後再次確認。
Proxy:排除一般規則的影響
暫時切換為 Proxy,可減少一般分流規則對測試的干擾。仍須確認目前選取的伺服器,並透過實際連線驗證,不要只看連線開關。
適用情境:短時間區分伺服器參數問題與規則選擇問題。
Direct:檢查基本網路
Direct 會直接連線,不適合用來判斷 VMess 或 VLESS 是否正常運作;可用來輔助確認目前網路是否具備基本連線能力。
適用情境:比對基本網路狀態,不用於驗證代理協定的身分驗證。
Global Routing 中的 Scene 會依設定的情境決定路由行為,並非第三種代理協定。若要維持固定的測試條件,請先確認目前的路由模式。若中斷連線後又自動連上,也應檢查 Settings → On Demand;自動連線行為與 UUID、alterId 和 flow 無關。
結論:只切換路由模式,不要同時修改伺服器欄位
同一筆設定在 Proxy 下可連線、在 Config 下失敗時,優先檢查規則比對結果與策略目標;兩種模式都失敗時,再逐項檢查位址、TLS、驗證與傳輸參數。
常見問題:依失敗狀況定位欄位
UUID 相同,為什麼 VMess 改成 VLESS 就連不上?
UUID 只是身分憑證的一部分,無法決定伺服器接受哪一種協定。請先恢復原本類型,並向原設定提供者確認是否有獨立的 VLESS 連線入口,再核對其連接埠、TLS 與 flow;不能只修改類型來轉換協定。
VLESS 顯示 none,是不是應該改成某種加密方式?
先確認 none 所在的欄位。若它表示 VLESS 協定層的 encryption,這是常見設定;接著應核對 TLS 等外層保護,不要將 VMess 的加密值移用到 VLESS。若原始設定使用其他安全機制,也要完整保留相關參數。
延遲測試有結果,但網頁一直打不開,該先檢查什麼?
先確認目前選取的伺服器與 Global Routing,再實際造訪目標。若出現 TLS 錯誤,請檢查伺服器名稱、裝置時間與憑證;若只有特定網站無法連線,則檢查規則與 DNS。不要只憑延遲結果就排除 UUID 或 flow。
訂閱更新後,手動填入的 flow 又變了,該怎麼辦?
記錄更新前後的欄位與項目名稱,確認修改的是不是同一筆設定。以訂閱最新內容和原設定提供者的說明為準;若要單獨測試,請保留獨立副本,避免下次更新再次覆蓋測試參數。
VMess 與 VLESS 的實際表現也取決於網路路徑、伺服器負載、外層傳輸與目標服務。若沒有在相同條件下測量,就不能斷定某個協定一定較快。排查時只要保留錯誤提示與欄位差異即可,不應公開完整 UUID、訂閱權杖或其他存取憑證。