V2Ray 核心啟動失敗排解:從日誌找出 config.json 錯誤

看懂核心啟動日誌中的錯誤訊息,逐一排查 JSON 語法錯誤、連接埠占用、不支援的協定欄位及 geo 檔案缺失等常見原因。

本文重點

適用於 v2rayN 顯示核心已退出、v2rayNG 或 v2flyNG 無法啟動服務,或手動執行核心時出現設定錯誤的情況。先確認實際載入的檔案與核心,再依日誌排查解析、欄位、資源及監聽階段。本文提供本機檢查指令、常見錯誤片段與修正後的驗證方式;連接埠及設定片段僅供排錯示範,並非節點連線參數。

1. 啟動失敗與連線失敗:先確認故障階段

用戶端視窗能開啟,不代表核心已在執行。v2rayN 是管理介面,實際處理入站、路由及出站的是它啟動的核心程序。啟動時通常會先讀取設定,再建立協定與路由物件,接著開啟本機監聽。任何一步失敗,後續的代理請求就沒有處理入口。

讀取設定解析欄位載入資源繫結連接埠處理連線

如果日誌在啟動後立即出現 Failed to start,請往前查看更具體的原因。若已記錄監聽成功,但只有存取目標時才發生逾時、驗證失敗或 TLS 交握失敗,通常屬於連線階段。此時反覆修改 JSON 逗號無法解決問題,也不應只憑介面上的「連線失敗」四字,就判定核心未啟動。

2. 取得完整日誌與實際載入的設定

不要只截取最後一行「程序已退出」。真正的原因常在同一串錯誤訊息的末尾,由 > 等分隔符連接;也可能出現在退出提示之前。請保留本次啟動從核心版本、啟動指令到退出原因的完整連續文字,避免將上次的連線錯誤與本次啟動錯誤混在一起。

  1. 保留現場

    複製日誌面板中的本次啟動記錄,並備份目前的自訂設定。對外提供日誌前,請刪除訂閱網址、使用者識別資訊、密碼、私密金鑰及伺服器位址等敏感內容;本機原始檔案則保留不動。

  2. 確認核心

    從啟動日誌記下可執行檔名稱、版本及設定路徑。v2rayNG 使用 Xray 核心,v2flyNG 使用 V2Fly 核心;v2rayN 則應以目前的啟動記錄為準,不要只憑用戶端名稱推斷。

  3. 檢查設定

    桌面版 v2rayN 可從「設定」→「參數設定」檢查本機監聽相關設定。不同版本的子頁名稱可能有所不同,請以實際介面為準。將介面上的連接埠與產生的設定中的 inbounds 對照。

  4. 單獨測試

    先停止用戶端代理服務,避免其他程序干擾。針對日誌所指的設定,執行相應核心的設定測試指令;不要拿其他資料夾中剛好同名的 config.json 來代替。

以下是目前常見的指令格式,請在核心所在的資料夾中執行。第一條適用於 Windows 上的 Xray;第二條適用於提供 test 子命令的 V2Fly。舊版指令參數可能不同,請先執行該二進位檔的 help 或 -h 確認。檔名含空格時必須加上引號。

.\xray.exe run -test -config ".\config.json"

./v2ray test -c ./config.json

3. JSON 語法錯誤:先定位字元,再檢查欄位

語法解析會在協定檢查之前進行。此時即使節點位址與連接埠正確,核心也無法讀取設定。請優先檢查錯誤字元附近的引號、逗號、大括號及中括號。錯誤位置是解析器停止的位置;實際缺少的逗號可能在上一行。

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

原因:物件結尾可能多了逗號,解析器仍在等待下一個鍵名。解法:檢查右大括號前一行,刪除結尾逗號後重新測試。

錯誤:unexpected EOF

原因:檔案提早結束,常見原因是複製不完整或缺少結尾括號。解法:檢查檔案末尾,並利用編輯器的括號配對功能找出未閉合的物件或陣列。

錯誤:invalid character 'h' looking for beginning of value

原因:讀取的內容可能以未加引號的文字開頭,例如誤將訂閱連結當成 JSON。解法:檢查第一行,確認內容是核心設定,而非訂閱網址、下載錯誤頁面或分享連結。

以下是嚴格 JSON 格式的入站設定片段,只示範字串、數值與括號結構,並非完整設定,也不能單獨取代原始檔案。JSON 必須使用英文雙引號;鍵名不能使用中文引號,字串中的 Windows 路徑反斜線則必須跳脫。

{
  "inbounds": [
    {
      "tag": "local-socks",
      "listen": "127.0.0.1",
      "port": 10808,
      "protocol": "socks",
      "settings": {
        "udp": true
      }
    }
  ]
}

4. 連接埠占用:確認是哪個程序在使用,不要反覆重啟

設定測試通過,不代表執行時一定能繫結連接埠。舊核心程序尚未結束、同時啟動兩個用戶端,或 HTTP 與 SOCKS 入站使用相同的監聽位址和 TCP 連接埠,都可能造成衝突。Windows 的錯誤訊息可能是 Only one usage of each socket address;其他系統常見 address already in use。

10808
本文 SOCKS 入站示範連接埠
10809
本文 HTTP 入站示範連接埠
127.0.0.1
僅供本機存取的監聽位址

這些數字僅供示範,不是所有版本的預設值。請先到「設定」→「參數設定」確認實際連接埠,再執行查詢。Windows PowerShell 可檢查以下兩個示範連接埠的監聽程序;若查詢沒有結果,只能表示查詢當下未發現對應的 TCP 監聽,不能據此排除權限或位址設定問題。

Get-NetTCPConnection -State Listen -LocalPort 10808,10809 |
  Select-Object LocalAddress,LocalPort,OwningProcess

# 將上一步查到的程序編號填入 -Id;4560 僅為範例
Get-Process -Id 4560

Linux 可用以下指令查看監聽位址、連接埠及程序;查看其他使用者的程序資訊可能需要額外權限。也請留意監聽於 0.0.0.0 或 :: 的程序,這類程序可能與本機位址上的新監聽發生衝突。

ss -ltnp 'sport = :10808 or sport = :10809'

5. 未知協定與欄位:依核心支援能力檢查

JSON 語法正確,只代表檔案能被解析,不代表欄位組合有效。Xray 與 V2Fly 雖然源自相同專案,但協定、傳輸及安全設定不能只看名稱就互換。特別是包含 REALITY 或 Xray 專用流量控制參數的設定,應使用明確支援該功能的核心與版本。

日誌或設定線索優先檢查項目修正方向
unknown config idprotocol 對應的實作是否存在確認拼字、大小寫及核心支援能力;不要只修改協定名稱。
unknown field欄位所在層級及解析器要求對照目前執行版本的欄位結構,確認該欄位不是用戶端設定。
streamSettings.security 設為 reality實際執行的程序是否為支援該功能的 Xray選擇相符的核心,並確認整套傳輸與安全參數。
路由引用 outboundTag名稱是否與出站的 tag 一致修正標籤;部分不一致的情況,可能要等到請求進行路由時才會顯現。

並非所有未知欄位都會顯示錯誤:某些解析流程會忽略不認得的鍵。因此,沒有出現「unknown field」提示,不能證明該設定已生效。訂閱群組、自動更新間隔等用戶端選項也不能任意加入核心 JSON,必須在用戶端對應的設定中管理。

6. geo 檔案缺失:檢查資源名稱、路徑與權限

路由中的 geoip: 與 geosite: 規則通常需要對應的地理資料資源。日誌出現 failed to load GeoIP 或 failed to load geosite 後,請繼續查看錯誤訊息:找不到檔案、讀取失敗,以及找不到分類標籤,是三種不同問題。

錯誤:no such file or directory

原因:從錯誤訊息中的 geo 檔案路徑來看,程序可能在實際資源資料夾中找不到資料檔。解法:檢查日誌所指的資料夾,透過用戶端提供的資源更新功能,或還原完整的程式資料夾。

錯誤:permission denied

原因:程序可能沒有資源檔案或上層資料夾的讀取權限。解法:檢查執行帳戶及資料夾權限;若錯誤指向日誌檔案,則應檢查日誌資料夾的寫入權限。

為了縮小問題範圍,可以先備份設定,再暫時從副本中移除涉及 geo 資料的路由規則,接著執行設定測試。若副本測試通過,只能表示問題範圍可能與資源或規則有關;恢復正式運作前仍須修正原規則,否則流量分流方式會改變。

7. 修正後重新測試:區分設定通過與代理可用

每次只修改一個變數,並記錄修改前後的錯誤行。設定測試成功後,再啟動核心確認監聽狀態;最後才驗證應用程式請求是否進入該入站,以及路由是否選到預期的出站。成功開啟一次網頁,不能反過來證明所有路由規則都正確。

設定測試已通過,為什麼用戶端仍無法啟動?

先確認兩者讀取的是同一個檔案,並使用同一個核心。接著檢查執行階段的連接埠繫結、日誌寫入及執行權限。測試指令通常無法證明連接埠可用,也不會驗證遠端伺服器是否連得上。

修改了 config.json,為什麼重新啟動後又還原了?

該檔案可能是用戶端暫時產生的。請回到節點編輯、路由設定或自訂設定來源中修改,再重新產生設定。啟動日誌記錄的實際檔案路徑,優先於手動找到的同名檔案。

需要一直以管理員身分執行嗎?

不應將以管理員身分執行當成所有啟動錯誤的固定解法。先確認權限錯誤指向檔案、連接埠還是網路裝置;一般本機高連接埠代理應優先修正資料夾及監聽設定,涉及 TUN 等系統功能時,再依用戶端提示授權。

核心已經在執行,網頁還是無法開啟怎麼辦?

先確認應用程式使用正確的代理類型與連接埠。若應用程式確實已連入入站,再檢查出站連線日誌、節點參數及系統時間。此時應改查連線故障,不要再把所有問題都歸因於 JSON 語法。

需要回報問題時,請附上用戶端名稱、實際核心版本、作業系統平台、已移除敏感資訊的完整啟動錯誤訊息,以及能重現問題的最小設定片段。基本操作請參閱快速入門;入站、出站及路由欄位可進一步查閱完整設定指南。

下載v2rayN