先看關係圖:專案、核心、用戶端分為三層
理解 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 與路由規則通常可以遷移。但遷移前應將設定拆成「通用結構」與「核心擴充」兩部分。通用結構包括標籤、連接埠、網域比對、位址範圍與基礎協定參數;核心擴充則可能涉及特定安全方式、流量控制選項或傳輸欄位。
- 先確認設定來源。查看設定由哪種用戶端或伺服器環境產生,記錄原本使用的核心家族。
- 再檢查協定欄位。辨識
protocol、network、security以及與握手相關的參數。 - 單獨檢查路由。網域規則、位址規則與出站標籤必須彼此對應,遷移時不能只複製節點部分。
- 透過記錄驗證。先確認設定可以啟動,再檢查網域解析、路由命中與遠端握手,避免把所有失敗都歸因於節點。
分享連結的遷移看起來比完整 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 節點。
訂閱網址能決定用戶端使用哪個核心嗎?
不能。訂閱網址提供節點清單,用戶端使用哪個核心則由應用程式本身及其設定決定。若訂閱包含目前核心無法處理的節點參數,即使該節點成功顯示在清單中,也可能無法建立連線。