本文適合在 Windows 上使用 v2rayN,並選用 Xray 核心後遇到啟動失敗的使用者。排查時先保留一份完整啟動日誌,再依序檢查設定讀取、本機連接埠、路由資源及欄位相容性,最後分別透過設定測試和實際請求驗收。文中連接埠僅供示範,不代表所有安裝環境的預設值。
一、先分辨核心退出與網路請求失敗
v2rayN 是管理介面,Xray 則是執行代理設定的核心。介面能開啟,不代表核心已順利執行;同樣地,網站連線逾時也不代表核心啟動失敗。前者應檢查本機設定與執行環境,後者才需要進一步檢查節點、DNS 和遠端線路。
判斷時別只看介面最後一行提示。先開啟主視窗的資訊或日誌區域,清除舊記錄,再對目前使用的設定重新啟動一次,保留從讀取設定到程序結束的完整連續內容。不同版本的日誌入口名稱可能不同,請以實際介面為準。
- 啟動階段失敗:日誌顯示設定解析失敗、資源檔案無法開啟或監聽位址繫結失敗,接著程序便結束。此時更換節點通常無法解決本機錯誤。
- 執行階段失敗:核心持續執行,直到發出請求後才出現連線逾時、連線遭拒或交握失敗。應先確認請求使用哪個出站,再檢查伺服器參數。
- 核心尚未執行:介面提示找不到可執行檔或無法建立程序,而且沒有 Xray 本身的輸出。此時先檢查核心路徑、檔案是否遭隔離及執行權限,不要從路由規則著手修改。
二、依日誌級別與錯誤鏈找出原因
Xray 的日誌設定常見 debug、info、warning、error 和 none。其中 none 代表關閉一般日誌輸出,不適合用於臨時排錯。一般檢查先使用 info;若請求路徑不明,再暫時調高至 debug,完成後恢復,以免持續產生大量連線細節。
在提供相關選項的 v2rayN 版本中,可從「設定」→「參數設定」尋找日誌選項並儲存,再重新啟動目前的設定。若使用自訂 JSON,還要檢查檔案中的 log 區段,不能假設介面設定一定會覆蓋它。設定解析階段的錯誤也可能直接輸出到程序主控台,因此請一併保留介面顯示的核心輸出。
| 級別或輸出 | 可判斷的資訊 | 後續處理 |
|---|---|---|
debug | 提供更詳細的執行過程與路由線索 | 只重現一次問題,記錄後恢復原級別 |
info | 記錄啟動與一般執行資訊 | 確認核心版本、設定路徑及啟動過程 |
warning | 可能是單次連線或執行異常 | 搭配時間與程序狀態,判斷是否真的已退出 |
error | 記錄較嚴重的處理錯誤 | 繼續查看完整錯誤鏈,不要只複製級別標籤 |
| 主控台啟動錯誤 | 設定可能尚未完成初始化 | 優先檢查路徑、語法及載入失敗的資源 |
錯誤鏈常用 > 串接多個上下文。以下是典型結構示意,實際模組前綴與文字可能因核心版本而異。最外層說明「載入失敗」,內層才指出「無法讀取設定內容」,最末端則提供語法層面的直接線索。
Failed to start: main: failed to load config files: [config.json]
> infra/conf/serial: failed to read config file
> invalid character '}' looking for beginning of object key string
結論:先修正最內層且可處理的錯誤
遇到上述錯誤鏈時,應先檢查右大括號前是否多了逗號,而不是先修改 DNS 或切換節點。修正後重新啟動,再處理新日誌指出的下一個問題。
三、連接埠占用:確認監聽位址與占用程序
本機入站需要繫結位址與連接埠。兩個程序無法任意同時占用相同的監聽端點;重複啟動的核心、另一個代理程序,甚至同一份設定中重複定義的入站,都可能造成衝突。先從日誌記下實際連接埠,不要照著教學猜預設值。
錯誤:Only one usage of each socket address (protocol/network address/port) is normally permitted.
原因:這是 Windows 常見的位址繫結衝突提示,核心嘗試使用的連接埠已遭占用。
解決方法:查詢正在監聽該連接埠的程序,確認用途後正常關閉重複程序,或調整本機入站連接埠並同步修改應用程式的代理設定。
以下命令可在 PowerShell 中檢查範例連接埠 10808 的 TCP 監聽程序。先查看程序名稱與路徑,再決定是否關閉;不要只看到程序編號就直接強制結束。
Get-NetTCPConnection -State Listen -LocalPort 10808 |
Select-Object LocalAddress, LocalPort, OwningProcess
Get-NetTCPConnection -State Listen -LocalPort 10808 |
ForEach-Object { Get-Process -Id $_.OwningProcess } |
Select-Object Id, ProcessName, Path
- 如果占用者是舊的 Xray 程序,請先從所屬用戶端正常退出;確認程序已結束後,再啟動一次 v2rayN。
- 如果占用者是需要保留的其他程式,請在本機入站設定中選擇未被占用的連接埠。使用自訂設定時,也應檢查所有
inbounds,避免重複繫結。 - 修改連接埠後,請檢查瀏覽器手動代理和系統代理是否仍指向舊連接埠。核心啟動正常,但應用程式繼續連線至舊連接埠,也會造成另一類連線失敗。
- 若提示
forbidden by its access permissions,不應直接判定為連接埠占用。可使用netsh interface ipv4 show excludedportrange protocol=tcp檢查系統保留範圍,再搭配安全性原則進一步排查。
四、JSON 語法錯誤:先測試實際啟動檔案
節點編輯介面儲存成功,不代表所有自訂片段都能組成有效設定。常見錯誤包括最後一項後多了逗號、複製到中文引號、字串缺少結尾引號,以及直接在 JSON 中輸入 Windows 路徑的反斜線。路徑可使用正斜線,或在字串中將反斜線寫成 \\。
錯誤:unexpected EOF
原因:解析器尚未讀到預期內容就遇到檔案結尾,可能是物件、陣列或字串未封閉,也可能是匯出的檔案遭截斷。
解決方法:檢查檔案結尾及最近修改的位置,補齊結構後重新測試;不要只在檔案末尾一味加上大括號。
錯誤:invalid character '}' looking for beginning of object key string
原因:物件中的逗號後沒有出現下一個有效鍵名,常見情況是最後一個欄位後仍留有逗號。
解決方法:刪除多餘逗號,確認鍵名使用英文雙引號,並對完整檔案執行設定測試。
在 Xray 可執行檔所在資料夾開啟 PowerShell,將本次實際使用的設定副本命名為 config.json,再執行下列命令。若檔案位於其他位置,請使用實際完整路徑。只測試舊備份,無法驗證 v2rayN 剛產生的啟動設定。
.\xray.exe version
.\xray.exe run -test -config .\config.json
run -test 用於檢查目前核心能否載入設定,無法取代正常監聽測試或遠端連線測試。測試時也應使用與用戶端相同的資源目錄和環境變數,否則手動測試找不到 geo 檔案,不代表用戶端啟動時也找不到。自動產生的檔案可能在下次啟動時遭覆蓋,最終修正應套用在節點編輯項目、路由設定或自訂設定來源檔案中。
五、geo 檔案遺失:檢查檔案路徑與規則分類
geoip:private 和 geosite:cn 並非會隨設定自動展開的一般文字。Xray 載入相關規則時需要讀取對應的資料檔;檔案遺失、執行目錄錯誤、資源路徑遭覆寫或分類不存在,都可能導致設定無法建立。只把 JSON 複製到另一個資料夾,常會漏掉這些相依檔案。
錯誤:failed to load GeoIP
原因:錯誤鏈中包含這段訊息,表示 GeoIP 規則載入失敗;可能是資料檔遺失、無法讀取或分類不符。
解決方法:繼續查看後續的檔名、系統錯誤或分類名稱,分別檢查資源目錄、讀取權限和規則內容。
錯誤:The system cannot find the file specified.
原因:若同一條錯誤鏈明確指出 geosite.dat 或 geoip.dat,表示該次查找未找到對應檔案。
解決方法:將資料檔還原至用戶端使用的資源目錄,並檢查自訂啟動環境是否設定了錯誤的資源路徑。
- 先找出實際存取路徑:以日誌中的實際路徑為準,不能只因下載資料夾內有同名檔案,就判定相依檔案齊全。
- 再檢查資源設定:自訂執行環境中的
XRAY_LOCATION_ASSET會影響資源查找,請確認它指向預期的資料夾。 - 分辨檔案與分類:「找不到檔案」和「檔案中沒有指定分類」是兩回事。後者需要調整分類名稱,或改用包含該分類的資料來源;重複複製同一個檔案並無幫助。
- 針對問題還原:透過用戶端提供的資源更新功能還原所需檔案;若要暫時移除相關規則進行隔離測試,請先備份,測試後再恢復原有分流設定。
六、欄位拼寫與層級:JSON 有效仍可能設定錯誤
JSON 語法通過,只能表示括號、引號等結構可以解析,不能保證欄位位置、值及核心功能彼此相符。尤其要確認複製的片段採用哪種核心設定格式。v2rayN 的介面設定與 Xray 原生 JSON 也不是同一種檔案格式,不能直接將介面設定檔交給 Xray 執行。
以路由為例,domainStrategy 屬於 routing,不屬於 rules 中的個別規則。以下只展示路由片段,假設完整設定已定義名為 direct 的直連出站,且所需 geo 資料可讀取;這不是可獨立啟動的完整設定。
{
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{
"type": "field",
"ip": ["geoip:private"],
"outboundTag": "direct"
},
{
"type": "field",
"domain": ["geosite:cn"],
"outboundTag": "direct"
}
]
}
}
- 確認大小寫:
outboundTag和任意改寫的欄位名稱並不相同,出站標籤的內容也必須與定義一致。 - 確認資料類型:
rules應為陣列,規則中的domain、ip須依各欄位要求填寫;不要將其他軟體的規則文字直接貼進 JSON。 - 確認版本支援:記錄
xray.exe version的實際輸出,再確認所使用的傳輸與安全欄位是否受該核心支援;不要只憑用戶端視窗標題推測核心版本。 - 確認實際生效:某些未知欄位可能遭忽略,不一定會觸發錯誤。設定測試成功後,還要透過執行日誌與請求結果確認規則確實生效。
結論:分開驗收「能載入」與「符合預期」
先透過設定測試排除結構錯誤,再正常啟動並確認連接埠正在監聽,最後發出請求檢查出站選擇。每一步只驗證一個層面,才能避免把欄位未生效誤判為節點故障。
七、修正後驗收與常見問題
每次只修改一個明確問題,接著重新啟動並保留新日誌。不要同時升級核心、修改連接埠、更換路由和節點;否則即使連線恢復,也難以判斷是哪個步驟真正奏效。確認恢復後,將暫時調高的日誌級別還原,並保存可用的設定副本。
- 設定驗收:使用目前的核心測試實際設定,不再出現讀取、欄位或資源載入錯誤。
- 程序驗收:正常啟動後程序持續執行,預期的本機連接埠進入監聽狀態,而不是啟動後立即退出。
- 請求驗收:讓應用程式明確使用新連接埠連線至目標,搭配日誌確認請求已到達核心,並觀察是否出現新的遠端連線錯誤。
- 設定持續性驗收:退出並重新開啟 v2rayN,確認修正不會因自動產生設定而遭覆寫。
重新安裝 v2rayN 後仍無法啟動,還要繼續重裝嗎?
先確認是否仍使用同一份錯誤設定,或仍有舊程序占用相同連接埠。備份原設定,用最少的自訂項目重現一次,再依新日誌處理;重複安裝無法自動解決系統連接埠衝突。
以系統管理員身分執行就正常了,可以一直這樣使用嗎?
一般迴送代理監聽通常不需要系統管理員權限。先依日誌檢查檔案目錄權限及安全軟體是否攔截;若啟用了需要權限的 TUN 功能,可先關閉它,只測試一般本機入站,再個別處理權限問題。
設定測試成功,但瀏覽器顯示連線遭拒,該怎麼辦?
正常啟動核心後,檢查實際監聽的連接埠,再確認瀏覽器和系統代理設定。測試命令本身不會維持代理服務;如果只執行過測試而未啟動核心,應用程式連線至本機連接埠仍會遭拒。
日誌出現 timeout,就代表核心沒有啟動嗎?
不是。先確認逾時發生在啟動階段,還是應用程式發出請求之後。如果核心仍在監聽,且日誌已有請求處理記錄,應轉而檢查伺服器位址解析、遠端連接埠及傳輸參數,不要反覆修改本機 JSON 語法。