本文適合已有自己的服務商與設定,準備在 Shadowrocket(小火箭)中新增 VMess 或 VLESS 的使用者。先分清協定、傳輸方式與 TLS 三個層次,再依序核對 Address、Port、UUID、Host、Path。讀完後即可判斷哪些欄位必須原樣複製,哪些設定不能只憑協定名稱推測;本文不提供線路或訂閱。
VMess 與 VLESS:認證方式相近,加密職責不同
VMess 與 VLESS 都是用於用戶端和伺服器之間的代理協定,不是伺服器位址,也不是傳輸方式。兩者通常使用 UUID 識別使用者,但協定交握方式不同,不能只把既有 VMess 記錄的 Type 改成 VLESS 就繼續使用。伺服器端必須提供相應協定的連線入口。
VMess 支援協定層的資料加密,實際採用的方式取決於設定。VLESS 本身不提供這一層的資料加密,通常會搭配 TLS 等安全層使用。因此,「VLESS 沒有協定層加密」不代表「VLESS 連線一定是明文」,也不能據此關閉用戶端的 TLS。
| 核對項目 | VMess | VLESS |
|---|---|---|
| 使用者認證 | 通常使用 UUID,須與伺服器端記錄一致 | 通常使用 UUID,須與伺服器端記錄一致 |
| 協定層加密 | 支援,依設定指定 | 不提供這一層的資料加密 |
| TLS | 是否啟用由伺服器入口決定 | 通常搭配安全層使用,仍須以設定為準 |
| 傳輸方式 | 須符合伺服器設定,例如 TCP 或 WebSocket | 同樣須符合伺服器設定,不能只憑協定名稱推斷 |
| 額外參數 | 若設定包含 AlterId,須原樣核對 | 若設定包含 Flow,須核對相應的支援條件 |
判斷方式:先確認伺服器入口,再選擇 Type
開啟既有設定的說明,確認明確標示的是 VMess 還是 VLESS。只有伺服器另有提供另一種入口時,才新增另一筆記錄;不要透過更改 Type 來嘗試「升級協定」。
協定名稱本身無法說明連線一定比較快。網路路徑、伺服器負載、傳輸設定與憑證狀態都會影響結果。排查時保留原記錄,另外新增測試記錄,比在同一筆記錄中同時修改多個欄位更容易找出問題。
Add Server:先填寫 Address、Port 與 UUID
在 Home 點選右上角的新增按鈕,進入 Add Server,先選擇 Type,再填寫相應協定顯示的欄位。不同 Type 顯示的選項可能不同;本文所稱的 UUID 是服務商提供的使用者識別碼,表單中也可能以 User ID 等欄位名稱顯示。不要把它誤認為備註或訂閱存取權杖。
- 核對 Address。填入伺服器網域名稱或 IP 位址。若資料將位址與連接埠分開提供,就分別填入欄位,不要在位址前加上網頁協定前綴,也不要把 WebSocket 的 Path 接在位址後面。
- 核對 Port。填入服務商指定的整數連接埠。例如設定提供
443,就填入443;這個數字常用於 TLS 服務,但本身不能證明該入口已啟用 TLS。 - 核對 UUID。複製完整內容,檢查前後空格、缺漏字元與換行。常見的 UUID 由 32 個十六進位數字以連字號分組表示,不要自行產生另一個值取代伺服器已配置的 UUID。
- 核對協定附加項目。VMess 的加密相關選項、AlterId,以及 VLESS 設定中的 Flow 等參數,均以既有設定為準。未提供的項目,不要隨意從其他記錄照抄。
- 儲存並返回 Home。確認 SERVER 清單中出現新記錄,且目前選取的是這筆記錄。清單中出現記錄只代表已儲存,並不表示連線成功。
若透過自己的訂閱匯入記錄,請優先查看匯入結果,不要再手動新增一份。訂閱內容可能同時帶入傳輸與安全參數;只複製位址、連接埠與 UUID,仍可能漏掉影響連線能否完成的欄位。手動編輯訂閱產生的記錄前,請先保留獨立副本,避免更新時修改內容遭到覆蓋。
傳輸方式:TCP、WebSocket 與 Host、Path 的關係
傳輸方式決定代理資料如何承載,不會取代 UUID 認證。VMess 和 VLESS 都可能使用不同的傳輸方式,實際設定須以伺服器資料及目前用戶端支援為準。選擇 WebSocket 後,Host 與 Path 才有相應的請求語意;不能把它們當成所有連線都必須填寫的通用欄位。
| 欄位 | 用途 | 常見填寫錯誤 |
|---|---|---|
| Transport | 選擇符合伺服器設定的傳輸方式 | 伺服器要求 WebSocket,用戶端卻仍使用 TCP |
| Host | WebSocket 交握中的 HTTP Host,可用於服務路由 | 將伺服器 IP 自動當成 Host,取代原本的網域名稱 |
| Path | WebSocket 請求路徑,例如 /ws | 漏掉開頭的斜線,或擅自更改大小寫 |
| SNI | TLS 交握所使用的伺服器名稱 | 誤以為填寫 Host 就一定會同步設定 SNI |
例如,設定說明指定 Address 為 edge.example.com、Port 為 443、Transport 為 WebSocket、Host 為 gateway.example.com、Path 為 /ws。這些只是欄位關係的示例,不是可用服務。Address 與 Host 不同不一定有問題,不要只為了看起來一致就將兩者改成相同值。
- Path 請依原值複製,包括大小寫、結尾斜線,以及設定明確提供的查詢部分。
- Host 不要填入完整網頁網址;若表單將 Host 與 Path 分開,就分別填寫。
- 若服務商提供的是其他傳輸方式,請核對該方式專用的欄位,不要硬套 WebSocket 的 Host 與 Path。
TLS:依入口要求啟用,不要只憑連接埠判斷
TLS 負責連線的安全層。啟用後,須核對伺服器名稱與憑證驗證,不能只確認開關是否開啟。Address 可以是連線目標的 IP 或網域名稱,SNI 則是 TLS 交握時使用的名稱;設定需要驗證網域名稱時,應依資料填入相應網域。
以下比較的是同一用戶端中的安全設定方式,不是評比 VMess 與 VLESS 的優劣。建議作法的前提是伺服器明確提供 TLS 入口;若設定使用其他安全機制,應分別核對該機制的參數。
TLS 入口:啟用驗證並核對 SNI
建議伺服器要求 TLS 時,請啟用 TLS,依設定填入 SNI,並保留憑證驗證。若憑證發生錯誤,先檢查網域名稱、系統時間與伺服器憑證,不要將略過驗證當成一般處理方式。
適用情況:服務商明確提供 TLS 入口,且憑證與指定名稱相符
非 TLS 入口:僅依明確設定配置
只有資料明確說明不使用 TLS 時,才依該入口要求關閉 TLS。VMess 的協定層加密與 TLS 不屬於同一層;也不能只憑 VLESS 這個協定名稱判斷完整連線的安全性。
適用情況:既有設定明確指定非 TLS 入口,並已說明安全層的配置方式
判斷方式:憑證錯誤時先核對名稱,不要先放寬驗證
逐字比對設定中的 SNI 與目前填入的值,再到系統設定核對日期與時間。若名稱與時間都正確仍然失敗,請向自己的服務商確認伺服器憑證狀態。
Host 和 SNI 即使常填入同一個網域名稱,也不代表兩者可以互換。前者屬於 HTTP 請求,後者屬於 TLS 交握。錯誤可能發生在不同階段:TLS 未通過時,後續的 WebSocket 請求還無法完成。
儲存後仍無法連線:依連線階段逐項排查
Home 中的開關已開啟,代表本機 VPN 設定已開始運作,不等於遠端已完成認證。Connectivity Test 顯示延遲,也只能證明該測試取得了結果,不能單憑此判定 UUID、WebSocket 交握與所有網頁請求都正常。請依下列順序操作,每次只修改一組參數。
- 確認選取的記錄。返回 Home,檢查 SERVER 中目前選取的項目,避免編輯了新記錄,實際連線時卻仍使用舊記錄。
- 確認基本連線能力。執行 Connectivity Test。若逾時,先核對 Address、Port 與目前網路;逾時不能直接歸因於 UUID 錯誤。
- 確認認證與傳輸設定。重新核對 Type、UUID、VMess 附加項目或 VLESS 的 Flow,再檢查 Transport、Host 與 Path。不要同時切換協定與傳輸方式。
- 確認 TLS。核對 TLS 開關、SNI 與憑證相關錯誤。裝置時間不正確也可能影響驗證與認證,請先恢復正確時間。
- 排除規則影響。在 Home → Global Routing 暫時選擇 Proxy,使用目前選取的記錄測試相同目標。Proxy 會盡可能讓此測試使用代理路徑;測試結束後請恢復原模式。這不會修正伺服器欄位。
- 恢復日常設定。若 Proxy 模式下可以使用、Config 模式下卻失敗,請前往 Config 核對目前設定與規則的處理方式,檢查是否套用 Direct 或 REJECT。若只有透過網域名稱存取時失敗,請再檢查 DNS,不要繼續隨機修改 UUID。
Global Routing 中的 Direct 不適合用來驗證遠端代理是否正常;Config 會依選取的設定處理連線;使用 Scene 時,也應檢查目前場景實際採用的策略。若連線會自動重新開啟,可前往 Settings → On Demand 核對自動連線條件。On Demand 控制連線觸發時機,不會修正 VMess 或 VLESS 欄位。
常見問題:更改協定、連接埠與訂閱更新
使用同一個 UUID,為什麼 VMess 可以連線,改成 VLESS 就不行?
UUID 只是認證資料的一部分,兩種協定的交握方式並不相同。返回 Add Server,將 Type 還原為原設定指定的值。若確實要使用 VLESS,請向自己的服務商確認是否另有 VLESS 入口,以及相應的連接埠、傳輸方式與安全參數。
Port 填 443,就一定要啟用 TLS 嗎?
連接埠號碼不代表安全設定。開啟目前的記錄,依原設定分別核對 Port 與 TLS;只有資料明確指定 TLS 時,才依要求啟用。不要把其他記錄的連接埠與 TLS 開關拼成一份新設定。
UUID 看起來相同,仍然認證失敗,該先檢查什麼?
先重新複製完整 UUID,移除前後空白,再核對 Type 與協定附加項目。接著檢查裝置時間與帳戶狀態;是否已過期或遭停用,須向自己的服務商確認,單靠本機表單無法判斷。
手動修正後,為什麼訂閱更新又恢復原狀?
訂閱更新可能依遠端內容重建或覆蓋記錄。請先保留一筆獨立的手動記錄作為對照,再更新自己的訂閱並逐項比較差異。若遠端欄位持續有誤,請將已去除敏感資訊的差異回報給自己的服務商,不要反覆覆蓋所有設定。
最後請確認:已選取預期記錄、協定與伺服器設定一致、傳輸與 TLS 欄位相符,並且在明確的 Global Routing 模式下能實際連線至目標。成功儲存、開啟開關、測試顯示延遲,分別代表不同階段,彼此不能取代。更多基本操作請參閱使用說明;涉及 DNS 與規則處理方式時,請繼續查看故障排除。