先釐清代理協定、傳輸方式與安全層的差異,再核對伺服器參數及用戶端核心。本文適合正在挑選訂閱節點、移轉桌面與 Android 設定,或準備自架服務的使用者。讀完即可了解 VMess、VLESS、Trojan、Shadowsocks 各自需要哪些設定欄位、哪些組合不能互換,以及連線失敗時應先檢查哪一層。
一、代理協定、傳輸方式與安全層是不同設定
VMess、VLESS、Trojan、Shadowsocks 定義用戶端與代理伺服器如何驗證、封裝及轉送要求。TCP、WebSocket、gRPC 描述連線或承載方式;TLS、REALITY 則屬於安全機制。節點名稱常把不同層的資訊放在一起,因此不能只看協定名稱開頭就判斷完整設定。
例如,VLESS + WebSocket + TLS 和 VLESS + TCP + REALITY 雖然都使用 VLESS,但伺服器入口、握手參數及中間網路需求各不相同。把第一種節點的傳輸方式改成 TCP,不會自動變成第二種設定;若伺服器沒有相應的監聽服務,用戶端只會連線失敗。
- 代理協定:決定使用 UUID、密碼或特定金鑰資料,以及要求的封裝格式。
- 傳輸方式:決定直接建立串流連線,或使用 WebSocket、gRPC 等承載。可用組合受核心及伺服器實作限制。
- 安全層:決定如何保護連線及驗證伺服器身分。TLS 通常需要正確的伺服器名稱與可信任憑證。
- 路由與流量接管:系統代理、TUN、網域分流屬於用戶端的流量入口與連線出口選擇,不是這四種協定本身的屬性。
二、四種協定的加密與設定差異
比較加密方式時,必須同時確認兩件事:代理協定本身是否會加密負載資料,以及外層是否另有 TLS 等保護。欄位顯示 none,不一定代表整條連線都沒有加密;反過來說,使用 443 連接埠也不能證明連線已啟用 TLS。
| 協定 | 驗證與加密 | 常見組合 | 需要核對的欄位 |
|---|---|---|---|
| VMess | 以 UUID 識別使用者;新版設定使用 VMess AEAD,負載資料是否加密由 security 設定決定 | TCP;WebSocket + TLS | UUID、security、alterId、傳輸方式、安全層、系統時間 |
| VLESS | 以 UUID 識別使用者;協定本身不負責加密負載資料 | TCP + TLS;WebSocket + TLS;Xray 下的 TCP + REALITY | UUID、encryption、flow、TLS 或 REALITY 參數 |
| Trojan | 以密碼驗證;常見部署會依賴 TLS 保護連線 | TCP + TLS;其他承載方式需雙方實作支援 | 密碼、連接埠、伺服器名稱、憑證驗證、傳輸方式 |
| Shadowsocks | 依 method 與密碼或金鑰資料加密;AEAD 與 2022 系列的要求不同 | 原生 TCP、UDP 轉送;其他承載方式需額外支援 | method、密碼或金鑰格式、連接埠、UDP 支援 |
VMess:留意 AEAD 與舊版欄位
新版 VMess 設定通常使用 alterId: 0 表示 AEAD 用法。舊教學中的非零 alterId 不應直接套用到目前的設定。VMess 驗證也依賴系統時間;若 Windows 或 Android 的時間明顯有誤,請先啟用自動校時,再判斷 UUID 是否填錯。是否加上 TLS,仍須以伺服器端部署方式為準。
VLESS:不內建負載加密,不代表可以明文傳輸
VLESS 的 encryption: "none" 是常見設定值,連線保護則交由 TLS 或 REALITY 等機制負責。一般公開網路上的部署,不應只因為「VLESS 開銷較低」就移除安全層。xtls-rprx-vision 是特定組合使用的 flow 值,不能直接套用到所有 WebSocket 節點,也不能只在用戶端單方面啟用。
Trojan 與 Shadowsocks:除了密碼,其他設定也必須相符
即使 Trojan 密碼正確,只要 TLS 伺服器名稱錯誤,仍可能在驗證前就因握手失敗而無法連線。Shadowsocks 則必須正確指定加密方法;aes-128-gcm 和 2022-blake3-aes-128-gcm 並非可互換的名稱,後者對金鑰格式有明確要求,不能隨意填入一般密碼。
結論:先確認安全層,再比較協定名稱
檢查節點編輯頁中的 TLS 或 REALITY 設定,以及憑證驗證狀態。不要因為 VLESS 的 encryption 是 none 就關閉安全層,也不要把停用憑證驗證當作 Trojan 的長期解決方式。
三、依使用情境選擇,不要替協定排名
使用訂閱時,可選的協定首先取決於服務提供者。若兩個不同協定的節點,在伺服器、網路線路、負載及出口方面都不相同,測速結果就無法證明哪種協定普遍較快。自架服務則可先確認憑證、網域及網路入口條件,再決定傳輸組合。
VLESS:建立新的 Xray 設定
建議在伺服器與用戶端都支援的前提下,依部署條件選擇 TLS 或 REALITY。先核對 UUID、安全參數及 flow,不要把「參數較少」誤解為「可以省略安全層」。此建議適用於可自行管理伺服器的新建設定。
適合:使用 Xray、可管理伺服器,並能維護完整連線參數的情況
VMess:保留已驗證可用的節點
如果現有 VMess AEAD 節點連線穩定,且桌面與 Android 都能匯入,就可以繼續使用。移轉協定前,先確認舊版欄位與時間設定;不必只為了更換協定名稱就重建服務。
適合:現有訂閱、已部署 WebSocket + TLS,或需相容既有設定的情況
Trojan:已有網域與憑證
一般 TCP + TLS 部署的設定結構較直接,但仍須維護憑證效期、網域解析及伺服器名稱。除了密碼,TLS 握手連線同樣需要檢查。
適合:具備憑證維護條件,且伺服器已提供 Trojan 入口的情況
Shadowsocks:需要明確的加密轉送功能
原生連線所需欄位較集中,重點在 method、金鑰與連接埠。若需要 UDP,必須另外確認伺服器轉送設定及網路是否放行;不能只根據網頁能否開啟來判斷。
適合:已有相符的伺服器,且希望維持原生 TCP/UDP 轉送架構的情況
這四種協定都不能完全保障匿名性。伺服器的營運方式、DNS 路徑、應用程式的登入狀態及用戶端分流設定,仍會影響實際使用結果。選擇協定時應記下部署限制,不要光憑名稱推斷所有安全特性。
四、v2rayN、v2rayNG、v2flyNG 的支援範圍
v2rayN 是桌面用戶端,v2rayNG 是採用 Xray 核心的 Android 用戶端,v2flyNG 則使用 v2fly 核心。用戶端負責管理節點及產生設定,實際執行協定的是核心。能辨識訂閱項目,不代表目前使用的核心一定支援其中所有擴充參數。
| 用戶端 | 檢查位置 | 選用注意事項 |
|---|---|---|
| v2rayN | 節點編輯視窗中的協定、傳輸與安全設定;啟動記錄中的核心資訊 | 依桌面端實際使用的核心判斷;VLESS + REALITY 須確認 Xray 支援及相關參數 |
| v2rayNG | 長按節點 → 編輯;查看記錄頁中的啟動錯誤 | 四種基本協定可依相應設定使用;新擴充功能取決於應用程式隨附的 Xray 版本 |
| v2flyNG | 節點編輯頁、應用程式版本及啟動記錄 | 以 v2fly 核心實際支援的功能為準;不能直接移入 Xray 的 REALITY、Vision 參數 |
移轉方式:先確認協定類型,再核對擴充欄位
桌面端:v2rayN
- 匯入後查看節點編輯視窗,確認位址、連接埠、傳輸方式與安全層。
- 使用 REALITY 時,請核對公鑰、shortId、伺服器名稱及指紋設定。
- 啟動後查看核心記錄,先排除設定解析錯誤,再測試網頁。
Android:v2rayNG 或 v2flyNG
- 使用與伺服器參數相符的核心,不要只比較應用程式介面顯示的協定名稱。
- 移轉到 v2flyNG 前,先確認設定是否包含 Xray 專用擴充功能。
- 檢查系統 VPN 授權及個別應用程式設定,避免把流量入口問題誤判為協定問題。
共用訂閱網址可減少重複輸入,但兩端能否使用同一個節點仍取決於核心支援;訂閱更新也須在各端分別執行。
五、透過連接埠與記錄判斷連線失敗的位置
以下三個數字用來說明不同層級的連接埠用途,並非所有用戶端的預設值,也不是部署要求。伺服器入站連接埠與本機代理監聽連接埠位於連線兩端,不能互相替代。填寫前請先查看節點設定及本機實際監聽值。
- 先確認核心已啟動。若記錄中出現設定解析失敗、未知欄位或連接埠被占用,請先修正設定。此時測試協定速度沒有意義。
- 接著確認應用程式有將流量交給用戶端。桌面端檢查系統代理是否指向實際監聽連接埠;Android 則確認 VPN 是否已建立,以及目標應用程式是否遭到排除。
- 檢查伺服器是否可連線。若連線逾時,先核對位址、入站連接埠、防火牆及服務是否正在執行。逾時本身不能證明 UUID 錯誤。
- 分辨安全握手與使用者驗證。憑證錯誤時,優先檢查系統時間、伺服器名稱及憑證鏈;驗證錯誤時,再核對 UUID、密碼、金鑰及加密方法。
- 最後檢查傳輸參數。WebSocket 須核對 path 與 Host;gRPC 須核對 serviceName;REALITY 則須核對伺服器提供的公鑰、shortId 等欄位。
例如,本機 SOCKS 監聽位址確認為 127.0.0.1:10808 時,可以使用以下指令驗證要求能否經由用戶端送出。此處使用網域測試頁,不含訂閱憑證;若實際連接埠不同,請改用實際值。
curl --proxy socks5h://127.0.0.1:10808 --connect-timeout 10 --max-time 20 https://example.com/
socks5h 表示將目標網域交由 SOCKS 代理處理。這項測試會略過系統代理設定,但不會略過核心路由:若規則將該網域分流為直連,即使成功回應,也不能證明遠端代理出口可用。請同時查看記錄中的命中規則及出口,再做判斷。
六、比較效能時,哪些條件要保持一致
不同線路之間的延遲、壅塞、封包遺失及伺服器負載,往往比協定封裝方式的差異更明顯。VMess、VLESS、Trojan、Shadowsocks 這些名稱無法直接換算成傳輸量。硬體是否支援加密加速、是否啟用額外承載方式,以及測試流量是否經過相同出口,都會影響結果。
- 使用同一台裝置與網路:不要直接比較桌面有線網路與 Android 行動網路的結果。
- 使用同一台伺服器與出口:盡量只變更協定組合,並維持相同地區、頻寬及測試目標。
- 在相同時段測試:每組至少重複 3 次,分別記錄連線耗時、持續傳輸速度及失敗次數。
- 分別測試 TCP 與 UDP:網頁能正常載入,只代表相應要求成功,不能證明 UDP 轉送也正常。
- 記下完整組合名稱:請記錄「VLESS + TCP + REALITY」,不要只寫「VLESS」,否則會漏掉重要條件。
結論:保留穩定組合,再進行單一變因測試
先匯出可還原的設定,每次只調整一項伺服器端也支援的選項。連續 3 次測試都有改善,且記錄確認流量經過相同出口後,再考慮替換日常使用的節點。
七、協定選型常見問題
VLESS 的 encryption 是 none,需要手動改成 AES 嗎?
不需要。VLESS 的這個欄位不是 VMess 或 Shadowsocks 的加密方法選擇器。請開啟節點編輯頁,確認安全層依伺服器要求設為 TLS 或 REALITY,並核對相應參數;不要在 encryption 欄位填入其他協定的演算法名稱。
Trojan 使用 443 連接埠,為什麼仍出現憑證錯誤?
連接埠不負責驗證身分。先啟用裝置自動校時,再比對 TLS 伺服器名稱與伺服器憑證涵蓋的網域,並檢查憑證是否過期及憑證鏈是否完整。連線位址可以與伺服器名稱不同,但後者必須符合部署要求,不應長期以停用驗證的方式運作。
同一份訂閱在 v2rayNG 可用,v2flyNG 卻不能用,該怎麼辦?
先開啟該節點的編輯頁,檢查是否包含 REALITY 或 xtls-rprx-vision。這類 Xray 擴充功能不能當成通用 VLESS 參數移轉。請改用伺服器另外提供的相容節點,或使用相符的核心;不要只刪除錯誤欄位,因為伺服器可能仍需要這些設定。
Shadowsocks 可以開啟網頁,但遊戲流量失敗,是選錯協定嗎?
先確認遊戲是否使用 UDP,再檢查伺服器是否啟用 UDP 轉送、防火牆是否放行相應連接埠,以及用戶端的流量接管方式是否涵蓋該應用程式。TCP 網頁連線成功不能取代 UDP 測試;確認這些條件後,再比較其他伺服器提供的協定組合。
現有 VMess 節點很穩定,有必要全部改用 VLESS 嗎?
不必只因為協定名稱不同就移轉。先確認現有設定採用新版 AEAD 用法、系統時間正確,且安全設定符合部署要求。若確實需要新功能或維護需求,再新增一組相符的 VLESS 伺服器設定,測試通過後才移轉;不要直接覆蓋唯一可用的節點。