· 進階知識 · 約 10 分鐘

Xray 核心與 V2Fly 核心差異:協定支援與設定格式比較

從 Project V 分支歷程談起,比較 Xray 與 V2Fly 對 VLESS、XTLS、REALITY 的支援及設定欄位差異,協助判斷該選 v2rayNG 還是 v2flyNG。

本文速覽

選擇核心時,先看伺服器端的要求,不要先比較名稱。需要 REALITY 或 XTLS Vision 時,應選擇支援相應功能的 Xray 版本;使用一般 VMess、WebSocket 與 TLS 時,兩條技術路線都有相應實作。本文適合已取得訂閱、準備挑選用戶端或遷移設定的讀者,重點說明協定層次、欄位差異,以及如何確認匯入後是否遺失重要參數。

先分清用戶端、核心與 Project V

核心負責建立連線、處理協定、查詢 DNS 和執行路由;用戶端則負責將這些功能整合成操作介面。v2rayN、v2rayNG、v2flyNG 是用戶端名稱;Xray-core 與 V2Fly 維護的 v2ray-core 則是核心。用戶端版本與核心版本是兩項不同資訊,更新用戶端程式不代表已切換至另一種核心。

Project V 是以 V2Ray 為核心發展出的工具與協定生態系。V2Fly 社群延續 v2ray-core 的開發;Xray-core 則於 2020 年從相關程式碼分支發展,之後逐漸形成不同的功能演進路線。兩者有共同的發展歷程,因此設定 JSON 外觀相似,但不能因此認為所有設定欄位都能互換。

訂閱設定 用戶端解析 核心載入 路由比對 連線至伺服器

這條流程也能解釋「訂閱可以匯入,卻無法連線」的原因:匯入成功只代表用戶端讀取了部分資料,不能證明核心支援所有功能,更不能證明伺服器位址、驗證資訊與傳輸參數彼此相符。

協定支援比較:VLESS 不等於 REALITY

一條連線通常包含代理協定、傳輸方式與安全層。VLESS、VMess 屬於代理協定;TCP、WebSocket 屬於傳輸方式;TLS、REALITY 則涉及連線安全機制。XTLS Vision 對應特定的流控與資料處理方案,並非單純把「TLS」開關換個名稱。

功能Xray 路線V2Fly 路線選擇時的檢查項目
VMess支援,常見組合包括 TCP、WebSocket 與 TLS。支援,是常見的互通情境。驗證資訊、傳輸參數與伺服器端設定必須一致。
VLESS 基礎協定支援,並延伸出相應的流控與安全組合。部分版本與設定架構提供支援,請確認實際建置版本與用戶端的設定選項。不能只看 VLESS 這個名稱,就判定整個節點可用。
XTLS Vision支援相應版本中的 xtls-rprx-vision 流控。不能直接套用 Xray Vision 設定。用戶端與伺服器端都必須支援該流控及其組合。
REALITY相應版本支援 REALITY 設定。不能直接使用 Xray 的 REALITY 設定。確認伺服器端公鑰資訊、SNI、short ID 與指紋設定。
WebSocket + TLS有相應的實作。有相應的實作。檢查路徑、Host、憑證名稱與設定格式。

結論:先確認專屬功能需求,再選用戶端

訂閱明確標示 REALITY 或 xtls-rprx-vision 時,Android 端優先選擇支援這些參數的 v2rayNG。若只有一般 VMess + WebSocket + TLS,則比較現有設定的相容性即可,不必只因名稱不同而遷移。

「V2Fly 完全不支援 VLESS」和「只要支援 VLESS 就能連 REALITY」都過於武斷。前者忽略了版本與實作差異,後者則混淆協定與安全層。舊資料中的 XTLS 舊版流控也不能直接當成 Vision 使用,尤其不要把舊參數照抄到新設定中。

設定檢查卡:兩種常見組合各要確認哪些項目

以下兩張卡是欄位檢查表,不是可直接連線的節點,也不包含伺服器端憑證。範例路徑 /proxy 僅用來說明欄位位置;實際路徑必須依伺服器端設定填寫。REALITY 卡採用常見的 VLESS + TCP + Vision 組合,不代表所有 VLESS 都需要啟用 Vision。

VLESS + REALITY

代理協定
VLESS
傳輸方式
TCP
安全層
REALITY
Flow
xtls-rprx-vision
驗證與握手
使用者 ID、伺服器端公鑰資訊、SNI、short ID

請依照相應 Xray 版本的欄位定義檢查,並逐一確認參數與伺服器端設定相符。

VMess + WebSocket + TLS

代理協定
VMess
傳輸方式
WebSocket
安全層
TLS
路徑範例
/proxy
驗證與握手
使用者 ID、Host、SNI、有效憑證

兩條核心路線都有相應實作,但路徑與網域欄位不能任意省略或互換。

Host 和 SNI 經常相同,但用途不同。WebSocket 的 Host 是 HTTP 請求中的目標主機資訊;SNI 則是在 TLS 握手時提供的伺服器名稱。連線位址又是另一個欄位,決定先連至哪個網路位址。若伺服器端要求這三者不同,就不能為了「看起來整齊」而全部改成相同值。

JSON 寫法:外觀相似不代表整份設定都通用

Xray 和 V2Fly 的常見設定中都能看到 inbounds、outbounds、routing 等名稱。V2Fly 也有不同版本與結構的設定格式;用戶端可能會先讀取分享連結,再產生核心使用的 JSON。因此,分享連結相同、介面欄位相似,以及最終核心設定相容,是三件不同的事。

以下是傳統 JSON 格式中的 streamSettings 欄位片段,僅用來說明 WebSocket 與 TLS 的層次。example.com 是保留的範例網域,不是可用的伺服器位址。片段缺少完整的入站、出站與驗證設定,無法單獨執行。

{
  "streamSettings": {
    "network": "ws",
    "security": "tls",
    "tlsSettings": {
      "serverName": "example.com"
    },
    "wsSettings": {
      "path": "/proxy",
      "headers": {
        "Host": "example.com"
      }
    }
  }
}

遷移時最穩妥的方式,是重新匯入服務提供者給的完整訂閱,再檢查產生的設定。只有在清楚了解來源版本、目標版本與設定格式時,才適合手動搬移整份 JSON;即使語法檢查通過,仍須確認欄位確實有被採用。

連接埠與路由:不要把本機入口當成遠端功能

核心負責路由,但連線必須先進入核心。系統代理只會影響遵循該設定的應用程式;TUN 則透過虛擬網路介面接管相關流量,通常需要額外權限。兩者都不代表「已選好代理出站」,進入核心的請求仍須依路由規則分流。

443
常見的遠端 TLS 連接埠,並非固定要求
10808
本機代理連接埠範例,請以實際設定為準
127.0.0.1
本機迴路位址,並非遠端伺服器

這些數字是位址與連接埠範例,不是效能測試結果,也不是所有用戶端通用的預設值。假設應用程式填入 127.0.0.1:10808,就應確認用戶端確實在本機的該連接埠監聽,而且入口協定符合應用程式的需求。不能只靠連接埠號碼判斷是 HTTP 代理還是 SOCKS 入口。

  1. 在 v2rayN 的「設定」→「參數設定」中確認本機監聽與相關選項;不同版本的分組名稱可能不同,請以目前介面為準。
  2. 確認系統代理或應用程式代理指向實際的監聽位址,避免仍指向舊用戶端的連接埠。
  3. 檢查目前的路由模式與符合的規則。geosite:cn 是網域分類參照,geoip:cn 是 IP 分類參照,兩者都需要相應的資料檔案。
  4. 切換至另一種核心後,請確認規則檔案位置、標籤名稱與出站標籤仍相互對應,不能只複製路由項目。

「直連網站正常、代理網站失敗」通常表示請求已符合某條規則,但代理出站仍有問題;「切換設定後所有應用程式都沒有變化」則應優先檢查入口與流量接管方式。請沿著連線流程逐步排查,不要直接歸因於核心速度。

Android 怎麼選:依訂閱需求進行小範圍測試

如果現有節點明確要求 Xray REALITY 或 Vision,選擇支援相應功能的 v2rayNG 會更直接。如果服務提供者提供的是已確認可搭配 V2Fly 使用的設定,也可以繼續使用 v2flyNG。若沒有這些專屬需求,應優先考慮設定能否完整匯入、記錄檔是否方便檢查,以及現有路由能否保留。

  1. 記錄環境:記下用戶端版本、核心版本、協定、傳輸方式、安全層,以及是否啟用 TUN。不要只記錄一個「最新版」。
  2. 保留舊設定:遷移前備份訂閱分組與自訂路由,不要在公開討論區張貼包含敏感資訊的訂閱網址。
  3. 只匯入一個測試項目:對照原始參數檢查連接埠、SNI、路徑、Flow 與 REALITY 相關欄位;缺少重要欄位時,請先停止測試。
  4. 避免同時接管流量:測試另一個用戶端前,先停止原用戶端的代理或虛擬網路連線,以減少入口衝突。
  5. 一次只修改一個項目:維持相同網路、相同伺服器與相同目標請求,再比較連線結果;不要同時更換 DNS、節點與路由模式。

結論:協定相符比單次延遲更重要

先確認目標組合能完整載入並穩定連線,再比較相同條件下的使用體驗。單次延遲數據不能證明某個核心普遍更快,更不能取代協定與設定相容性檢查。

常見問題:匯入成功、握手失敗與更新順序

訂閱匯入成功,為什麼仍顯示不支援的設定?

用戶端可能辨識了分享連結的協定標頭,卻沒有完整轉換擴充參數。請檢查目前使用的核心、實際產生的設定,以及記錄檔中的第一個設定載入錯誤。遇到未知欄位或不支援的傳輸方式時,先確認版本,不要只為了讓設定勉強啟動就刪除錯誤欄位。

REALITY 連線失敗,應該關閉憑證驗證嗎?

不應把關閉驗證當成通用修復方式。請先確認用戶端與伺服器端版本、使用者 ID、公鑰資訊、SNI、short ID、指紋與系統時間。REALITY 的驗證機制不同於一般 TLS,任意套用一般 TLS 的排錯選項,可能無法修復問題,還會掩蓋真正的參數錯誤。

應該先更新用戶端還是核心?

先閱讀目前用戶端支援的核心範圍與更新說明,再使用用戶端提供的更新方式。如果介面尚無法產生新欄位,單獨替換核心也未必能取得新功能。請保留可還原的設定,每次更新後先用原有節點測試,再嘗試新的協定組合。

VMess 改成 VLESS,只改協定名稱就可以嗎?

不可以。伺服器端必須提供相應的入站設定,驗證資訊與協定專屬欄位也必須相符。VLESS 本身不提供內容加密,實際部署通常還需要搭配合適的安全傳輸;不能只替換名稱就當成完成遷移,更不能憑空替現有訂閱加上 REALITY 參數。

下載v2rayN依平台選擇用戶端