本文適合已備妥服務參數或訂閱,準備在 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 也應關閉。兩種協定都必須依伺服器端要求設定傳輸方式與安全層。
| 檢查項目 | VMess | VLESS |
|---|---|---|
| 身分憑證 | 通常使用 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 語言與版本而異。請核對欄位用途,不要為了尋找名稱相近的選項而更改協定類型。
- Address:填入現有服務提供的網域名稱或 IP 位址。一般的獨立位址欄位不包含
https://、路徑或訂閱查詢參數;不要在此貼上完整訂閱連結。 - Port:填入伺服器實際監聽的連接埠。範例中的
443僅供說明,不能據此認定所有 TLS 服務都使用相同連接埠。 - UUID:逐字複製現有憑證,並移除前後空格與換行。格式看起來符合 UUID,只能表示格式可能正確,不代表伺服器端已授權此身分。
- 協定專屬欄位:VMess 請核對加密選項與 alterId;VLESS 請核對現有參數中的 encryption、flow 等內容。若找不到對應欄位,先確認類型與支援情況,不要把值填進備註。
- 傳輸方式與 TLS:接著檢查 Transport、TLS 及其相關子項,全部確認後再儲存。備註僅用於區分項目,不會參與伺服器驗證。
例如 123e4567-e89b-42d3-a456-426614174000 僅用於展示 UUID 的文字格式,不是可用憑證。UUID 也不可與訂閱 URL 中的 token 混用:前者是伺服器驗證資訊,後者可能是取得整份訂閱的憑證。排除問題時,請勿公開任何一種真實值。
三、VMess 的 alterId 與加密選項填寫方式
alterId 是 VMess 歷史設定中的相容參數;部分分享資料會以 aid 表示同一項。現代 VMess AEAD 設定通常使用 0。此處的 0 不代表關閉身分驗證,也不等於關閉 TLS。若收到的舊參數包含非零值,請先向原服務提供者確認相容需求,不要把它當成提升速度的數值任意增減。
- 現有參數為 auto:照原值選擇,讓實作採用適用的加密方式;不要只因裝置型號不同就改用其他值。
- 現有參數明確指定演算法:確認是否支援後依原值填寫。加密選項處理的是 VMess 協定層的資料,不負責比對憑證網域名稱。
- 看到 none 或 zero:不要將它們視為 auto 的通用替代值;這些選項各有特定意義與適用條件,需一併確認伺服器端設定。
- 匯入後沒有獨立的 alterId 欄位:先保留匯入結果,核對原始參數與目前的支援情況。不要將數字加到 UUID、Address 或 Port 中。
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 模式與失敗訊息。
- 先檢查基本連線能力:若顯示逾時,先核對 Address、Port 與目前網路。連接埠無法連線時,反覆更換 UUID 或 WebSocket Path 通常無法解決問題。
- 接著檢查安全與驗證:憑證錯誤請檢查 TLS 與 SNI;驗證失敗請檢查 UUID、VMess 的 alterId 與裝置時間。錯誤名稱以實際顯示內容為準。
- 再檢查應用層傳輸:若 TCP 已建立連線,但 WebSocket 連線失敗,請核對 Transport、Host 與 Path;只有延遲數值,無法證明整條代理連線都可正常使用。
- 最後檢查路由: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 與其他驗證資訊應妥善保密。