2026-07-29 · 故障排查 · 約 8 分鐘

v2rayN 核心啟動失敗怎麼辦:從日誌逐行找出設定錯誤

核心一啟動就退出,多半是設定出了問題。本文教你開啟日誌視窗,依照錯誤關鍵字逐行排查端口占用、JSON 格式錯誤、協定參數缺漏等常見情況,並提供對應修復步驟。

本文速覽

本文適合遇到 v2rayN 啟動核心後立即停止、日誌持續刷錯,或本機代理端口沒有監聽的使用者。排查從保存首次錯誤開始,依序核對 Core 類型、產生的設定、監聽端口、節點欄位、DNS 與 TLS 參數,最後透過最小設定判斷問題出在用戶端、節點還是本機環境。

先確認失敗發生在哪個階段

v2rayN 是管理介面,真正負責建立入站、執行路由及連線至遠端伺服器的是 Xray 或 v2fly 核心。按下啟動後,用戶端會讀取節點與路由設定、產生執行設定,再呼叫所選核心。只要產生的設定無法解析、端口無法監聽或缺少必要欄位,核心就可能在一秒內退出。

「啟動失敗」和「啟動成功但無法連網」不能混在一起處理。前者通常看不到持續執行的 Core 程序,本機端口也沒有進入監聽狀態;後者則能看到類似「started」的啟動行,但造訪網站時出現連線逾時、網域名稱解析失敗或 TLS 交握錯誤。先釐清階段,就能避免反覆更換節點卻沒有找到真正的故障點。

讀取介面設定產生執行設定啟動所選核心監聽本機端口連線至遠端節點
  1. 開啟日誌

    在 v2rayN 主視窗進入「說明」→「檢視日誌」;若目前版本直接顯示「資訊」區域,切換至該區域並清除舊紀錄。

  2. 確認核心

    進入「設定」→「參數設定」→「Core 類型」,確認 VMess、VLESS 等節點實際分配給 Xray,不要讓已刪除或路徑失效的核心繼續被呼叫。

  3. 重新觸發

    先停止服務,等待 3 秒後再啟動一次。只保留這次啟動產生的日誌,不要把訂閱更新紀錄和舊連線錯誤混在一起判斷。

  4. 保存首次錯誤

    從底部往上找到最早出現的 error、failed、panic 或 fatal 行,連同前後各 5 行複製到文字檔中。

依時間順序讀懂核心日誌

核心日誌通常會依時間輸出。第一段是版本與啟動參數,第二段是設定讀取結果,第三段才是端口監聽與出站連線。排錯時應找出第一個導致流程中斷的錯誤,而不是只盯著最後一行「exited」或「stopped」。退出資訊只是結果,本身很少能說明根本原因。

2026/07/29 10:18:42 [Info] Xray 25.6.8 started
2026/07/29 10:18:42 [Info] loading config: config.json
2026/07/29 10:18:42 [Error] failed to listen TCP on 127.0.0.1:10809
2026/07/29 10:18:42 [Error] listen tcp 127.0.0.1:10809: bind: address already in use
2026/07/29 10:18:42 [Info] core exited with code 1

這段範例中真正有價值的是第四行。第一行表示 Xray 程序已被呼叫,第二行表示設定檔可以讀取,第三、四行將失敗定位到本機 10809 端口,最後一行只表示程序以非零狀態結束。因此此時不必修改伺服器位址、UUID 或傳輸方式,應先處理本機端口衝突。

日誌位置 重點欄位 可判斷的問題
啟動前 1—3 行 版本、可執行檔路徑、Core 類型 核心檔案遺失、架構不相容、Core 選擇錯誤
設定讀取階段 config、decode、unmarshal、line JSON 結構損壞、欄位類型錯誤、產生設定異常
入站監聽階段 listen、bind、address、port 端口占用、權限限制、監聽位址無法使用
出站連線階段 dial、timeout、DNS、TLS 伺服器無法連線、網域名稱解析失敗、交握參數錯誤

結論:優先處理第一個因果錯誤

看到連續十幾條紅色日誌時,先修復時間最早且帶有具體對象的那一條。例如 10809 端口綁定失敗會引發後續入站關閉與 Core 退出,後面的錯誤不需要逐條單獨處理。

如何處理端口占用與程序衝突

v2rayN 常見的本機端口包括 SOCKS 端口 10808 和 HTTP 端口 10809,但實際值應以「設定」→「參數設定」→「基本設定」中的本機監聽設定為準。如果另一個 v2rayN 執行個體、舊 Core 程序或其他網路程式已占用相同端口,新核心便無法建立入站監聽。

錯誤:listen tcp 127.0.0.1:10809: bind: address already in use

原因與解法:10809 已被其他程序監聽。退出重複執行的用戶端並結束殘留 Core;若仍需並行執行,將本機 HTTP 端口改為 11809 後重新啟動。

錯誤:failed to listen TCP on 127.0.0.1:10808

原因與解法:SOCKS 入站建立失敗。先檢查 10808 的占用程序,再確認監聽位址仍為 127.0.0.1,沒有誤填成本機不存在的位址。

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

原因與解法:端口受到系統保留範圍或安全性原則限制。將監聽端口調整至未占用的 12080—12089 範圍,重新啟動用戶端後再次查看監聽結果。

在 Windows 終端機中可以直接查詢端口對應的程序識別碼。下列命令只會讀取目前的監聽狀態,其中最後一欄是 PID。若命令沒有輸出,表示該端口目前沒有 TCP 程序監聽,應繼續檢查設定產生與權限問題。

netstat -ano | findstr :10808
netstat -ano | findstr :10809
tasklist | findstr 4320

JSON 格式錯誤與協定欄位缺漏

訂閱匯入的節點會被 v2rayN 轉換成 Core 可讀取的 JSON。手動編輯節點、匯入不完整的分享內容或修改自訂設定後,可能出現缺少逗號、括號未閉合、數字被寫成文字等問題。日誌通常會提供行號和欄號,應先定位語法位置,再檢查該位置前一個欄位。

{
  "address": "edge.example.net",
  "port": 443,
  "id": "00000000-1111-4222-8333-444444444444",
  "security": "auto",
  "network": "tcp"
}

上面是便於理解欄位類型的片段,不是可直接取代整份執行設定的檔案。端口應為數字,位址和 UUID 應為字串。若日誌指向某一行開頭,真正缺少的逗號往往位於上一行末尾。不要只刪除錯誤欄位,否則語法通過後仍可能因缺少協定必要項目而失敗。

錯誤:failed to decode config: invalid character after object key

原因與解法:JSON 鍵值之間的冒號、逗號或引號不完整。復原最近一次自訂設定修改,並重點檢查日誌所示行號的上一行。

錯誤:json: cannot unmarshal string into Go struct field

原因與解法:欄位類型不正確,常見情況是把 443 寫成字串。重新編輯節點,將端口恢復為數字並儲存。

錯誤:failed to parse id: invalid UUID

原因與解法:VMess 或 VLESS 的使用者識別碼長度、連字號或字元內容不符合 UUID 格式。重新從訂閱更新節點,不要手動補寫缺少的字元。

錯誤:VLESS users: missing id

原因與解法:VLESS 出站缺少使用者 ID。開啟節點編輯視窗,核對位址、端口與 ID;若訂閱來源本身缺少欄位,需由節點提供者修正。

節點類型 啟動前必須核對 常見誤填
VMess 位址、端口、UUID、傳輸方式 UUID 被截斷、端口含空格、路徑遺漏斜線
VLESS 位址、端口、UUID、TLS 或 REALITY 參數 flow 與伺服器端不一致、缺少 public key
自訂設定 完整 JSON、入站端口、路由引用名稱 重複 tag、陣列括號未閉合、數字類型錯誤

如果只有一個節點啟動失敗,而同一群組中的其他節點能正常啟動,優先重新更新訂閱並檢查該節點欄位。如果所有節點都在同一行出現 JSON 錯誤,則更可能是全域路由、自訂 DNS 或範本設定損壞。兩者影響範圍不同,處理入口也不同。

位址解析、TLS 與 Core 類型錯誤

設定語法通過後,日誌可能開始出現 dial、lookup、certificate 或 handshake。此時 Core 通常已完成本機監聽,錯誤發生在遠端連線階段。判斷時可先查看錯誤對象是節點網域、本機 DNS 位址還是憑證名稱,不要把所有 timeout 都歸為同一種原因。

錯誤:failed to find an available destination

原因與解法:遠端位址解析失敗或所有候選位址都無法連線。核對節點網域拼寫,切換至可用的 DNS 後重新啟動核心,再查看是否出現具體 IP 連線紀錄。

錯誤:lookup edge.example.net: no such host

原因與解法:DNS 沒有回傳該網域的紀錄。先恢復 v2rayN 的預設 DNS 設定,確認系統時間與網路連線正常,再重新更新訂閱。

錯誤:remote error: tls: handshake failure

原因與解法:TLS 參數與伺服器端不相容。核對端口、SNI、傳輸方式和安全性類型,不要用關閉憑證驗證來掩蓋參數錯誤。

錯誤:failed to execute core: The system cannot find the file specified

原因與解法:用戶端記錄的 Core 路徑不存在。進入「設定」→「參數設定」→「Core 類型」恢復正確選擇,然後重新開啟 v2rayN。

系統時間偏差也會影響憑證有效期判斷。校正時間、時區與自動同步狀態後重新連線,比直接修改憑證驗證選項更能保留問題範圍。若日誌明確指出憑證名稱與目標 SNI 不一致,應回到節點編輯視窗修正伺服器名稱。

2026/07/29 10:31:08 [Info] dialing tcp: edge.example.net:443
2026/07/29 10:31:08 [Error] tls: failed to verify certificate
2026/07/29 10:31:08 [Error] certificate is valid for node.example.net, not edge.example.net

這類紀錄已提供兩個網域。連線位址可以是 edge.example.net,但伺服器憑證對應 node.example.net 時,SNI 通常需要依節點設定填寫為憑證涵蓋的名稱。具體值必須來自有效訂閱或伺服器設定,不能只憑錯誤文字隨意猜測。

結論:監聽成功後不要繼續查端口

日誌已出現遠端網域、TLS 或 certificate 資訊,表示本機 Core 至少已執行到出站連線階段。此時繼續更換 10808、10809 等本機端口通常無法解決問題,應轉向檢查節點位址、SNI、DNS 與傳輸參數。

用最小設定復原並驗證結果

當日誌同時包含多類錯誤時,最穩妥的方法是縮小變數。保留一個來源明確的節點,暫時使用預設路由與預設 DNS,關閉目前不參與測試的自訂入站,再啟動 Core。最小設定可以分開驗證訂閱資料、全域規則與本機監聽。

  1. 備份設定

    記錄目前的本機端口、Core 類型、DNS 與路由模式,並儲存關鍵日誌。不要依賴記憶來恢復複雜的分流規則。

  2. 更新訂閱

    在「訂閱群組」中選取對應群組並執行更新,然後只選擇一個欄位完整且近期可用的節點進行測試。

  3. 恢復預設值

    暫時停用自訂 JSON、額外入站和手動撰寫的 DNS 規則,保留預設本機監聽設定與基本路由。

  4. 啟動核心

    清除日誌後啟動一次,等待 10 秒。確認日誌出現 started、監聽位址與端口,且後面沒有緊接著出現 fatal 或 exited code 1。

  5. 逐項加回

    每次只恢復一項設定並重新啟動。哪一項加回後首次出現錯誤,故障範圍就落在該項設定中。

可用狀態至少應符合三項:Core 程序持續執行、本機代理端口保持監聽、發出請求時日誌出現正常的出站紀錄。如果只看到啟動成功卻沒有任何請求日誌,還要檢查系統代理是否已開啟,以及應用程式是否實際使用 v2rayN 提供的代理端口。

日誌一閃即逝,來不及複製怎麼辦?

先開啟「說明」→「檢視日誌」再啟動 Core,並從日誌檔案讀取完整紀錄。重點保存第一條 error 前後各 5 行,不要只截取最後的退出提示。

換了節點還是同一個端口錯誤?

端口屬於本機入站,與遠端節點無關。使用 netstat 查詢 10808 或 10809 的占用 PID,結束重複執行個體,或將本機端口改為未占用的值。

更新訂閱後出現 invalid UUID?

先刪除該群組中的舊節點,再完整更新一次。若新產生的同一節點仍報錯,表示訂閱內容中的使用者 ID 不完整,需要等待訂閱來源修正。

Core 顯示 started 就算修好了嗎?

還不夠。繼續確認本機端口處於監聽狀態,並實際發出一次請求;日誌應出現出站連線,且沒有 timeout、DNS 或 TLS 錯誤。

重新安裝用戶端能解決設定錯誤嗎?

如果錯誤來自訂閱欄位、自訂路由或保留的設定,僅替換程式檔案不會改變這些資料。先依日誌定位到端口、JSON、Core 路徑或節點參數,再決定是否重建設定。

下載用戶端