REALITY 與 XTLS Vision 原理解析:VLESS 流控如何減少重複加密

從 TLS 握手說明 REALITY 如何運用真實網站憑證,以及 xtls-rprx-vision 流控如何減少重複加密,降低延遲與 CPU 使用率。

本文摘要

本文適合已匯入 VLESS 訂閱,卻不清楚 REALITY 與 flow 欄位差異的 Mac 和 Android 使用者。先拆解應用程式 TLS、代理傳輸與 VLESS 三層,再說明 Vision 如何在特定條件下減少重複加密,最後整理 v2rayN 與 v2rayNG 的欄位核對方式及疑難排解順序。效能提升取決於流量類型與執行環境,並非改個流控名稱就能加速。

TLS 握手與代理通道:重複加密發生在哪一層

瀏覽器連線至 HTTPS 網站時,會先與目標網站協商 TLS。握手過程會確認協定參數、驗證網站身分並建立工作階段金鑰;之後的 HTTP 要求與回應則由 TLS 記錄層加密。即使要求經由代理傳送,網站這一層 TLS 通常仍是在瀏覽器與網站之間端對端運作。

如果代理用戶端與代理伺服器之間又建立一條 TLS 通道,瀏覽器產生的 TLS 密文就會成為外層通道的承載資料。用戶端再次加密已加密的資料,伺服器先解開外層,再將內層密文轉送至網站。這就是常說的 TLS over TLS,但兩層保護的是不同連線。

瀏覽器要求應用程式 TLS代理封裝伺服器轉送目標網站

重複加密會增加密碼運算、記錄封裝與記憶體資料搬移的負擔,但不一定是連線緩慢的主因。首次開啟網頁還會受到 DNS 查詢、跨網路往返時間、封包遺失及伺服器排隊影響。Vision 只最佳化特定資料路徑,無法一併消除這些成本。

REALITY:真實網站憑證與用戶端驗證

REALITY 是 Xray 的傳輸安全機制。常見設定會指定一個真實 TLS 目標網站,並選擇與該網站相容的伺服器名稱及握手特徵。它運用目標網站真實的握手資料與憑證外觀,讓入口呈現近似一般 TLS 服務的行為,同時為預先設定的用戶端提供專屬驗證途徑。

「借用憑證」不代表下載一張憑證就能冒充任何網站,也不表示代理伺服器取得了目標網站的私鑰。REALITY 用戶端除了處理 TLS 握手,也會使用預先設定的公鑰等資訊驗證對應的 REALITY 伺服器。真實網站憑證不能取代使用者設定的公鑰。

概念實際用途常見誤解
目標網站為 REALITY 握手提供目標,並須符合所用實作的要求不是代理轉送後所有業務要求最終連線的網站
serverName / SNI在握手中指定伺服器名稱,必須符合伺服器設定不是連線位址;不能任意填入常見網域名稱
公鑰 / pbk對應伺服器私鑰,用於 REALITY 驗證程序不是網站憑證內容,也不是 VLESS 使用者 ID
shortId / sid參與 REALITY 用戶端識別,必須符合伺服器允許的值不是 VLESS 使用者 ID 的縮寫

未通過驗證的連線可能依照 REALITY 設定與實作轉往目標網站;這不代表所有探測都會收到完全相同的回應。目標網站是否連得上、TLS 行為是否相容,以及入口位址與網路路徑的特徵,都會影響結果。若目標選錯,通常無法只靠修改用戶端指紋解決。

XTLS Vision:何時能減少一層加密

Vision 對應常見的 flow 值 xtls-rprx-vision。它不只是設定標籤,也包含辨識連線初期資料、填充資料及後續轉送的處理方式。兩端都必須支援並正確設定;只修改用戶端欄位可能會直接導致連線失敗。

對於能辨識且符合條件的內層 TLS 1.3 流量,Vision 可在握手階段之後切換資料處理路徑,讓已受內層 TLS 保護的應用程式資料不再重複經過外層 TLS 記錄加密。目標網站的 TLS 仍然存在,瀏覽器也仍會驗證憑證;減少的是代理層對這部分密文的重複處理。

  1. 建立外層連線:用戶端先與代理伺服器完成安全連線及驗證,並須核對 REALITY 參數。
  2. 傳送代理要求:VLESS 帶上使用者身分與目標資訊,Vision 處理初期資料並判別內層協定特徵。
  3. 確認是否符合條件:只有能辨識且符合要求的 TLS 流量,才可能採用減少外層加密的路徑。
  4. 轉送後續資料:內層 TLS 密文會繼續傳送;不符合條件的流量不應被理解為「直接以明文傳送」。

一般 HTTP、無法辨識的流量、UDP,以及 QUIC 使用的 UDP 路徑,都不能直接套用「TLS 1.3 密文直通」的說法。TLS 1.2 流量也不能簡單視為具有相同的最佳化效果。是否能採用高效路徑,還取決於實際核心實作、傳輸組合與作業系統。

確認方式:先檢查核心與 flow,再評估速度

在用戶端節點編輯畫面確認 VLESS、REALITY 與 xtls-rprx-vision,再查看執行記錄,確認實際啟動的是支援這種組合的核心。只看節點顯示名稱,無法判斷 Vision 是否生效。

協定數值:TLS 版本、443 連接埠與效能限制

以下數值是協定與常見部署參數,並非本文的速度測試結果。這些數值有助於分辨「連線入口為何」與「資料如何處理」,不能據此推斷特定訂閱節點的實際速度。

TLS 1.3
REALITY 握手的基本條件;Vision 辨識內層流量的重要條件
443
HTTPS 常用連接埠;並非 REALITY 強制使用的入口連接埠
TLS 1.2
仍可能用於業務連線;不能假設同樣能減少外層加密

大型檔案傳輸若讓用戶端或伺服器 CPU 滿載,減少重複加密可能降低 CPU 使用率並提升可用吞吐量。有些環境也能採用更有效率的資料搬移方式。不過,Mac 桌面用戶端與伺服器的系統能力不同,不能將某個平台的零拷貝表現直接套用到所有裝置。

延遲改善也有條件。負載較高時,減少處理開銷可能縮短排隊時間;閒置連線上的單次小型要求,延遲通常仍由網路往返時間主導。Vision 不是壓縮演算法,也不會縮短代理伺服器與目標網站之間的實際距離。

v2rayN 與 v2rayNG:匯入訂閱後核對欄位

使用桌面版 v2rayN 時,先匯入訂閱並更新群組,再開啟對應節點的編輯視窗核對欄位。Android 版 v2rayNG 使用 Xray 核心,可檢查相同概念的設定。v2flyNG 使用 v2fly 核心,不能因為它也能識別部分 VLESS 連結,就推定支援 Xray 的 REALITY 與 Vision 組合。

不同版本的編輯介面、翻譯與底層欄位名稱可能不同,因此以下依參數用途列出檢查項目,不將特定版本的選單視為固定標準。分享連結常見的 pbk 對應 REALITY 公鑰資訊;介面上也可能使用不同標籤,請以目前核心的要求為準。

檢查項目預期內容錯誤時的處理方式
協定與傳輸VLESS;較新介面也可能將傳統 TCP 設定標示為 RAW還原為訂閱提供的原始值,不要任意改成其他傳輸方式
安全傳輸security=reality確認是否誤匯入為一般 TLS
流控flow=xtls-rprx-vision對照伺服器設定,不要根據節點名稱自行填入
位址與連接埠服務提供者指定的入口位址與連接埠入口可使用 443 或其他連接埠
使用者 ID、SNI、公鑰、shortId逐項與伺服器設定相符重新更新訂閱;手動輸入時檢查空格與是否漏字
用戶端指紋使用目前核心支援且符合節點要求的指紋不要直接將完整的瀏覽器版本字串填入指紋選項

分享連結中也常見 encryption=none。這裡描述的是 VLESS 協定層,不代表整條連線都沒有加密;REALITY 負責外層安全傳輸,HTTPS 業務資料也有內層 TLS。不要為了讓欄位看起來「更安全」,擅自改成協定不支援的值。

握手失敗、連線成功卻無法瀏覽:依現象排查

排查時先區分三個階段:入口 TCP 是否可連線、REALITY 驗證是否成功,以及應用程式流量是否進入代理。每次只修改一項,並記錄相應的執行記錄。連續更換 SNI、連接埠、flow 與指紋,會讓故障原因更難判斷。

匯入成功,為什麼一連線就顯示握手失敗?

先啟用系統自動校時,再核對入口位址、SNI、公鑰與 shortId。REALITY 的時間檢查可能會因系統時間明顯錯誤而導致驗證失敗。若入口可連線且所有欄位都相符,請服務端檢查目標網站的連線狀態與握手要求,不要先關閉憑證驗證。

執行記錄顯示不支援 flow,可以刪除這個欄位嗎?

先確認實際執行的是支援 Vision 的 Xray 核心,並檢查啟動記錄是否有設定解析錯誤。用戶端與伺服器的設定必須相符;移除 xtls-rprx-vision 並非通用解法。更新用戶端後,應重新啟動核心,再使用原訂閱設定測試。

節點測試通過,Mac 瀏覽器還是無法開啟網頁?

確認 v2rayN 是否已設定系統代理,再前往 macOS「系統設定」→「網路」→目前的網路服務→「詳細資訊」→「代理」,核對實際位址與連接埠。系統代理只會影響遵循該設定的應用程式;命令列工具可能需要另外設定。連接埠請以用戶端目前的設定為準。

啟用 TUN 還是很慢,改用 Vision 有幫助嗎?

先在相同節點上關閉 TUN,只保留系統代理進行比較,以排除虛擬網卡路由、DNS 與其他網路工具的衝突。TUN 決定流量如何進入用戶端;Vision 則決定部分對外傳輸資料的處理方式。也應檢查目標流量是否被路由規則指定為直連。

如果執行記錄顯示 TCP 連線逾時,應先檢查網路路徑、入口監聽或防火牆問題;如果驗證完成後只有特定網站異常,再檢查該網站的解析結果、出口連線狀況與分流規則。不要把所有連線錯誤都歸咎於 REALITY,也不要反覆切換全域模式來掩蓋欄位錯誤。

操作順序:設定相符後再比較效能

先讓單一節點、單一連線方式與一個 HTTPS 目標穩定運作,再分別測試系統代理與 TUN。只有連線路徑明確,CPU 使用率與延遲的變化才有比較意義。

下載v2rayN依平台選擇用戶端