Project V 開源生態全景:V2Fly、Xray 與 v2rayN/v2rayNG 關係解析

從 Project V 的起源出發,整理 V2Fly 與 Xray 兩大核心家族的分化,以及 v2rayN、v2rayNG、v2flyNG 各自採用的核心與適用情境。

先看關係圖:專案、核心、用戶端分為三層

理解 V2Ray 生態時,最容易出現的誤區,是把 Project V、V2Ray、V2Fly、Xray 與用戶端名稱視為同一類事物。實際上,它們處於不同層級:Project V 是這套技術生態的歷史名稱與上層概念;V2Fly 與 Xray 是持續演進的兩個核心家族;v2rayN、v2rayNG、v2flyNG 則是面向使用者操作的用戶端。

層級 名稱 主要職責 使用者通常接觸的內容
生態與歷史 Project V 描述專案起源、協定體系與工具生態 文件中的 V2Ray、VMess、路由等概念
代理核心 V2Fly 處理連線、協定、傳輸、DNS 與路由規則 V2Ray 設定結構、VMess 等協定
代理核心 Xray 在相近的設定體系上擴充協定與傳輸能力 VLESS、REALITY、路由與連線記錄
桌面用戶端 v2rayN 管理節點、訂閱、系統代理與核心程序 Windows、macOS、Linux 桌面操作介面
Android 用戶端 v2rayNG 呼叫 Xray 核心並提供行動裝置設定介面 掃描 QR Code、貼上連結、訂閱、分應用程式代理
Android 用戶端 v2flyNG 呼叫 V2Fly 核心並管理連線設定 V2Fly 路線下的節點與訂閱管理

Project V 與 V2Ray:從工具名稱到設定語言

Project V 最初圍繞網路代理工具、協定與可組合設定展開。V2Ray 是其中最廣為人知的核心實作,因此很長一段時間裡,「V2Ray」同時被用來指稱程式、設定格式、節點類型,甚至整個工具生態。現在仍能看到「V2Ray 節點」、「V2Ray 設定」、「V2Ray 用戶端」等說法,但這些表達不一定都在指同一個軟體套件。

從工程角度來看,V2Ray 的關鍵價值不只是一種協定,而是一套可組合的資料流模型。連線從 inbounds 進入,經過路由判斷,再由 outbounds 發出;DNS、策略、記錄與傳輸層則分別提供輔助能力。VMess 是這套生態早期的重要協定,但 V2Ray 設定不等於 VMess,用戶端中出現「V2Ray 設定」也不代表只能匯入 vmess:// 連結。

{
  "inbounds": [
    {
      "tag": "local",
      "protocol": "socks",
      "port": 10808
    }
  ],
  "outbounds": [
    {
      "tag": "proxy",
      "protocol": "vmess",
      "settings": {}
    }
  ],
  "routing": {
    "rules": []
  }
}

上方結構展示了核心運作的基本界線:本機應用程式將流量交給入站,路由模組依據網域、位址或連接埠選擇出站,再由出站按照節點協定建立連線。圖形化用戶端會將節點表單、訂閱內容與使用者偏好轉換成類似的執行設定,接著啟動核心。使用者看到的是開關與清單,真正執行連線的是背景核心。

V2Fly 與 Xray:建立在共同基礎上的兩條核心路線

在專案演進過程中,V2Ray 的社群維護工作形成了 V2Fly 路線;Xray 則從相近的程式碼與設定基礎發展成另一條核心路線。兩者共用許多歷史概念,例如入站、出站、路由、DNS、VMess、VLESS 以及多種傳輸方式,因此基礎設定經常看起來相似。但「相似」不代表所有欄位、協定擴充與執行行為完全一致。

V2Fly 路線

V2Fly 延續 V2Ray 的模組化結構,適合依賴標準 V2Ray 設定模型、VMess 連線與一般路由功能的環境。它仍是獨立維護的代理核心,而不是圖形化用戶端。桌面或 Android 介面必須透過啟動核心、產生設定與讀取記錄,才能完成一次實際連線。

Xray 路線

Xray 持續在相近模型上擴充協定與傳輸能力。實際選型時,最明顯的分界通常是 REALITY:當節點明確包含 security=reality、公鑰、短識別碼、伺服器名稱等參數時,應使用支援相應能力的 Xray 核心。若將這類連結匯入不具備相應實作的核心,可能無法啟動、欄位遭忽略,或連線握手失敗。

兩條路線並不是簡單的「新版與舊版」關係。兩者各自維護版本、修正問題並調整功能。版本號也不能跨專案直接比較,例如某個 Xray 版本號較大,不代表它是某個 V2Fly 版本的直接升級套件。可靠的判斷依據是節點需要哪些協定特性、目前用戶端內建什麼核心,以及執行記錄是否顯示參數已正確載入。

用戶端與核心:介面層和執行層如何協作

v2rayN、v2rayNG 與 v2flyNG 都可稱為用戶端,但它們不等於代理協定本身。用戶端主要處理設定管理:接收分享連結、儲存訂閱網址、顯示節點清單、產生執行設定、切換系統代理、查看記錄,並在適當時機啟動或停止核心。

核心負責網路執行工作:監聽本機連接埠、解析目標位址、套用路由規則、建立遠端連線,以及處理傳輸與安全參數。區分這兩個層次後,許多常見現象就容易解釋:

  • 連結可以成功匯入,但節點無法連線:用戶端辨識了分享格式,核心在連線階段仍可能因協定參數、網路路徑或伺服器狀態而失敗。
  • 訂閱更新成功,但清單中的節點無法使用:訂閱只是設定清單,更新成功不代表清單內每個遠端入口都處於可連線狀態。
  • 切換用戶端後同一節點表現不同:兩端可能使用不同核心家族、不同核心版本,或不同的預設 DNS 與路由設定。
  • 核心記錄正常,但瀏覽器沒有經過代理:連線執行層已經啟動,但系統代理或應用程式代理入口未指向用戶端的監聽連接埠。

分享連結通常由用戶端解析。例如 vmess://vless:// 包含節點所需的協定、位址、連接埠與傳輸資訊;訂閱網址則會回傳可更新的節點清單。用戶端負責將這些外部格式轉換成內部設定,核心不會自動替使用者維護訂閱分組或介面中的備註名稱。

v2rayN、v2rayNG、v2flyNG:對應關係與使用情境

v2rayN:桌面端設定與系統代理控制

v2rayN 面向桌面環境,核心功能是統一管理伺服器清單、訂閱分組、路由模式、系統代理與核心程序。處理 VMess、VLESS 等常見節點時,它通常透過 Xray 路線提供連線能力。對於需要 REALITY 的節點,也應確認目前 v2rayN 版本及其實際呼叫的 Xray 核心版本。

桌面端的優勢在於狀態清楚可見:使用者可以檢查本機監聽連接埠、系統代理模式、即時記錄與路由結果。Windows 使用者通常直接使用桌面套件;macOS 與 Linux 使用者則應依下載頁提供的平台建置選擇對應檔案,並確認處理器架構相符。不同平台的壓縮檔與可執行檔不能混用。

v2rayNG:Android 上的 Xray 路線

v2rayNG 是 Android 用戶端,使用 Xray 核心處理連線,適合需要 VMess、VLESS 以及 REALITY 等 Xray 能力的節點。它提供 QR Code 掃描、剪貼簿匯入、訂閱分組、路由規則與分應用程式代理等行動裝置操作入口。收到明確標示 REALITY 的 VLESS 節點時,v2rayNG 通常是三款用戶端中較直接的 Android 選擇。

行動裝置出現「測試有延遲但應用程式無法存取」時,不應只是不斷重新測試節點。還要檢查目前設定是否已啟動、系統連線授權是否生效、分應用程式清單是否排除目標應用程式,以及路由規則是否將目標網域送往錯誤的出站。

v2flyNG:Android 上的 V2Fly 路線

v2flyNG 面向希望使用 V2Fly 核心的 Android 情境。它與 v2rayNG 的介面用途相近,但底層核心路線不同。若現有節點與設定圍繞 V2Fly 的標準能力建立,或需要重現 V2Fly 環境中的連線行為,v2flyNG 更方便維持核心一致。

選擇 v2flyNG 時,應避免因「連結已成功匯入」就推斷所有擴充功能都可用。尤其設定來自 Xray 環境時,更要逐項檢查協定、安全方式與傳輸欄位。遇到核心不支援的擴充功能,正確做法是改用相符的核心路線,而不是反覆修改位址、連接埠或本機代理開關。

依協定選擇核心:VMess、VLESS 與 REALITY

選擇用戶端最實用的方法,是先讀取節點參數,而不是先比較軟體名稱。協定、傳輸方式與安全層共同構成一條連線的能力需求。

節點特徵 建議判斷 適合的用戶端方向
vmess://,一般 TCP、WebSocket 等傳輸 兩條核心路線通常都能處理,接著核對傳輸參數 桌面使用 v2rayN;Android 依核心需求選擇
vless://,一般 TLS 或標準傳輸 檢查用戶端核心版本與連結欄位的支援情況 桌面優先確認 v2rayN 核心;Android 可依核心路線選擇
VLESS 且包含 REALITY 參數 需要支援 REALITY 的 Xray 核心 桌面使用設定正確的 v2rayN;Android 使用 v2rayNG
完整 V2Fly JSON 設定 優先維持產生端與執行端的核心體系一致 Android 可使用 v2flyNG;桌面需核對核心設定

VMess 是 Project V 生態中歷史悠久的協定,節點資訊通常包含使用者識別碼、位址、連接埠、傳輸類型與 TLS 設定。VLESS 採用更精簡的協定設計,但不會自動等同於 REALITY。只有連結或設定明確指定 REALITY 安全方式時,才需要依 REALITY 要求核對公鑰、短識別碼、指紋與伺服器名稱。

WebSocket、gRPC、TCP 等屬於傳輸層選擇,TLS 或 REALITY 則涉及連線安全性與握手方式。協定相同但傳輸參數不同,仍可能導致一條節點可用、另一條節點失敗。例如伺服器設定為 WebSocket,而用戶端誤選 TCP,即使位址與連接埠完全正確,也無法建立預期連線。

設定相容性與遷移:哪些內容可以重複使用

V2Fly 與 Xray 共用大量設定概念,因此簡單的入站、出站、DNS 與路由規則通常可以遷移。但遷移前應將設定拆成「通用結構」與「核心擴充」兩部分。通用結構包括標籤、連接埠、網域比對、位址範圍與基礎協定參數;核心擴充則可能涉及特定安全方式、流量控制選項或傳輸欄位。

  1. 先確認設定來源。查看設定由哪種用戶端或伺服器環境產生,記錄原本使用的核心家族。
  2. 再檢查協定欄位。辨識 protocolnetworksecurity 以及與握手相關的參數。
  3. 單獨檢查路由。網域規則、位址規則與出站標籤必須彼此對應,遷移時不能只複製節點部分。
  4. 透過記錄驗證。先確認設定可以啟動,再檢查網域解析、路由命中與遠端握手,避免把所有失敗都歸因於節點。

分享連結的遷移看起來比完整 JSON 簡單,但不同用戶端對備註、分組、訂閱識別碼與附加欄位的處理可能不同。複製單一連結通常只會帶走節點本身,不會帶走原用戶端的全域 DNS、繞過區域網路規則、系統代理設定或分應用程式清單。因此,「同一連結」不代表兩端擁有完全相同的執行環境。

實際選型:從節點需求到用戶端部署

如果只需要一套可執行的選擇流程,可以按照以下四個步驟處理。

第一步:確認裝置平台

桌面環境先看 v2rayN,再依 Android 的需求在 v2rayNG 與 v2flyNG 之間選擇。不要把桌面程式套件放到 Android,也不要將行動裝置安裝檔當成桌面核心使用。

第二步:讀取節點協定

查看分享連結開頭是 vmess:// 還是 vless://。如果來自訂閱,先在用戶端更新並查看具體節點參數。協定名稱只是第一層,還要繼續檢查傳輸方式與安全方式。

第三步:辨識核心限定能力

發現 REALITY 等 Xray 路線能力時,桌面使用設定正確的 v2rayN,Android 使用 v2rayNG。設定明確基於 V2Fly 且不依賴 Xray 擴充功能時,Android 可選擇 v2flyNG,以減少跨核心遷移變數。

第四步:讓版本與記錄保持可見

用戶端版本與核心版本是兩項不同資訊。用戶端介面可以正常開啟,不代表核心版本足以處理新節點參數。連線失敗時先開啟記錄,區分設定解析錯誤、DNS 錯誤、連線逾時、握手失敗與路由設定錯誤,再決定更新核心、調整規則或更換節點。

對於同時維護桌面與 Android 裝置的使用者,最好統一記錄訂閱來源、節點協定與核心要求,而不是只記錄用戶端名稱。這樣在裝置之間切換時,可以快速判斷某個節點應匯入 v2rayNG 還是 v2flyNG,也能避免把 Xray 專屬設定誤當成通用的 V2Ray 設定。

常見問題

V2Ray、V2Fly 與 Xray 是同一套軟體嗎?

不是。V2Ray 常用來描述歷史核心、設定體系或整個技術生態;V2Fly 與 Xray 是分別維護的核心路線。它們共用不少設定概念,但協定擴充、欄位支援與版本節奏並不完全一致。

v2rayN 本身就是 Xray 核心嗎?

不是。v2rayN 是桌面用戶端,負責節點、訂閱、系統代理與執行設定管理;Xray 則是負責實際網路連線的核心。排查問題時,需要分別確認用戶端設定與核心記錄。

v2rayNG 與 v2flyNG 的主要差異是什麼?

兩者都是 Android 用戶端,核心差異在底層路線:v2rayNG 使用 Xray 核心,v2flyNG 使用 V2Fly 核心。需要 REALITY 等 Xray 能力時選擇 v2rayNG;需要維持 V2Fly 環境一致時可選擇 v2flyNG。

為什麼同一個連結在不同用戶端的結果不同?

用戶端可能使用不同核心、不同版本,以及不同的預設 DNS 與路由規則。連結只描述節點連線參數,不會同步系統代理、分應用程式設定與所有本機規則。應對照核心記錄逐層檢查。

VMess 節點一定要使用 V2Fly 核心嗎?

不需要。V2Fly 與 Xray 都延續了 VMess 支援。實際選擇還要考慮傳輸參數、用戶端平台、核心版本與現有路由設定。使用桌面版 v2rayN 時,也能正常管理常見的 VMess 節點。

訂閱網址能決定用戶端使用哪個核心嗎?

不能。訂閱網址提供節點清單,用戶端使用哪個核心則由應用程式本身及其設定決定。若訂閱包含目前核心無法處理的節點參數,即使該節點成功顯示在清單中,也可能無法建立連線。

下載 v2rayN