Project V 生態解析:V2Fly、Xray 核心與 v2rayN、v2rayNG 的差異

整理 Project V 到 V2Fly、Xray 兩條核心發展路線的演變,並說明 v2rayN、v2rayNG 等圖形用戶端如何搭配核心運作。

本文重點

Project V 是一套專案體系,V2Fly 與 Xray 是不同的維護路線;v2rayN、v2rayNG、v2flyNG 則是用來管理設定的用戶端。本文適合正在挑選用戶端、確認節點需求或準備切換核心的使用者:先釐清介面、核心與協定的差別,再依伺服器參數確認相容性。

Project V、V2Fly 與 Xray:先釐清專案層級

先說結論:這些名稱不是同一款軟體換了不同介面。Project V 最初以 V2Ray 為核心,發展出一套網路代理工具;日常所說的「V2Ray」可能指整個專案,也可能特指負責處理連線的核心。安裝與排除問題時,務必分清這兩種用法。

約在 2020 年,V2Fly 社群逐步接手原專案的維護工作。V2Fly 延續 V2Ray 核心的開發;Xray 則在 2020 年以 V2Ray 程式碼為基礎分支,走上獨立發展路線。兩者源自同一脈絡,但發布時程、功能與設定支援不盡相同,不能把其中一方的文件當成另一方目前適用的規範。

Project V / V2Ray 專案體系
└─ V2Ray 程式碼基礎
   ├─ V2Fly:延續維護 V2Ray 核心
   └─ Xray:2020 年分支出的獨立核心路線

圖形操作層
├─ v2rayN:桌面用戶端,依版本與節點類型呼叫支援的核心
├─ v2rayNG:Android 用戶端,主要使用 Xray 核心
└─ v2flyNG:Android 用戶端,使用 V2Fly 的 V2Ray 核心

上圖呈現的是程式碼沿革與各自職責,不代表三款用戶端由同一個專案統一發布。用戶端版本與核心版本也採用不同的編號。更新介面程式,不一定代表目前執行的核心也已同步更新;請查看啟動記錄確認實際版本,不要只看視窗標題。

用戶端與核心:介面設定如何轉成網路連線

圖形用戶端負責訂閱、節點清單、參數編輯、系統代理與程序管理;核心則負責本機監聽、協定交握、DNS 與路由執行。按下「連線」後,用戶端通常會先產生執行設定,再啟動或呼叫核心。Android 用戶端還會透過系統 VPN 服務接收裝置流量;這與遠端節點使用哪種協定是兩回事。

名稱主要職責確認位置
v2rayN管理桌面節點、訂閱與系統代理,並調度核心;支援範圍依版本而異「設定」→「參數設定」及啟動記錄
v2rayNG管理 Android 節點,主要呼叫 Xray,並透過系統 VPN 服務接收流量側邊選單中的「設定」與「記錄」
v2flyNG管理 Android 節點,呼叫 V2Fly 核心應用程式設定與核心啟動記錄
V2Fly / Xray解析設定、建立連線、執行 DNS 與路由規則實際執行設定與核心記錄

v2rayN 支援多種核心,實際可選項目請以目前版本為準。需要切換時,先查看「設定」→「參數設定」中與 Core 或核心相關的項目;各版本的子頁名稱可能不同。不要只把一個執行檔改名成另一種核心的檔名,這不會轉換設定格式,也不會增加協定支援。

VMess、VLESS 與 REALITY:支援協定不代表整組參數都相容

VMess、VLESS 是代理協定名稱,不是用戶端名稱。WebSocket、gRPC 等屬於傳輸方式;TLS 與 REALITY 則涉及連線安全層的設定。節點能否使用,取決於協定、傳輸方式、安全層與具體版本的組合,不能只看「清單上有 VLESS」就下結論。

尤其要分清 VLESS 與 REALITY。VLESS 本身不負責加密,實際部署時需要搭配適當的安全傳輸。遇到 VLESS + REALITY 節點,應使用明確支援此組合的核心,並完整保留 serverName、publicKey、shortId,以及伺服器要求的 flow 等參數。不能把它當成一般 VLESS + TLS 匯入後,再多勾選一個選項就算完成。

Xray 核心

建議

若伺服器明確提供 VLESS + REALITY,或要求使用 Xray 特定功能,建議選擇相符版本的 Xray。此建議是以節點參數相容性為依據,不代表適用於所有網路環境或保證連線速度。

適用情況:伺服器明確要求 Xray,或節點需要 REALITY 設定

V2Fly 的 V2Ray 核心

適合已依照 V2Fly 文件部署並驗證的設定。若已有 VMess 等節點,請先確認傳輸方式與版本支援情況,不必只因核心名稱不同就更換伺服器。

適用情況:已部署 V2Fly,且需要讓設定與文件保持一致的環境

結論:先取得完整參數,再決定使用哪種核心

向服務提供者確認協定、傳輸方式、安全層與核心最低版本要求。確認這四項資訊後再匯入用戶端,比反覆切換核心、猜測缺少的欄位更容易找出問題。

訂閱、JSON 與路由:哪些設定可以轉移

訂閱是批次取得節點資訊的方式,不是另一種代理協定。訂閱內容可能是分享連結集合,也可能是某種完整設定。用戶端能否讀取,取決於內容格式與解析器。Base64 只是一種編碼方式,不會讓不同用戶端的設定自動相容。

  1. 在 v2rayN 的「訂閱分組」→「訂閱分組設定」中檢查訂閱網址;在 v2rayNG 中,從側邊選單開啟「訂閱分組設定」。不同版本的項目名稱可能略有差異。
  2. 更新後開啟任一節點的編輯視窗,逐項確認位址、連接埠、使用者識別碼、傳輸類型與 TLS 參數;不要只確認節點名稱有出現在清單中。
  3. 遇到「無法解析」時,先確認伺服器回傳的是訂閱內容,而不是登入頁面、到期提示或網頁錯誤訊息。訂閱網址含有存取憑證,不應公開貼到論壇。
  4. 從完整 JSON 移轉時,先確認目標核心與設定格式。成功解析訂閱,不代表自訂 DNS、路由與本機入站設定也會一併移轉。

在常見的 V2Ray / Xray JSON 設定中,inbounds 定義本機入口,outbounds 定義連線出口,routing.rules 則決定符合條件的流量要走哪個出口。以下僅展示路由片段,表示將來自 local-socks 的流量交給 proxy 出站;這不是可獨立啟動的完整設定。

{
  "routing": {
    "rules": [
      {
        "type": "field",
        "inboundTag": ["local-socks"],
        "outboundTag": "proxy"
      }
    ]
  }
}

配套設定必須包含 tag 為 local-socks 的入站,以及 tag 為 proxy 的出站。標籤拼字不同,路由就無法依預期運作。完整欄位與路由規則請參閱路由分流設定參考;若切換到設定格式不同的核心,請勿直接複製這段 JSON。

系統代理、TUN 與連接埠:如何確認連線路徑

桌面系統代理會讓遵循系統代理設定的應用程式,將流量送到本機監聽連接埠;TUN 則透過虛擬網路介面接收流量,需要用戶端與對應核心共同支援。兩者都不等同於 VMess 或 VLESS,也不是匯入訂閱後就一定會自動啟用的功能。

以下三個連接埠僅用來說明一條連線路徑,不代表所有版本的預設值。請先從實際設定確認本機監聽連接埠,再對照應用程式代理與遠端節點連接埠;不要把遠端的 443 填入瀏覽器的本機代理連接埠欄位。

10808
範例:本機 SOCKS 入站連接埠
10809
範例:獨立 HTTP 入站連接埠
443
範例:遠端 TLS 服務連接埠

用戶端選擇與切換:常見問題

選擇順序應是平台、節點參數、核心支援,最後才考慮介面偏好。桌面用戶端先確認目前版本的 v2rayN 支援哪些核心;Android 則依節點需求選擇 v2rayNG 或 v2flyNG。移轉前先備份訂閱分組與自訂規則,測試時一次只變更一項。

已安裝 v2rayN,還需要另外安裝 V2Ray 介面嗎?

通常不需要。先啟動已安裝的 v2rayN,選擇節點後查看記錄中的實際核心名稱與版本。若提示缺少核心檔案,請依目前版本的說明補齊相應元件;不要為了解決同一個檔案缺漏,重複安裝多個介面。

v2rayNG 和 v2flyNG 只是名稱不同嗎?

不是。兩者分別以 Xray 與 V2Fly 核心運作,支援功能也會隨版本改變。取得 REALITY 節點時,先確認 Xray 支援情況;若已有 V2Fly 設定,則先用對應核心驗證,不要只憑應用程式圖示或名稱相似度來選擇。

同一份訂閱在桌面可用,為什麼 Android 會逾時?

先比對兩台裝置上的節點編輯資訊,特別是傳輸類型、伺服器名稱與安全層參數;接著查看各自記錄中的核心版本。若參數一致,再檢查 Android 的 VPN 權限、個別應用程式設定、裝置時間與目前網路;不要直接認定訂閱已失效。

切換核心後,需要把所有規則重寫一次嗎?

先分清由用戶端管理的規則與手動撰寫的 JSON。前者可能由用戶端重新產生,仍須檢查實際執行結果;後者則必須依目標核心文件逐項驗證。先測試一個節點與一條明確的路由,再恢復複雜分流,可減少多個錯誤同時發生的情況。

最後請保留三項記錄:用戶端版本、記錄顯示的核心版本,以及已去識別化的節點參數。回報問題時附上這些資訊與相關錯誤行,比只寫「V2Ray 連不上」更有助於判斷問題出在介面、設定、協定還是網路層。

各平台用戶端下載