REALITY 與 XTLS Vision 原理解析:TLS 握手偽裝與減少重複加密為何更快

圖解 REALITY 如何借用真實網站的 TLS 握手,以及 Vision 流控如何減少 TLS 內層的重複加密,降低處理負擔並提升傳輸速度。

本文重點

REALITY 負責代理連線的握手與身分驗證,XTLS Vision 則處理符合條件的資料轉送,兩者功能不同。本文適合已匯入訂閱、想了解 VLESS 節點參數的使用者:先釐清協定與傳輸層的差異,再了解真實網站參與握手的範圍,最後依照用戶端欄位檢查設定。實際速度取決於網路路徑與負載,不能只看節點名稱。

先釐清 VLESS、REALITY 與 Vision 各自的用途

看到「VLESS + TCP + REALITY + Vision」,可以將它拆成四個層次。VLESS 是代理協定,負責傳遞使用者識別資訊與請求目標等資料,本身不提供傳輸加密;TCP 是承載連線的傳輸方式;REALITY 提供安全握手與驗證機制;Vision 是 XTLS 的流控模式之一,用來控制代理資料的封裝與轉送方式。

因此,REALITY 不是可單獨匯入的完整節點,Vision 也不是換個伺服器位址就能啟用的加速開關。用戶端與伺服器必須支援相同的組合。Xray 與 V2Ray 使用的核心不同,不能只因名稱相近,就認定設定欄位可以直接互換。

應用程式發出請求 路由選擇出站 安全握手 代理驗證 資料轉送

這個流程是邏輯示意,不代表每個階段都需要額外等待一次網路往返。路由選擇出站,是指用戶端判斷請求應直接連線,或交由某個代理節點處理;只有實際經過該節點的流量,才會使用它的 REALITY 與 Vision 設定。直接連線網站的速度,不能用來判斷這個節點的協定表現。

REALITY 所謂的「借用握手」究竟借了什麼?

先說結論:它不是借用真實網站的私鑰,也不是讓目標網站替代理伺服器解密。這裡的「借用」是對握手外觀與轉送機制的白話說明。理解時要區分兩種連線:帶有有效驗證資訊的用戶端連線,以及一般連線或未通過驗證的連線。

  1. 用戶端發起握手。用戶端連線至代理伺服器的位址與連接埠,並依照設定送出 TLS ClientHello。SNI 是握手中宣告的伺服器名稱;用戶端指紋則會影響握手封包的組成方式。
  2. REALITY 伺服器辨識驗證資訊。合法用戶端會使用設定的公鑰等參數參與驗證與金鑰協商,伺服器則使用對應的私鑰處理握手。Short ID 是另一項比對參數,並非可取代使用者識別資訊的密碼。
  3. 合法連線進入代理處理流程。驗證成功後,雙方會建立受保護的連線,再處理 VLESS 請求。瀏覽器最後造訪的網站,可以與握手中宣告的名稱不同。
  4. 未通過驗證的連線可能會轉送至目標網站。伺服器會依照設定,將這類流量轉送到真實的 TLS 網站,呈現正常網站的回應。實際行為仍會受到實作方式、目標網站與網路狀況影響。

伺服器通常不必持有這個借用名稱的公開憑證及其私鑰,但仍須正確設定自己的 REALITY 金鑰組。用戶端取得的是公鑰,伺服器私鑰不應寫入訂閱。真實目標網站的握手行為若有變化,也可能影響連線,因此不能把這套機制視為永久不變的固定外觀。

TLS 1.3
REALITY 目標網站須符合的關鍵握手條件之一
443
常見 HTTPS 連接埠範例,實際連線請以節點設定為準

連接埠號碼只代表監聽位置,不能用來證明所用協定。節點標示 443,不代表一定使用 REALITY;真實網站支援 TLS 1.3,也不表示它適合用於所有伺服器部署情境。一般訂閱使用者應保留服務提供者給定的參數,不要自行更換目標網站測試。

XTLS Vision 如何減少重複加密

瀏覽器造訪 HTTPS 網站時,瀏覽器與網站之間原本就有一層 TLS 加密。如果再將這段已加密的資料完整包進代理的外層 TLS,資料就會多經過一層封裝與處理。這種「TLS 套 TLS」可以正常運作,但會增加一些運算、複製與記錄處理成本。

Vision 的重點是辨識內層 TLS 流量,並在符合條件時切換至更直接的轉送路徑,減少對已加密應用程式資料再次進行外層加密處理。它也會填充早期資料,以改善特定長度特徵。這不代表關閉瀏覽器 HTTPS,也不會將網頁內容以明文傳送。

比較項目一般外層 TLS 封裝Vision 的處理目標
內層 HTTPS維持瀏覽器與最終網站之間的 TLS 工作階段同樣保留瀏覽器與網站之間的 TLS 工作階段
已加密的應用程式資料通常會繼續進入外層 TLS 封裝符合辨識條件後,減少重複處理
早期資料依所使用的代理與 TLS 實作處理使用流控與填充策略處理
未符合切換條件依既定封裝路徑轉送不能假設已進入最佳化路徑

不能簡化成「所有資料都少加密一次」。能否進入最佳化路徑,取決於內層協定與實作判斷;非 TLS 資料不會憑空變成受內層 TLS 保護的資料。直接轉送能否進一步利用作業系統的低複製能力,也取決於平台、核心與連線條件,不是填入 Flow 就一定能達成零複製。

判斷方式:先確認最佳化對象,再觀察速度差異

以持續進行的 HTTPS 下載觀察傳輸量,更接近 Vision 想最佳化的負載。只測節點延遲或開啟一個很小的網頁,主要反映握手與網路等待時間,無法據此判斷是否減少了重複加密。

在用戶端檢查哪些參數

桌面版可先在 v2rayN 節點清單中選取節點,按右鍵選擇「編輯」,查看協定、傳輸方式、安全類型與 Flow。不同版本的編輯視窗可能會調整欄位分組;請以欄位名稱為準,不要只看節點備註。Android 版可在 v2rayNG 節點卡片上點選編輯圖示,檢查對應項目。訂閱節點建議先重新更新以取得參數;手動修改前,先複製一份留作比對。

VLESS + REALITY + Vision

協定
VLESS
傳輸方式
TCP,部分介面標示為 RAW
安全類型
reality
Flow
xtls-rprx-vision
驗證參數
公鑰、Short ID、使用者識別資訊

這是常見組合的欄位對照,並非可直接使用的節點。每個欄位的值都必須與伺服器設定相符。

VLESS + TLS + Vision

協定
VLESS
傳輸方式
TCP,部分介面標示為 RAW
安全類型
tls
Flow
xtls-rprx-vision
憑證驗證
依伺服器名稱驗證憑證

Vision 也能搭配一般 TLS 使用;它不是 REALITY 的別稱,不應混用兩類安全參數。

也要確認使用的核心。v2rayNG 使用 Xray 核心,可支援相應組合;v2flyNG 使用 v2fly 核心,不能將它視為 REALITY 與 Vision 節點的等效執行環境。v2rayN 若支援切換不同核心,請確認目前節點實際使用的是支援這些參數的 Xray 核心,而不只是確認用戶端已啟動。

為什麼換用 REALITY 與 Vision,速度仍可能沒有提升?

它們無法增加服務商提供的頻寬,也無法解決跨網路壅塞。長距離連線的往返時間、尖峰時段的封包遺失、伺服器負載、節點限速與裝置處理能力,都可能比重複加密的額外負擔更顯著。如果瓶頸在出口頻寬,減少加密處理也無法讓下載速度超過出口上限。

  1. 先固定測試條件。使用同一台裝置、同一個網路連線與同一個下載資源,並關閉其他下載工作。不同地區或不同電信業者的兩個節點,不適合直接拿來證明某種流控比較快。
  2. 確認流量確實經過代理。在 v2rayN 主畫面的「系統代理」中選擇「自動設定系統代理」,再檢查路由模式。系統代理只會影響遵循該設定的應用程式,不會自動接管所有程式。
  3. 分開觀察延遲與傳輸量。記錄連線是否穩定建立、持續下載速度是否波動,以及日誌是否反覆顯示重新連線。延遲較低表示等待時間可能較短,不代表下載頻寬一定較大。
  4. 一次只調整一個項目。需要比對時,請使用伺服器明確支援的兩份設定。不能只在用戶端刪除 Flow,再把驗證失敗當成效能下降。

處理方式:先排除網路問題,再調整協定參數

如果多個節點都在相同時段變慢,請先更換網路連線或時段再測試;如果只有單一節點握手失敗,先檢查訂閱與驗證欄位。不要接連修改 SNI、指紋與 Flow,否則很難找出是哪個項目造成影響。

握手錯誤與常見迷思

日誌中的錯誤只是排查線索,不代表原因只有一種。出現 EOF、逾時或連線重設時,必須配合發生階段判斷:先確認是否連上伺服器,再確認握手是否成功,最後檢查代理請求是否完成。分享日誌前,請遮蔽訂閱網址、使用者識別資訊及其他驗證資料。

訂閱匯入成功,為什麼仍顯示握手失敗?

匯入成功只代表用戶端讀取了訂閱格式。請先開啟節點編輯視窗,核對服務提供者給定的位址、連接埠、公鑰、Short ID、SNI 與 Flow;再確認裝置時間正確。如果只有這個節點失敗,更新訂閱後再試,不要先關閉其他安全驗證來規避錯誤。

日誌顯示不認得 reality 或 flow,應該修改哪個值?

先確認實際啟動的核心及其支援能力,再前往下載頁選擇合適的用戶端。未知欄位通常表示設定與核心不相容,不應任意將 reality 改成 tls;兩者使用的驗證方式不同,改名稱不會讓伺服器自動配合。

已啟用 Vision,為什麼延遲數字幾乎沒變?

這是可能發生的正常情況。節點延遲主要反映網路往返時間與測試方式,Vision 的最佳化重點不是縮短實際距離。請在相同網路路徑下測試持續 HTTPS 傳輸,並觀察裝置負載與穩定性;若沒有改善,不必只為了節點名稱更換目前可用的設定。

可以把握手名稱改成目前正在造訪的網站嗎?

不建議這麼做。握手名稱必須符合伺服器設定,且不必與這次瀏覽器造訪的最終網域相同。請先還原訂閱中的原始值;如果服務提供者調整了名稱,應更新訂閱,而不是逐一嘗試網站網域。

使用 REALITY 後,就不必檢查 DNS 和路由了嗎?

仍然需要檢查。若伺服器位址是網域名稱,連線前可能就需要 DNS;應用程式請求是否進入代理,則由系統代理、應用程式設定與路由規則共同決定。請先確認一般網站與目標網站各自使用哪個出站,再處理解析失敗或規則誤判;握手機制無法取代這些設定。

下載v2rayN