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

核心一啟動就退出?先查看日誌中的錯誤訊息,逐一解析 JSON 語法錯誤、連接埠占用、欄位拼寫及協定參數不符等常見問題與修正方式。

本文重點

適用於 v2rayN 可以開啟,但 Xray 啟動後隨即退出的情況。先保存完整的啟動日誌,再區分設定檔解析、參數建構及連接埠監聽三個階段;透過設定檔測試與本機連接埠查詢找出問題。本文也會說明為何直接修改產生的 config.json 容易失效,以及如何將修正套用至節點或自訂設定。

一、先確認退出的是 Xray 核心

v2rayN 是用戶端介面,Xray 則是執行代理設定的核心。主視窗仍可操作,不代表核心正常運作;反之,瀏覽器無法開啟網頁,也不能直接判定核心啟動失敗。需要依照本文流程排查的情況包括:切換節點後出現啟動錯誤、核心程序很快結束,或日誌反覆停在載入設定的階段。

先開啟主視窗底部的日誌面板,再重新選取目前的伺服器,並保留這次操作前後的完整輸出。特別留意包含 Failed to start、failed to load config files 或 failed to listen 的錯誤鏈。單一錯誤可能以 > 串接多個原因,最右側通常最接近根本原因;不要只截取最後一句「程序已退出」。

  1. 記錄現況

    記下 v2rayN 版本、日誌顯示的 Xray 版本、目前節點協定及錯誤時間。分享日誌前,請遮蔽訂閱網址、UUID、密碼及伺服器位址等敏感資訊。

  2. 確認核心

    前往「設定」→「參數設定」,確認目前協定使用的核心設定,並以啟動日誌中的 Xray 版本資訊為準。不同版本的設定分組名稱可能有所調整,請勿將其他核心的錯誤套用至本文指令。

  3. 備份設定

    依照日誌中的設定檔路徑找到實際載入的檔案,並複製一份供排查使用。檔名可能是 config.json,也可能帶有其他前綴;請以啟動參數為準,不要只憑檔名猜測。

  4. 重現一次

    先停止連續切換節點,只重現一次啟動問題。將這次的日誌與備份設定檔對照,避免拿上一個節點的錯誤來分析目前的節點。

二、透過設定檔測試區分解析錯誤與執行錯誤

優先使用 v2rayN 實際呼叫的 Xray 程式測試備份設定檔。同一份設定在不同核心版本中的支援情況可能不同;使用另一個舊版程式測試,反而可能造成誤判。以下是 Windows PowerShell 指令:將終端機切換至該核心所在目錄,並將測試用的設定檔副本命名為 config.json 後再執行。

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

-test 用來讀取、建構並測試設定檔,不會啟動完整的代理服務。它能找出 JSON 解析錯誤、部分必要參數缺漏及無效的協定設定,但不能取代實際啟動,也無法驗證遠端帳號是否有效。請特別留意:測試通過不代表連接埠一定能成功監聽;連接埠衝突須在啟動階段另外檢查。

日誌位置或結果優先檢查項目下一步
讀取設定檔失敗啟動參數、檔案路徑、讀取權限確認測試的是日誌中實際載入的檔案
解析時出現 invalid character引號、逗號、括號及字串跳脫先修正語法,再重新測試設定檔
建構出站設定時失敗protocol、settings、使用者參數依照錯誤鏈檢查相關 outbound
測試通過,但啟動監聽失敗監聽位址、連接埠占用或系統限制檢查本機連接埠及綁定位址
核心已啟動,造訪時才出錯遠端連線狀態、TLS、DNS改查連線問題,不要再反覆修改 JSON 標點

三、JSON 語法錯誤:先修正標點,再檢查欄位

手動編輯自訂設定時,最常見的問題包括尾隨逗號、漏逗號、使用中文引號,以及反斜線未跳脫。某些載入方式允許註解,但為排除解析器差異,建議使用嚴格的 JSON 格式重現問題。請勿將網頁說明文字、程式碼區塊圍欄或行號一併貼入檔案。

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

原因與解法:常見原因是物件最後一個屬性後多了逗號。檢查右大括號前一行,刪除不該出現的尾隨逗號,再測試設定檔。

錯誤:invalid character '"' after object key:value pair

原因與解法:兩個屬性之間可能漏了逗號。檢查錯誤位置附近上一個項目的結尾,不要只修改被標示的引號。

錯誤:unexpected EOF

原因與解法:檔案可能遭到截斷,或物件、陣列、字串尚未結束。先比對備份檔案的結尾,再確認括號是否成對。

以上是常見的解析錯誤片段,外層訊息前綴會因版本和載入器而異。JSON 解析器通常會指出「無法繼續讀取」的位置,真正的錯誤可能出現在上一行。例如,以下完整的 JSON 片段沒有尾隨逗號,可用來對照引號及分隔符;這只是日誌設定片段,並非完整的代理設定。

{
  "log": {
    "loglevel": "warning"
  }
}

四、連接埠占用:查出是誰在監聽 10808

如果錯誤鏈已出現 listen tcp,應先檢查本機監聽狀態,而不是重新匯入訂閱。以下使用一組排查範例值:本機 SOCKS 連接埠為 10808、HTTP 連接埠為 10809,綁定位址為 127.0.0.1。這些數值並非所有版本的預設值;有些設定會使用混合式入站,只監聽一個連接埠,請以自己的產生設定為準。

10808
範例 SOCKS 監聽連接埠
10809
範例 HTTP 監聽連接埠
127.0.0.1
僅供本機存取的迴路位址

錯誤:bind: address already in use

原因與解法:Linux 常見此錯誤,表示目標位址和連接埠已有其他程序在監聽。先查詢相關程序,再關閉重複的用戶端或調整入站連接埠。

錯誤:Only one usage of each socket address (protocol/network address/port) is normally permitted.

原因與解法:這是 Windows 常見的連接埠綁定衝突訊息。確認是否還有另一個核心程序未關閉,並檢查設定中是否有兩個入站項目使用相同的位址和連接埠。

在 PowerShell 中查詢監聽中的程序。第一個指令只讀取 TCP 監聽狀態,第二個會顯示程序資訊;PID 請使用本機查詢結果,不要照抄他人的數字。

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

Get-NetTCPConnection -State Listen -LocalPort 10808 -ErrorAction SilentlyContinue |
  ForEach-Object { Get-Process -Id $_.OwningProcess }

如果確實同時執行了兩個用戶端,請先正常關閉多餘的執行個體,不要直接終止不明的系統程序。需要更換連接埠時,前往「設定」→「參數設定」,找到本機監聽連接埠項目,例如將 10808 改為未占用的 10818,儲存後重新載入核心。手動指定代理連接埠的應用程式也必須同步修改;由用戶端管理的系統代理則需重新設定。

結論:測試通過但監聽失敗,先檢查本機資源

只有實際錯誤涉及監聽時,才需要排查連接埠。如果查不到 TCP 監聽程序,卻仍出現拒絕存取,還應檢查監聽位址是否屬於本機,以及連接埠保留和安全性原則;不要把所有綁定錯誤都歸咎於節點失效。

五、欄位拼寫與協定參數:語法正確不代表設定有效

JSON 可以讀取,只代表文字結構大致正確。Xray 還會依照 protocol 建構入站和出站,並檢查協定所需欄位。例如將 vless 寫成 vles,雖然仍是合法字串,卻沒有對應的協定設定。其他未知欄位則可能遭到忽略,因此「沒有報錯」不代表欄位已生效。

錯誤:unknown config id: vles

原因與解法:協定識別字拼寫錯誤。請核對該出站的 protocol 是否與節點實際協定一致,不要試圖修改其他參數來避開這項錯誤。

錯誤:invalid UUID

原因與解法:可能是使用者 ID 無效,外層錯誤鏈通常會指出相關協定。請從原始節點重新複製 ID,檢查是否混入空格或中文符號,並確認沒有將密碼填入 UUID 欄位。

檢查項目具體檢查內容常見錯誤修法
VMess / VLESS協定類型、伺服器連接埠及使用者 ID 必須與原始節點一致只修改 protocol,卻保留另一種協定的整組 settings
VLESS 使用者參數確認 encryption;常見設定為 none,flow 則依節點提供的值填寫直接沿用 VMess 的使用者加密欄位
傳輸設定streamSettings 中的傳輸類型及其對應設定必須相符更改傳輸類型後,仍保留不相關的路徑或服務名稱
TLS / REALITYsecurity、serverName 及對應的安全層參數必須相符混用兩種安全層的欄位,或以關閉驗證取代修正
路由目標outboundTag 應對應預期的出站 tag以為任意字串都會自動建立代理出口

節點位址、連接埠、UUID 或 TLS 網域填錯,有時不會阻止核心啟動,而是在首次連線時才顯現。不要為了看到「啟動成功」就隨意改用另一種協定,否則只會把原本的設定錯誤轉變為後續連線錯誤。欄位層級和路由關係可參閱設定參考逐項檢查。

六、以最小設定隔離問題,再逐項還原

設定檔很長,或包含多個入站和路由群組時,可以在副本中使用最小設定確認讀取與建構流程。以下範例只有本機 SOCKS 入站及直連出站,不包含遠端節點,也不能用來驗證代理出口。請另存為 minimal.json,不要覆蓋原有的訂閱或節點設定。

{
  "log": {
    "loglevel": "warning"
  },
  "inbounds": [
    {
      "tag": "local-socks",
      "listen": "127.0.0.1",
      "port": 10818,
      "protocol": "socks",
      "settings": {
        "auth": "noauth",
        "udp": false
      }
    }
  ],
  "outbounds": [
    {
      "tag": "direct",
      "protocol": "freedom",
      "settings": {}
    }
  ]
}
.\xray.exe run -test -config ".\minimal.json"

如果這個檔案能通過測試,而原設定無法通過,請分區塊逐步還原:先加入實際代理出站,再加入傳輸和安全層,最後還原 DNS 與路由。每還原一個區塊就重新測試;首次出錯的變更就是優先檢查範圍。若要實際執行這份最小設定,請先確認 10818 未被占用;它的所有流量都會直連,不應用來判斷原節點是否可用。

七、設定錯誤排解常見問題

每次修好 config.json,切換節點後又出錯?

先確認它是否為 v2rayN 自動產生的執行設定。若是,請回到伺服器清單編輯對應節點,或修正自訂設定來源,再重新載入。只修改產生的檔案,無法保證下次仍保留變更。

設定檔測試通過,為什麼啟動仍然失敗?

請繼續查看啟動日誌中的監聽錯誤,並查詢實際的入站連接埠。測試不會驗證遠端連線狀態,也無法確保執行時連接埠可用;不要將測試通過視為網路連線已完全正常。

日誌只有退出提示,沒有具體錯誤,該怎麼辦?

保留用戶端顯示的啟動指令和設定檔路徑,使用同一個 Xray 程式在終端機執行設定檔測試。若仍沒有輸出,請檢查 log 中 error 檔案的路徑及讀取權限,確認錯誤是否寫入獨立日誌。

重新安裝用戶端能直接解決問題嗎?

先備份節點和訂閱設定,再判斷問題發生的階段。連接埠遭其他程序占用、訂閱參數錯誤或入站重複等問題,通常不會因重新安裝而消失。只有確認程式檔案異常或版本不相容後,才考慮更換相容版本。

排查完成的標準不是錯誤視窗消失,而是能說明根本原因並重複驗證:原設定為何失敗、哪項修改讓測試通過,以及重新啟動用戶端後是否仍正常。若要進行實際連線,可接著依照使用指南選擇節點並驗證代理;不要混淆設定建構完成、監聽成功和遠端連線正常這三種結果。

V2Ray 用戶端下載