VMess 與 VLESS 差異:Shadowrocket 的 UUID、加密與傳輸方式設定指南

整理 VMess 與 VLESS 的加密方式、UUID、alterId、TLS 與傳輸設定,說明如何在 Shadowrocket 中核對各欄位。

本文重點

本文適合已備妥服務參數或訂閱,準備在 Shadowrocket 中核對 VMess 與 VLESS 設定的使用者。先釐清協定、身分憑證、傳輸方式與 TLS 四個層次,再依 Home → Add Server 的順序檢查欄位。閱讀後即可了解 UUID、alterId、加密選項、Host 與 SNI 各自的用途,並依故障發生階段判斷連線問題。

一、VMess 與 VLESS 的差異:協定加密不等於 TLS

Shadowrocket(小火箭)會在伺服器項目中儲存連線參數。VMess 與 VLESS 是協定類型,不是 Global Routing 的分流模式,也不是 TLS 的開關名稱。應依現有伺服器端設定選擇類型,不能只修改用戶端的 Type,就把同一項服務從 VMess 轉成 VLESS。

VMess 提供協定層的驗證與可選資料加密機制,常見加密選項包括 auto、aes-128-gcm 與 chacha20-poly1305。VLESS 本身不提供通用資料加密層;一般設定中的 encryption=none 描述的是這一層,不代表外層 TLS 也應關閉。兩種協定都必須依伺服器端要求設定傳輸方式與安全層。

檢查項目VMessVLESS
身分憑證通常使用 UUID;必須與伺服器端設定一致通常使用 UUID;必須與伺服器端設定一致
協定層加密可設定加密方式;依服務參數填寫一般 encryption 值為 none,這一層不提供資料加密
alterId歷史相容參數;現代 VMess AEAD 設定通常為 0不使用此參數
TLS 與傳輸方式分開核對,不能從協定名稱推斷分開核對,不能從協定名稱推斷

VLESS 的 flow 也不是 VMess 加密方式的替代欄位。若現有參數明確提供 flow,應確認所選類型、傳輸方式與安全設定是否支援該組合,並照原值填寫;一般 VLESS 設定不要自行加入。協定名稱相同,不代表所有擴充組合都能互換。

二、依 Add Server 順序核對 Address、Port 與 UUID

在 Home 點選右上角的新增入口,進入 Add Server,先在 Type 選擇 VMess 或 VLESS,再填寫其他欄位。不同類型顯示的欄位可能不同;介面標籤也可能因 App 語言與版本而異。請核對欄位用途,不要為了尋找名稱相近的選項而更改協定類型。

  1. Address:填入現有服務提供的網域名稱或 IP 位址。一般的獨立位址欄位不包含 https://、路徑或訂閱查詢參數;不要在此貼上完整訂閱連結。
  2. Port:填入伺服器實際監聽的連接埠。範例中的 443 僅供說明,不能據此認定所有 TLS 服務都使用相同連接埠。
  3. UUID:逐字複製現有憑證,並移除前後空格與換行。格式看起來符合 UUID,只能表示格式可能正確,不代表伺服器端已授權此身分。
  4. 協定專屬欄位:VMess 請核對加密選項與 alterId;VLESS 請核對現有參數中的 encryption、flow 等內容。若找不到對應欄位,先確認類型與支援情況,不要把值填進備註。
  5. 傳輸方式與 TLS:接著檢查 Transport、TLS 及其相關子項,全部確認後再儲存。備註僅用於區分項目,不會參與伺服器驗證。
128 bit
UUID 的字元數;常見文字格式為 36 個字元,包含連字號
0
現代 VMess AEAD 設定常見的 alterId 值
443
TLS 常見連接埠範例;實際值必須依伺服器端指定

例如 123e4567-e89b-42d3-a456-426614174000 僅用於展示 UUID 的文字格式,不是可用憑證。UUID 也不可與訂閱 URL 中的 token 混用:前者是伺服器驗證資訊,後者可能是取得整份訂閱的憑證。排除問題時,請勿公開任何一種真實值。

三、VMess 的 alterId 與加密選項填寫方式

alterId 是 VMess 歷史設定中的相容參數;部分分享資料會以 aid 表示同一項。現代 VMess AEAD 設定通常使用 0。此處的 0 不代表關閉身分驗證,也不等於關閉 TLS。若收到的舊參數包含非零值,請先向原服務提供者確認相容需求,不要把它當成提升速度的數值任意增減。

VMess 驗證也會受到時間影響。若參數完全一致但持續驗證失敗,可檢查 Apple 裝置的系統日期與時間是否正確,並使用系統允許的自動設定。校正時間只能排除這類因素,無法修正錯誤的 UUID、失效的授權或無法連線的伺服器連接埠。

四、Transport、TLS、Host 與 SNI 各自代表什麼

Transport 決定協定資料的承載方式,例如 TCP 或 WebSocket;TLS 負責安全連線與憑證驗證。Address 是建立網路連線的目的位址,SNI 是 TLS 交握時使用的伺服器名稱,WebSocket 的 Host 則是 HTTP 要求標頭欄位。這些欄位在某些設定中可能相同,在其他設定中則不同,不能互相代填。

欄位或參數填寫依據填錯時常見的狀況
Transport須與伺服器端實際使用的傳輸方式一致,例如 WebSocket連接埠可連線,但無法建立後續協定連線
Path例如 /edge;保留開頭斜線、大小寫及必要的查詢參數WebSocket 交握失敗,可能收到 HTTP 404
Host現有服務要求的 HTTP Host,例如 edge.example.com要求送到錯誤網站,可能出現 403 或 404
TLS / SNI依服務要求啟用 TLS,並填入指定的伺服器名稱憑證名稱不符,或 TLS 交握失敗

表中的網域名稱與路徑皆為文字範例,並非連線入口。HTTP 狀態碼也只能作為排查線索,不能只憑 403 或 404 就確認是哪個欄位錯誤;反向代理設定也可能造成相同結果。請逐一比對服務端要求的 Host、Path 與用戶端目前的值。

依現有參數啟用 TLS,並驗證憑證

建議

服務明確要求使用 TLS 時,請保持 TLS 開啟、填入正確的 SNI,並保留憑證驗證。若憑證有誤,應先檢查裝置時間、網域名稱與伺服器憑證,而非直接略過驗證。

適用情況:現有參數明確使用 TLS 的 VMess 或 VLESS 連線

依現有參數停用 TLS

僅在伺服器端明確採用非 TLS 傳輸時才保持關閉。用戶端單方面啟用 TLS 會造成交握不相符;VLESS 本身不提供資料加密,不能將一般的非 TLS 連線視為具有同等加密效果。

適用情況:服務提供者明確說明的受控測試,或其他既定安全封裝情境

結論:遇到 TLS 錯誤時,先檢查名稱,不要先改 UUID

若錯誤明確發生在憑證驗證階段,請先核對 SNI、憑證涵蓋的網域名稱與裝置時間;保持 UUID 與傳輸參數不變,修正後再測試,才能判斷是哪個項目造成影響。

五、儲存後如何驗證:區分連線問題與分流問題

儲存伺服器只代表完成參數輸入,不表示該項目已用於目前連線。在 Home 選取目標伺服器,將它設為目前使用的項目,再開啟連線開關;首次連線時,依系統提示允許加入 VPN 設定。接著執行 Connectivity Test,並記錄測試項目、Global Routing 模式與失敗訊息。

  1. 先檢查基本連線能力:若顯示逾時,先核對 Address、Port 與目前網路。連接埠無法連線時,反覆更換 UUID 或 WebSocket Path 通常無法解決問題。
  2. 接著檢查安全與驗證:憑證錯誤請檢查 TLS 與 SNI;驗證失敗請檢查 UUID、VMess 的 alterId 與裝置時間。錯誤名稱以實際顯示內容為準。
  3. 再檢查應用層傳輸:若 TCP 已建立連線,但 WebSocket 連線失敗,請核對 Transport、Host 與 Path;只有延遲數值,無法證明整條代理連線都可正常使用。
  4. 最後檢查路由:Global Routing 的 Direct 不會透過代理驗證目標流量;Config 則依設定規則處理連線。若要排除規則影響,可暫時使用 Proxy 對相同目標進行對照測試,完成後恢復原模式。

在 Config 模式下,DOMAIN-SUFFIX、GEOIP、IP-CIDR 與 FINAL 等規則會決定連線採用哪種策略,無法修復協定驗證失敗。例如 DOMAIN-SUFFIX,example.com,PROXY 表示符合該網域後綴的連線會交由 PROXY 策略處理;若該策略實際選用的不是剛才編輯的項目,修改就不會套用到目前的要求。

若要手動掌控測試時機,也可檢查 Settings → On Demand 的現有設定,避免自動連線行為干擾觀察。排查期間一次只修改一個欄位,切換伺服器或重要參數後重新連線;不要同時變更協定、TLS、規則與 DNS,否則即使恢復正常,也難以確認原因。

六、UUID、訂閱匯入與切換協定的常見問題

同一個 UUID 可以直接從 VMess 改成 VLESS 嗎?

不能只因 UUID 相同就切換。請先確認伺服器端確實提供 VLESS 入口,再於 Home → Add Server 新增相應類型,填入該入口的位址、連接埠、UUID、傳輸方式與安全參數。保留原項目以便比對,不要直接覆寫唯一可用的設定。

VLESS 的 encryption 是 none,為什麼還要啟用 TLS?

兩者位於不同層次。encryption=none 表示 VLESS 本身沒有提供這一層的資料加密;若服務要求使用 TLS,仍應在項目中啟用 TLS,並填入正確的伺服器名稱。不要因為看到 none 就自動關閉 TLS。

訂閱中已經有項目,還需要逐筆手動輸入嗎?

通常不需要。使用現有訂閱時,請在 Home 的新增入口選擇 Subscribe,將完整訂閱網址填入 URL,儲存並更新。接著開啟匯入的伺服器項目核對欄位即可。訂閱網址用於取得項目,不是 VMess 或 VLESS 的 Address。

剛修改 Host,更新訂閱後為什麼又恢復原狀?

訂閱項目由訂閱內容管理,更新時可能會覆蓋本機修改。請先保存要比對的參數,再另外建立手動測試項目以利排查;若要長期修正,應核對原訂閱內容。不要把本機的暫時修改當成訂閱來源已更新。

兩種協定都能匯入,該保留哪一種?

先分別確認驗證、TLS 與傳輸參數,再於相同網路、相同目標與相同分流模式下測試。保留與現有服務設定相符且測試通過的項目;協定名稱本身無法保證延遲或傳輸量表現,也不能取代實際連線檢查。

本文假設使用者已有自己的服務與訂閱,內容僅說明欄位與操作。提交問題排查資訊時,可提供協定類型、傳輸方式、TLS 是否啟用、錯誤發生階段,以及已去識別化的欄位結構;UUID、完整訂閱 URL 與其他驗證資訊應妥善保密。

App Store 正版驗證