Shadowrocket VMess 與 VLESS 差異:新增節點前必懂的欄位

用一般使用者角度比較 VMess 與 VLESS 的加密、UUID、傳輸方式與 TLS 欄位,並說明 Add Server 哪些欄位最容易填錯而導致無法連線。

本文摘要

本文適合已有自己的服務商與設定,準備在 Shadowrocket(小火箭)中新增 VMess 或 VLESS 的使用者。先分清協定、傳輸方式與 TLS 三個層次,再依序核對 Address、Port、UUID、Host、Path。讀完後即可判斷哪些欄位必須原樣複製,哪些設定不能只憑協定名稱推測;本文不提供線路或訂閱。

VMess 與 VLESS:認證方式相近,加密職責不同

VMess 與 VLESS 都是用於用戶端和伺服器之間的代理協定,不是伺服器位址,也不是傳輸方式。兩者通常使用 UUID 識別使用者,但協定交握方式不同,不能只把既有 VMess 記錄的 Type 改成 VLESS 就繼續使用。伺服器端必須提供相應協定的連線入口。

VMess 支援協定層的資料加密,實際採用的方式取決於設定。VLESS 本身不提供這一層的資料加密,通常會搭配 TLS 等安全層使用。因此,「VLESS 沒有協定層加密」不代表「VLESS 連線一定是明文」,也不能據此關閉用戶端的 TLS。

核對項目VMessVLESS
使用者認證通常使用 UUID,須與伺服器端記錄一致通常使用 UUID,須與伺服器端記錄一致
協定層加密支援,依設定指定不提供這一層的資料加密
TLS是否啟用由伺服器入口決定通常搭配安全層使用,仍須以設定為準
傳輸方式須符合伺服器設定,例如 TCP 或 WebSocket同樣須符合伺服器設定,不能只憑協定名稱推斷
額外參數若設定包含 AlterId,須原樣核對若設定包含 Flow,須核對相應的支援條件

判斷方式:先確認伺服器入口,再選擇 Type

開啟既有設定的說明,確認明確標示的是 VMess 還是 VLESS。只有伺服器另有提供另一種入口時,才新增另一筆記錄;不要透過更改 Type 來嘗試「升級協定」。

協定名稱本身無法說明連線一定比較快。網路路徑、伺服器負載、傳輸設定與憑證狀態都會影響結果。排查時保留原記錄,另外新增測試記錄,比在同一筆記錄中同時修改多個欄位更容易找出問題。

Add Server:先填寫 Address、Port 與 UUID

在 Home 點選右上角的新增按鈕,進入 Add Server,先選擇 Type,再填寫相應協定顯示的欄位。不同 Type 顯示的選項可能不同;本文所稱的 UUID 是服務商提供的使用者識別碼,表單中也可能以 User ID 等欄位名稱顯示。不要把它誤認為備註或訂閱存取權杖。

  1. 核對 Address。填入伺服器網域名稱或 IP 位址。若資料將位址與連接埠分開提供,就分別填入欄位,不要在位址前加上網頁協定前綴,也不要把 WebSocket 的 Path 接在位址後面。
  2. 核對 Port。填入服務商指定的整數連接埠。例如設定提供 443,就填入 443;這個數字常用於 TLS 服務,但本身不能證明該入口已啟用 TLS。
  3. 核對 UUID。複製完整內容,檢查前後空格、缺漏字元與換行。常見的 UUID 由 32 個十六進位數字以連字號分組表示,不要自行產生另一個值取代伺服器已配置的 UUID。
  4. 核對協定附加項目。VMess 的加密相關選項、AlterId,以及 VLESS 設定中的 Flow 等參數,均以既有設定為準。未提供的項目,不要隨意從其他記錄照抄。
  5. 儲存並返回 Home。確認 SERVER 清單中出現新記錄,且目前選取的是這筆記錄。清單中出現記錄只代表已儲存,並不表示連線成功。
1–65535
有效伺服器連接埠範圍;實際值由伺服器指定
32 位元
常見 UUID 中十六進位數字的數量,不含連字號
3 個層次
分別檢查代理協定、傳輸方式與 TLS 安全層

若透過自己的訂閱匯入記錄,請優先查看匯入結果,不要再手動新增一份。訂閱內容可能同時帶入傳輸與安全參數;只複製位址、連接埠與 UUID,仍可能漏掉影響連線能否完成的欄位。手動編輯訂閱產生的記錄前,請先保留獨立副本,避免更新時修改內容遭到覆蓋。

傳輸方式:TCP、WebSocket 與 Host、Path 的關係

傳輸方式決定代理資料如何承載,不會取代 UUID 認證。VMess 和 VLESS 都可能使用不同的傳輸方式,實際設定須以伺服器資料及目前用戶端支援為準。選擇 WebSocket 後,Host 與 Path 才有相應的請求語意;不能把它們當成所有連線都必須填寫的通用欄位。

欄位用途常見填寫錯誤
Transport選擇符合伺服器設定的傳輸方式伺服器要求 WebSocket,用戶端卻仍使用 TCP
HostWebSocket 交握中的 HTTP Host,可用於服務路由將伺服器 IP 自動當成 Host,取代原本的網域名稱
PathWebSocket 請求路徑,例如 /ws漏掉開頭的斜線,或擅自更改大小寫
SNITLS 交握所使用的伺服器名稱誤以為填寫 Host 就一定會同步設定 SNI

例如,設定說明指定 Address 為 edge.example.com、Port 為 443、Transport 為 WebSocket、Host 為 gateway.example.com、Path 為 /ws。這些只是欄位關係的示例,不是可用服務。Address 與 Host 不同不一定有問題,不要只為了看起來一致就將兩者改成相同值。

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 交握與所有網頁請求都正常。請依下列順序操作,每次只修改一組參數。

  1. 確認選取的記錄。返回 Home,檢查 SERVER 中目前選取的項目,避免編輯了新記錄,實際連線時卻仍使用舊記錄。
  2. 確認基本連線能力。執行 Connectivity Test。若逾時,先核對 Address、Port 與目前網路;逾時不能直接歸因於 UUID 錯誤。
  3. 確認認證與傳輸設定。重新核對 Type、UUID、VMess 附加項目或 VLESS 的 Flow,再檢查 Transport、Host 與 Path。不要同時切換協定與傳輸方式。
  4. 確認 TLS。核對 TLS 開關、SNI 與憑證相關錯誤。裝置時間不正確也可能影響驗證與認證,請先恢復正確時間。
  5. 排除規則影響。在 Home → Global Routing 暫時選擇 Proxy,使用目前選取的記錄測試相同目標。Proxy 會盡可能讓此測試使用代理路徑;測試結束後請恢復原模式。這不會修正伺服器欄位。
  6. 恢復日常設定。若 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 與規則處理方式時,請繼續查看故障排除。

App Store 正版核對