· 故障排除 · 約 10 分鐘

v2rayN 核心啟動失敗排解:從日誌面板找出 config.json 設定錯誤

查看日誌中的連接埠占用、JSON 解析失敗及未知協定欄位等錯誤,依關鍵字逐項修正設定,讓核心重新啟動。

本文重點

先確認核心是否真的啟動失敗,再從同一次啟動的日誌找出最根本的原因。本文適合能開啟 v2rayN 主視窗,但啟用節點後核心便退出的使用者,將依序檢查本機連接埠、JSON 語法、協定與核心是否相容,以及檔案存取問題,並說明哪些設定應回到介面修改,避免反覆編輯每次都會重新產生的 config.json。

先分辨核心退出與連線失敗

v2rayN 是管理介面,Xray、V2Fly 等核心則負責讀取設定、監聽本機連接埠及建立對外連線。主視窗能開啟,不代表核心已在執行;網頁無法開啟,也不表示 config.json 有誤。排查時先確認日誌是否顯示載入設定失敗、監聽失敗或處理程序退出,再決定後續方向。

若日誌顯示本機入站已開始監聽,之後才出現遠端連線逾時、TLS 交握失敗或連線遭重設,通常應改查節點參數與網路連線。此時反覆更改本機連接埠,無法解決遠端故障。系統代理只是將應用程式的請求轉交給本機監聽連接埠,也無法讓已退出的核心重新運作。

擷取同一次啟動的完整錯誤鏈

日誌常會把外層錯誤與內層原因寫在同一行:前半段表示「載入設定失敗」,後半段才指出出問題的欄位或連接埠。只複製最後一則「處理程序退出」,通常無法找出原因。先保存目前設定,再只觸發一次啟動,避免多個測試工作與背景更新混在一起。

  1. 記錄版本

    開啟「說明」→「關於」,記下 v2rayN 版本;同時從啟動日誌記下實際使用的核心名稱與版本。用戶端版本和核心版本要分別記錄,不能以用戶端版本代替核心版本。

  2. 簡化操作

    回到主視窗底部的日誌區,記下目前時間,暫時不要執行批次測速或更新訂閱。選取一個節點,透過伺服器清單的右鍵選單選擇「設為作用中伺服器」,觸發載入設定。

  3. 複製錯誤鏈

    保留這次啟動的核心版本行、設定檔路徑、第一個錯誤及後續原因。若介面只顯示退出提示,請查看本次執行對應的日誌檔,不要拼接不同時間的記錄。

  4. 標記關鍵字

    優先標記 bind、invalid character、unknown config id、Access is denied。沿著錯誤鏈繼續往下看,通常會找到更明確的連接埠、欄位或檔案路徑。

不同版本的 v2rayN,選單配置和日誌開關位置可能不同;以上以常見的中文介面為參考。欄位名稱若有變動,請以目前介面和啟動日誌為準。對外提供日誌前,請隱藏訂閱網址、UUID、密碼及個人資料夾名稱,但保留協定名稱、錯誤關鍵字和本機連接埠。

處理 bind 錯誤與本機連接埠占用

本機連接埠屬於入站設定。兩個程式無法同時在互相衝突的監聽位址上占用同一個 TCP 連接埠。重複執行 v2rayN、核心處理程序未完全退出,或其他程式使用相同連接埠,都可能導致新核心啟動失敗。以下連接埠僅供排查示範,不代表所有版本的預設值。

10808
本文範例中的本機代理連接埠
10809
部分舊設定使用的獨立 HTTP 連接埠
127.0.0.1
僅供本機存取的迴圈位址

錯誤:bind: Only one usage of each socket address

原因與解法:Windows 提示監聽位址與連接埠發生衝突;先找出占用的處理程序並確認其身分,再關閉重複執行的程式,或變更 v2rayN 的本機監聽連接埠。

錯誤:bind: An attempt was made to access a socket in a way forbidden by its access permissions

原因與解法:連接埠可能受到系統保留範圍或安全性政策限制,不一定是被一般處理程序占用;請確認保留連接埠與安全軟體的記錄,再改用未受限制的本機連接埠。

在 Windows 終端機執行以下兩個命令。第一個命令找出包含 10808 的連線記錄,重點查看本機位址欄與 LISTENING 狀態;第二個命令查詢指定的 PID。這裡的 4321 僅為示範用 PID,實際執行時請換成第一個命令查到的數字。

netstat -ano | findstr ":10808"
tasklist /FI "PID eq 4321"

確認占用者是重複啟動的 v2rayN 或未完全退出的核心後,先從系統匣正常關閉相關程式,再重新開啟。不要直接結束身分不明的系統處理程序。若要變更連接埠,請前往「設定」→「參數設定」,找出本機監聽連接埠相關項目,例如將範例中的 10808 改為 10818;儲存並重新啟動核心後,再重新設定系統代理,也要更新手動填入連接埠的應用程式設定。

結論:先修正監聽,再檢查節點

明確發生本機繫結失敗時,請先讓目標連接埠恢復監聽。更換訂閱群組或切換遠端節點,無法釋放被其他處理程序占用的本機連接埠。

找出 config.json 的語法與型別錯誤

config.json 通常是 v2rayN 根據節點、路由和參數設定產生的執行設定,不是訂閱網址本身。請以啟動日誌指出的檔案路徑為準,不要只憑檔名搜尋到舊副本就開始修改。一般節點設定應優先回到介面修正;直接修改產生的檔案,可能在下次切換節點時遭到覆寫。

錯誤:invalid character '}' looking for beginning of object key string

原因與解法:物件最後一個項目後常會多出逗號,解析器原本正在等待下一個欄位名稱;請檢查錯誤位置之前的逗號、引號與括號,並依實際 JSON 結構修正。

錯誤:unexpected EOF

原因與解法:檔案可能遭截斷,或字串、物件、陣列尚未結束;先檢查檔案末尾與儲存過程,再從已備份的完整設定還原。

錯誤:cannot unmarshal string into Go struct field

原因與解法:某個欄位需要數字、布林值或物件,實際收到的卻是字串;依錯誤訊息找到欄位路徑,並按照目前核心的設定格式修正型別。

以下片段僅用來說明 JSON 語法差異,不是可獨立執行的核心設定。第一行的最後一個屬性後多了逗號;第二行移除逗號後才是有效的 JSON。連接埠是否允許使用字串則屬於設定結構問題,不能只看「語法通過」就下結論。

錯誤片段:
{"listen": "127.0.0.1", "port": 10808,}

正確片段:
{"listen": "127.0.0.1", "port": 10808}

確認協定欄位與實際執行的核心

JSON 能順利解析,不代表目前的核心認得其中的協定和傳輸欄位。v2rayN 是設定入口,實際支援範圍取決於這次啟動的核心及其版本。尤其是手動複製的出站、路由或傳輸設定片段,可能來自不同核心,欄位名稱看似相近,卻不能直接互換。

錯誤:unknown config id:

原因與解法:在 Xray 或 V2Fly 建立設定時,協定或元件識別碼可能尚未註冊、拼寫錯誤,或不受目前版本支援;請查看冒號後的識別碼,確認其所屬欄位及核心支援情況。

錯誤:failed to parse outbound detour config

原因與解法:出站設定建立失敗,這只是外層提示;請繼續查看後續原因,檢查協定名稱、伺服器參數、傳輸設定,以及 TLS 或 REALITY 相關欄位。

例如,REALITY 是安全層設定,不能把 reality 當成出站協定填入;XTLS Vision 對應的是特定設定組合,也不是可以任意填入傳輸類型的名稱。Xray 與 V2Fly 支援的設定範圍不可混為一談。Android 版 v2rayNG 使用 Xray,v2flyNG 使用 V2Fly,但這不代表 Android 用戶端匯出的任意設定片段都能直接套用於桌面核心。

  1. 從啟動日誌確認實際執行的是哪個核心,不要只看節點名稱或資料夾名稱。
  2. 前往「設定」→「參數設定」,確認目前版本提供的核心選擇項目;若有依協定選擇核心的設定,請檢查該節點協定對應的選項。
  3. 回到節點編輯視窗,確認協定、傳輸方式、TLS、SNI 和 flow。請依伺服器提供的資訊填寫,不要為了消除錯誤而隨意填入陌生欄位。
  4. 若設定需要較新的核心功能,請先備份,再更新相符的用戶端與核心元件;保留更新前後的版本記錄,避免同時修改協定和路由。

排除檔案存取與核心程式問題

若日誌尚未進入協定解析階段,就已提示無法開啟設定、找不到檔案或無法建立處理程序,請先檢查檔案與執行環境。把這類問題誤判為節點失效,容易讓人白費工夫刪除訂閱並重建群組。

錯誤:The system cannot find the file specified.

原因與解法:設定檔、核心程式或其他參照檔案不存在;依錯誤訊息核對完整路徑,檢查檔案是否未解壓縮、遭移動或被安全軟體隔離。

錯誤:Access is denied.

原因與解法:讀取設定、寫入執行檔案或執行程式的動作遭拒;查看錯誤涉及的路徑與系統安全性記錄,修正資料夾權限。不要把長期以系統管理員身分執行當成通用解法。

重新測試啟動、監聽與實際請求

每次只修改一個原因明確的項目,再重複相同的驗證流程。如此才能判斷問題是因修正連接埠、修復設定還是更新核心而解決,而不是把多項變更混在一起,留下無法重現的結果。

  1. 重新啟動核心

    儲存設定並重新載入目前節點,查看新時間段的啟動日誌。確認原先的第一個錯誤已消失,不要只因舊日誌被捲動到畫面之外就以為問題已解決。

  2. 確認監聽狀態

    使用 netstat -ano 檢查設定中的實際連接埠,確認 PID 屬於這次啟動的核心。若已改為 10818,查詢時也要使用 10818。

  3. 驗證請求

    重新設定系統代理,對目前節點執行真實連線延遲測試,再用瀏覽器開啟目標網站。查看存取日誌,確認請求確實進入代理,並視需要確認對外 IP。

修改 config.json 後,切換節點怎麼又變回原樣?

一般節點的執行設定通常由 v2rayN 重新產生。先查看日誌中的檔案路徑,再回到節點編輯視窗或「設定」→「參數設定」修改來源。若確實需要使用自訂設定,請維護獨立的來源檔案並保留備份。

更新訂閱能解決本機連接埠占用嗎?

不能。更新訂閱主要是更新訂閱群組中的節點資訊,不會釋放其他處理程序占用的監聽連接埠。請先查出占用連接埠的 PID;只有節點參數已過期或缺漏時,才需要更新訂閱。

啟用 TUN 後出現錯誤,需要直接重新安裝嗎?

先關閉 TUN,保留原本節點進行對照測試。若一般本機代理可以啟動,請優先檢查 TUN 的權限、虛擬網卡與路由設定;若兩種模式都出現相同的 JSON 錯誤,請先修正共用設定。

核心不再退出,但真實連線延遲測試仍失敗,該怎麼辦?

將排查方向轉至連線階段。記下這次測試的時間,查看遠端連線、DNS 和 TLS 錯誤,再檢查節點位址、連接埠、SNI 與路由。若要確認入口設定,可參考系統代理設定和真實連線延遲測試說明。

需要進一步求助時,請提供用戶端版本、核心版本、系統架構、已隱去敏感資訊的完整錯誤鏈,以及最近一次單項修改。這樣才能將「啟動失敗」縮小至可驗證的欄位、連接埠或檔案,而不是從頭重新安裝,導致故障線索一併遺失。

下載v2rayN