用戶端顯示「啟動失敗」時,節點本身不一定失效。v2rayN、v2rayNG 等圖形化用戶端會先將節點、路由與本機監聽設定轉換成核心設定,再啟動 Xray 或 v2fly 核心。只要設定產生、監聽連接埠、憑證檔案或欄位結構其中任一環節出錯,核心程序就會在建立代理連線前退出。
有效的排查方式不是反覆切換節點,而是找出這次啟動對應的第一個錯誤。日誌末尾常會出現多層包裝訊息,例如「failed to start」、「app/proxyman」或退出代碼;真正原因通常位於這些彙總訊息之前。先處理最早出現的明確錯誤,再重新啟動一次並讀取新日誌,就能避免受到後續連鎖錯誤干擾。
適合遇到核心無法啟動、用戶端立即中斷或日誌持續報錯的使用者。排查順序固定為:確認日誌時間、擷取第一個錯誤、判斷屬於連接埠、JSON、欄位或憑證問題,完成單項修復後重新產生設定並啟動。
先取得這次啟動的完整日誌
日誌必須對應剛才那次啟動操作。舊日誌可能仍保留已修復的錯誤,如果只搜尋醒目的紅色行,很容易處理錯誤的問題。建議先停止核心,記下目前時間,再執行一次啟動。接著從最接近啟動時間的時間戳位置往下閱讀,遇到第一筆包含 error、failed、invalid 或 cannot 的記錄就先停下來。
v2rayN 桌面版
- 在主視窗底部開啟日誌區域。如果區域已收合,請展開底部資訊面板並切換至「日誌」。
- 進入「設定」→「參數設定」→「基本設定」,確認日誌層級沒有設為完全關閉。日常排錯使用
warning;需要觀察設定載入過程時,暫時改為info。 - 點選停止服務,等待約 2 秒,再重新啟動目前設定。複製核心版本行到程序退出行之間的內容。
- 若主視窗同時顯示用戶端日誌與核心日誌,請優先查看帶有
Xray、V2Ray、Core或設定檔路徑的記錄。
v2rayNG Android 版
- 中斷目前連線,在主畫面右上角的選單中開啟「日誌」。
- 返回主畫面,選擇目標設定並啟動,接著立即回到日誌頁面。
- 從最新的核心啟動記錄開始查看。若內容捲動過快,先中斷連線,再複製最近一次啟動產生的記錄。
- v2rayNG 使用 Xray 核心時,設定驗證、VLESS 欄位與 TLS 錯誤會直接由核心輸出;用戶端頂端的簡短提示只用來確認狀態,不能取代詳細日誌。
連接埠占用:核心無法建立本機監聽
代理核心啟動後,會先在本機建立 SOCKS、HTTP 或透明代理監聽。v2rayN 常見組合是 127.0.0.1:10808 與 127.0.0.1:10809。如果舊核心尚未退出、另一個用戶端正在執行,或其他程式使用相同連接埠,新程序會在處理遠端節點前失敗。
這類問題與伺服器延遲、VMess 或 VLESS 參數無關。只要錯誤中同時出現 listen、bind、address 和連接埠號碼,就先處理本機監聽。不要透過連續更換節點來驗證,因為所有節點共用同一個本機入口,切換節點不會釋放被占用的連接埠。
錯誤:failed to listen TCP on 127.0.0.1:10808
原因與解法:SOCKS 監聽連接埠已被其他程序占用。先完全退出舊用戶端與殘留核心;仍然失敗時,在「設定」→「參數設定」→「基本設定」中將本機 SOCKS 連接埠改為 11808,儲存後重新啟動。
錯誤:bind: Only one usage of each socket address is normally permitted
原因與解法:同一個位址與連接埠不能由兩個程序同時監聽。確認是否重複開啟兩個 v2rayN 視窗,結束殘留核心後再啟動,不要讓兩個用戶端共用 10808。
錯誤:bind: address already in use
原因與解法:Linux 或 macOS 環境中已有程序占用目標連接埠。關閉對應程序,或將 SOCKS 與 HTTP 監聽分別調整為 11808、11809,並同步更新使用手動代理的應用程式。
修改連接埠後要同步檢查什麼
- 系統代理通常會由 v2rayN 自動更新,但瀏覽器或下載工具中的手動代理不會自動變更。
- 如果 SOCKS 連接埠從
10808改為11808,應用程式內填寫的代理位址也應改為127.0.0.1:11808。 - 連接埠值應介於
1至65535之間,且 SOCKS、HTTP、API 與區域網路監聽不應重複。 - 只修改連接埠仍出現相同錯誤時,請核對日誌中的實際連接埠。設定可能是由另一份設定檔產生,變更尚未套用至目前核心。
結論:看到 bind 就先檢查本機
包含 bind 或 address already in use 的啟動錯誤發生在本機監聽階段。先釋放或更換連接埠,再檢查節點協定與遠端伺服器。
JSON 語法錯誤:設定尚未進入協定驗證
V2Ray 與 Xray 核心通常會讀取 JSON 設定。圖形化用戶端會自動產生設定,但手動匯入完整設定、編輯自訂路由、合併片段或貼上進階參數時,可能引入缺少逗號、多餘逗號、錯誤引號或括號不配對。語法解析失敗表示核心尚未讀取 VMess、VLESS 或路由規則的具體含義。
日誌中的行號與欄號是最直接的定位資訊。例如 line 42 column 17 表示解析器在第 42 行第 17 欄無法繼續,但真正錯誤也可能位於上一行末尾。應同時檢查目標位置與前一行,尤其留意陣列元素、物件欄位之間的逗號。
{
"inbounds": [
{
"port": 10808,
"protocol": "socks"
}
],
"outbounds": [
{
"protocol": "vless",
"settings": {}
}
]
}
錯誤:invalid character '}' looking for beginning of object key string
原因與解法:物件結尾可能多出逗號,或某個欄位名稱缺少雙引號。檢查錯誤位置的上一行,刪除末尾多餘逗號後重新驗證設定。
錯誤:unexpected end of JSON input
原因與解法:設定在完整結束前遭到截斷,常見原因是少了右大括號或右方括號。請依層級配對 {} 與 [],不要只在檔案末尾盲目補上括號。
錯誤:failed to load config files: invalid character
原因與解法:設定中存在 JSON 不接受的字元,可能來自中文標點、註解或錯誤引號。將全形逗號與引號改為半形字元,並移除標準 JSON 不支援的註解。
建議的復原順序
- 先備份目前的自訂設定或路由規則,不要直接覆蓋唯一副本。
- 如果錯誤出現在訂閱節點產生的設定中,刪除該節點後重新更新訂閱,再重新選擇節點啟動。
- 如果錯誤出現在手動編輯的 JSON 中,先還原至最小可啟動設定,再逐段加入路由、DNS 與傳輸設定。
- 每加入一段就啟動一次。如此可將錯誤範圍限制在最近一次變更,而不是同時檢查整份檔案。
欄位拼寫與版本不相容:語法正確但結構無效
JSON 可以解析,不代表設定符合目前核心的資料結構。欄位名稱拼錯、大小寫錯誤、層級放置錯誤,或新用戶端產生了舊核心不認識的欄位,都會在設定載入階段觸發 unknown field、failed to build config 或 invalid value。此時括號與逗號通常沒有問題,重點應轉向欄位名稱、協定組合與核心版本。
例如 VLESS 的 flow、傳輸層的 network、TLS 相關的 serverName 都有固定位置。欄位寫成相近名稱,或將出站欄位放進傳輸設定,核心不會自動猜測。訂閱解析器也可能因版本較舊而忽略新參數,最後產生不完整設定。
錯誤:unknown field "floww"
原因與解法:欄位拼寫錯誤,floww 不是有效欄位。回到節點編輯頁核對 VLESS 流量控制設定;不要直接修改暫存產生檔,因為用戶端下次啟動時會重新覆蓋。
錯誤:failed to build config: invalid field rule
原因與解法:自訂路由規則的欄位或層級不符合目前核心結構。暫時停用最近加入的規則,確認核心可以啟動後,再依網域、IP、連接埠與出站標籤逐項恢復。
錯誤:failed to parse transport config
原因與解法:傳輸類型與對應參數不相容,例如選擇 WebSocket 卻保留另一種傳輸專用的欄位。重新編輯節點,讓傳輸方式、路徑、主機名稱與安全設定保持同一組合。
區分節點錯誤、訂閱錯誤與全域錯誤
| 現象 | 優先判斷 | 處理方式 |
|---|---|---|
| 只有一個節點無法啟動 | 該節點欄位缺失或拼寫異常 | 重新匯入該節點,核對協定、位址、連接埠與傳輸參數 |
| 同一份訂閱的所有節點都失敗 | 訂閱解析結果或用戶端版本問題 | 更新訂閱並檢查用戶端與核心版本,再重新產生設定 |
| 所有訂閱與手動節點都失敗 | 全域路由、DNS、監聽或核心檔案問題 | 還原預設全域設定,使用最小設定測試啟動 |
| 更新用戶端後開始失敗 | 舊設定欄位與新結構不一致 | 重新儲存節點與參數,避免繼續使用舊的產生快取 |
結論:單一節點失敗先看欄位,所有節點失敗先看全域設定
故障範圍能直接縮小檢查對象。只有一個節點出錯時,不必重設所有路由;所有節點同時失敗時,也不應逐一修改伺服器位址。
憑證與 TLS:分別檢查路徑、網域與系統時間
憑證類啟動錯誤主要出現在載入本機憑證檔案或初始化 TLS 設定時。用戶端作為出站連線方時,多數節點不會要求使用者手動選擇憑證檔案;如果設定中出現 certificateFile、keyFile 或本機絕對路徑,就要確認檔案確實存在,且目前程序具有讀取權限。
另一類錯誤發生在建立連線後,例如憑證網域不相符或憑證有效期判斷異常。這些記錄可能不會讓核心程序立即退出,但會導致目標節點連線失敗。應先區分「啟動階段無法讀取檔案」和「連線階段遠端憑證驗證失敗」,兩者的修復方向不同。
錯誤:failed to load certificate > open certificate.crt: no such file or directory
原因與解法:設定引用的憑證路徑不存在,或相對路徑是以錯誤的工作目錄為基準。改用實際存在的檔案路徑,或移除節點設定中不需要的本機憑證引用。
錯誤:x509: certificate is valid for example.com, not node.example.net
原因與解法:TLS 驗證使用的伺服器名稱與憑證網域不一致。核對節點提供的位址與伺服器名稱欄位,不要任意互換 WebSocket Host、連線位址與 TLS 伺服器名稱。
錯誤:x509: certificate has expired or is not yet valid
原因與解法:憑證已超過有效期限,或裝置系統時間明顯錯誤。先啟用系統自動設定日期與時區並同步時間;時間正確後仍出現錯誤,則需要更新伺服器端憑證設定。
錯誤:failed to parse private key
原因與解法:私鑰檔案內容、格式或憑證配對不正確。用戶端一般出站節點通常不應載入伺服器私鑰;請檢查是否誤匯入面向伺服器端的完整設定。
憑證問題的三步判斷
- 先看時間:系統日期相差數個月時,任何仍在有效期內的憑證都可能被判定為尚未生效或已經過期。
- 再看名稱:連線位址可以是入口網域,但 TLS 伺服器名稱必須與伺服器端設定及憑證涵蓋範圍一致。
- 最後看檔案:只有明確使用本機憑證的設定才需要檢查檔案路徑。一般訂閱節點不應憑空加入憑證或私鑰路徑。
修復後驗證:確認舊錯誤沒有變成新錯誤
修復一項後,應完整停止並重新啟動核心。只在介面中切換節點,可能仍在使用舊程序或舊的產生設定。啟動成功的最低標準是:日誌出現監聽建立或核心執行資訊,程序沒有立即退出,本機連接埠處於監聽狀態,且後續請求能進入代理出站。
如果第一個錯誤消失但出現另一個錯誤,不代表修復無效。設定載入具有順序,解析器通過前一階段後才會檢查下一階段。例如修復 JSON 逗號後,才可能暴露欄位拼寫問題;釋放 10808 後,才可能看見憑證名稱錯誤。繼續依新的第一個錯誤分類處理即可。
- 停止核心,等待約 2 秒,清楚區分新舊日誌時段。
- 重新啟動同一個節點,不要同時修改連接埠、協定、路由與 DNS。
- 確認日誌不再出現原始關鍵字,例如
bind、invalid character、unknown field或x509。 - 開啟一般網頁,再檢查日誌中是否產生新的連線記錄。
- 確認單一節點正常後,再恢復自訂路由、TUN 或區域網路監聽等附加設定。
日誌裡有很多 warning,需要全部處理嗎?
不需要。先處理導致程序退出的第一個 error 或 failed。關於舊欄位、相容行為或 DNS 回退的 warning 可能不會阻止啟動,應結合連線結果判斷。
切換任何節點都提示 10808 被占用,該怎麼辦?
完全退出重複執行的用戶端與殘留核心,再將「設定」→「參數設定」→「基本設定」中的 SOCKS 連接埠暫時改為 11808。若啟動成功,即可確認原連接埠被其他程序占用。
更新訂閱後突然出現 unknown field,該怎麼查?
先更新用戶端及其核心,再重新更新訂閱並產生設定。只有部分節點失敗時,單獨刪除並重新匯入這些節點;全部失敗時,檢查全域自訂設定與路由片段。
v2rayNG 只顯示啟動失敗,沒有詳細原因,該怎麼辦?
中斷連線後從右上角選單進入「日誌」,返回主畫面重新啟動一次,再立即查看最新記錄。複製第一個錯誤前後約 10 行,不要只記錄狀態列提示。
v2flyNG 的排查順序是否不同?
基本順序相同:先確認日誌時間,再找出第一個設定或監聽錯誤。差別在於 v2flyNG 使用 v2fly 核心,某些僅適用於 Xray 的欄位不能直接照搬,應以目前核心的實際輸出為準。
可重複使用的故障記錄範本
用戶端:v2rayN
核心:Xray
發生時間:2026-07-31 14:26
故障範圍:所有節點
第一個錯誤:failed to listen TCP on 127.0.0.1:10808
本次修改:SOCKS 連接埠改為 11808
複測結果:核心持續執行,本機監聽已建立
記錄用戶端、核心、發生時間、故障範圍、第一個錯誤與單次修改,可以減少重複操作。下次遇到類似問題時,先比較關鍵字與故障範圍,不必從重新安裝或重設所有設定開始。日誌排錯的核心不是記住每一則英文訊息,而是確認錯誤發生在哪個階段,並且每輪只驗證一個變數。