適用於 v2rayN 切換伺服器後提示核心啟動失敗、匯入自訂設定後立即結束,以及更新核心後無法載入規則等情況。先從日誌判斷是「設定未載入」、「本機監聽未建立」還是「核心已啟動但連線失敗」,再逐一排查連接埠、JSON、欄位相容性與 geo 資料;最後分別透過設定測試和實際連線驗證,避免把訂閱取得失敗誤認為核心故障。
1. 核心啟動失敗與連線失敗的差異
v2rayN 是管理介面,負責執行代理設定的則是 Xray 或 V2Fly 核心程序。主視窗能開啟、伺服器清單能顯示,不代表核心已正常執行。真正的啟動失敗通常發生在讀取設定、建立入站與出站,或繫結本機連接埠時;節點逾時、憑證不符和遠端拒絕連線,則可能發生在核心啟動之後。
先確認錯誤發生的時間點:如果每次設定作用中的伺服器後,立即出現設定解析錯誤,應優先檢查本機設定;如果啟動過程正常,只有開啟網頁時出現連線錯誤,排查重點應轉向伺服器位址、網路、TLS 與傳輸參數。這時反覆修改本機監聽連接埠通常無濟於事。
| 日誌或現象 | 發生階段 | 優先檢查項目 |
|---|---|---|
failed to load config | 讀取或建立設定 | 繼續檢查 JSON、協定欄位及資料檔案等問題 |
failed to listen TCP | 建立本機監聽 | 監聽位址、連接埠占用與系統保留連接埠 |
connection refused | 連線至目標位址 | 確認錯誤中的目標是本機入站還是遠端伺服器 |
context deadline exceeded | 操作逾時 | 依前後文判斷是 DNS、連線或交握逾時 |
2. 從日誌視窗確認實際使用的核心與設定檔
排查時要確認的是「這次啟動實際使用的核心與設定」,而不是程式目錄裡恰好存在的某個檔案。v2rayN 通常會依作用中的伺服器與路由設定產生執行設定;手動修改產生的檔案後再次切換節點,修改內容可能會被覆寫。需要長期保留的調整,應回到參數設定、路由設定或對應的自訂設定來源修改。
-
保留現場資訊
複製主視窗底部日誌區域中這次的錯誤,並記下剛才執行的是啟動、切換伺服器還是修改路由。修改前先備份自訂設定,避免覆寫唯一能重現問題的樣本。
-
確認核心
開啟「設定」→「參數設定」,檢查「Core 類型」相關選項,並與啟動日誌中的 Xray 或 V2Ray 版本標示核對。不同版本的分頁與名稱可能略有差異,請以日誌顯示的實際程序為準。
-
找出設定檔
從啟動資訊或錯誤路徑確認目前讀取的設定檔。如果介面沒有顯示完整路徑,再檢查用戶端日誌與執行目錄;不要只憑檔名猜測,也不要把訂閱回應直接當成執行設定。
-
逐項重試
每次只修改一個項目,接著重新啟動核心並保存新的錯誤訊息。上一個錯誤消失、下一個錯誤出現,代表排查已有進展,不必還原所有參數再從頭開始。
如果日誌還沒出現設定解析內容,就已提示找不到可執行檔、無法建立程序或存取遭拒,應先檢查核心檔案是否完整、程式目錄是否可讀寫,以及安全軟體的封鎖紀錄。這類故障發生在設定交由核心處理之前,修改 JSON 無法解決。
3. 連接埠占用:先查 PID,再修改本機監聽
以下數字僅為排查範例,不代表所有版本的預設設定。先到「設定」→「參數設定」核對本機監聽連接埠,再替換命令中的數字。部分版本使用混合監聽連接埠,不必一概要求同時設定 SOCKS 和 HTTP 兩個獨立連接埠。
錯誤:bind: address already in use
原因:這個監聽位址與連接埠已被其他程序占用,也可能是另一個 v2rayN 執行的核心仍在運作。
解決方式:查明占用連接埠的程序,正常結束重複執行的執行個體;如果兩個程式都要運作,請為其中一個指定不同的本機連接埠。
錯誤:Only one usage of each socket address
原因:這是 Windows 連接埠繫結衝突錯誤中常見的片段,完整訊息還會列出監聽位址與連接埠。
解決方式:依日誌顯示的確切連接埠查詢 PID,不要一看到繫結錯誤就直接結束所有核心程序。
在 Windows 查詢監聽程序
netstat -ano -p tcp | findstr ":10808"
netstat -ano -p tcp | findstr ":10809"
只將本機位址欄中符合連接埠且狀態為 LISTENING 的項目視為監聽證據;命令也可能比對到遠端位址,不能只看到數字就判定衝突。最右欄是 PID,可在工作管理員的「詳細資料」中核對。也可以執行以下 PowerShell 命令,直接查看程序名稱:
Get-NetTCPConnection -LocalPort 10808 -State Listen |
Select-Object LocalAddress, LocalPort, OwningProcess,
@{Name='ProcessName';Expression={(Get-Process -Id $_.OwningProcess).ProcessName}}
重點:連接埠變更後,接入端也要同步更新
如果將本機連接埠從 10808 改成其他值,手動設定代理的瀏覽器、終端機與應用程式也要一併修改;使用 v2rayN 系統代理時,請重新套用「自動設定系統代理」。核心恢復監聽,不代表應用程式已連上新連接埠。
如果錯誤與存取權限有關,例如 forbidden by its access permissions,而查詢也找不到監聽程序,還應檢查系統排除的連接埠範圍,可執行 netsh interface ipv4 show excludedportrange protocol=tcp。優先選用未占用且未保留的連接埠,不要直接刪除系統保留範圍。
4. JSON 語法錯誤:修正標點與層級
標準 JSON 的物件鍵與字串都要使用英文雙引號,不可在最後一個項目後多加逗號,也不能用中文引號作為定界符。某些載入方式可能支援註解或其他擴充語法,但複製設定時遵循標準 JSON,較容易跨工具驗證。語法檢查通過,只能證明文字結構正確,不能證明協定與路由欄位有效。
錯誤:invalid character '}' looking for beginning of object key string
原因:常見情況是物件最後一個項目後仍有逗號,解析器預期讀取下一個鍵,卻遇到右大括號。
解決方式:檢查錯誤附近及前一個項目,移除末尾逗號,並重新確認括號是否成對。
錯誤:unexpected EOF
原因:內容在結構結束前就被截斷,常見原因包括複製不完整、字串未封閉或缺少結尾括號。
解決方式:對照完整來源檔案補回缺少的內容,不要只在檔案末尾盲目補上括號。
以下是語法正確的日誌設定片段,用來說明巢狀層級與逗號位置;這不是完整的代理設定,不能直接取代整份執行檔。
{
"log": {
"loglevel": "warning"
}
}
- 檢查引號:
"loglevel"是合法的鍵名,中文彎引號則不是。 - 檢查逗號:同一層的成員之間要加逗號,最後一個成員後面則不需要。
- 檢查路徑:JSON 字串中的 Windows 反斜線需要跳脫,例如
"C:\\proxy\\error.log"。 - 檢查檔案內容:如果開頭是 HTML 標籤,可能存到的是錯誤頁面;如果內容是一串訂閱編碼,也不是原生的執行 JSON。
不要將包含憑證的設定上傳到線上格式化工具。使用本機編輯器檢查標點後,再透過相同核心的設定測試命令驗證內容是否有效。如果 v2rayN 產生的檔案一再出現相同問題,應檢查自訂設定或範本來源,而不是每次手動修改產生的結果。
5. 未知欄位與核心差異:確認協定、類型與層級
Xray 與 V2Fly 的設定有共通基礎,但一方新增的傳輸、安全性或協定參數,不能原封不動套用到另一方。即使都是 JSON 檔案,同一欄位也可能因核心版本不同而無法辨識。VLESS、VMess 是協定名稱,不是通用設定格式;某個用戶端能匯入分享連結,不代表所有核心版本都支援其中的每個參數。
| 日誌線索 | 可能原因 | 修正方式 |
|---|---|---|
unknown field | 目前的載入器會嚴格檢查欄位,或欄位放錯層級 | 核對該核心版本的欄位定義與巢狀位置 |
unknown config id | 不支援協定或傳輸類型名稱,或名稱拼寫錯誤 | 確認錯誤指出的類型與實際使用的核心,避免跨核心複製設定 |
cannot unmarshal | 字串、數字、陣列或物件的類型不符 | 依完整錯誤訊息定位欄位,不要只改引號讓解析器勉強通過 |
| 沒有錯誤,但設定沒有生效 | 未知欄位可能遭到忽略,也可能修改的不是執行時使用的檔案 | 核對產生的設定與實際行為,不能只看測試是否成功結束 |
並非所有未知欄位都會導致啟動失敗,實際行為取決於核心版本與設定載入方式。因此,沒有看到 unknown field 不代表欄位已生效。請優先使用 v2rayN 對應的結構化編輯介面;確實需要自訂 JSON 時,請確認實際核心的說明資訊、設定層級與版本支援範圍。
6. geo 檔案遺失:區分檔案、路徑與集合名稱
路由中的 geosite:cn 會參照網域集合,geoip:cn 則會參照 IP 集合;使用常見的 DAT 資料載入方式時,分別需要 geosite.dat 與 geoip.dat。核心不只要能找到資料檔案,檔案中也必須包含所參照的集合。檔案存在、檔案可讀取,以及集合存在,是三個不同條件。
錯誤:failed to load geosite
原因:網域規則載入失敗;後續錯誤可能指出檔案不存在、內容無法解析,或集合名稱不存在。
解決方式:查看完整錯誤鏈,先確認實際資料目錄,再分別檢查檔案與所參照的集合,不能只看檔名。
錯誤:no such file or directory
原因:如果前文明確指向 geo 資料路徑,表示核心在該位置找不到所需檔案;Windows 也可能顯示「找不到指定的檔案」。
解決方式:依錯誤顯示的完整路徑還原資料檔案,或修正資源目錄;不要以其他位置的同名檔案作為問題已解決的證據。
- 檔案遺失:透過用戶端的資料檔案更新功能重新下載;不同版本的選單位置可能不同,請確認更新結果與實際資源路徑。
- 檔案損毀:如果核心回報讀取或解析失敗,請重新下載完整資料檔案,避免將下載到的錯誤頁面改名為
.dat。 - 集合不存在:確認
geosite:或geoip:後方的名稱;不同資料來源未必包含相同集合。 - 外部資料參照:使用
ext:檔名:集合名稱時,請同時確認自訂檔名、資源目錄與集合,不要只更新預設檔案。
暫時驗證時,可以先停用自行新增且觸發錯誤的 geo 規則,再重新產生設定並啟動。這只能證明故障與該規則或其資料相依項有關,不能視為最終修正。刪除分流規則可能改變連線路徑;恢復規則後,還要確認原本需要直連、代理或封鎖的目標是否符合預期。
7. 分開驗證設定測試與實際連線
設定測試應使用 v2rayN 實際呼叫的核心版本,並在相同的資料資源環境中執行。否則,手動測試可能因工作目錄不同而找不到 geo 檔案,也可能因使用另一個核心而得到不同結果。以下範例適用於 Windows,假設目前目錄中包含核心程式與待檢查的 config.json;實際檔案位於其他位置時,請改用正確路徑。
.\xray.exe version
.\xray.exe run -test -config .\config.json
V2Fly 的命令列會因主要版本而異。採用子命令形式的 V2Fly 版本可使用以下寫法;如果出現未知命令,請先查看目前執行檔的說明,不要照抄其他版本的啟動參數。
.\v2ray.exe version
.\v2ray.exe help
.\v2ray.exe test -c .\config.json
設定測試通常只會驗證載入與建立設定的過程,不會建立完整的執行期監聽,也不會代替你實際連線至遠端。因此,測試通過仍無法排除連接埠衝突、遠端無法連線或交握失敗。修正後還要讓 v2rayN 正式啟動核心,並依照以下順序驗收。
- 確認啟動:確認同一次啟動不再出現設定解析、資料載入或監聽失敗訊息。
- 確認監聽:使用連接埠查詢命令確認預期連接埠正在監聽,且程序屬於這次啟動的核心。
- 確認接入:核對系統代理或應用程式手動設定的代理位址。系統代理是否啟用,與核心能否啟動是兩回事。
- 確認連線:實際發出連線請求,並搭配日誌確認連線是否進入核心,以及在哪個目標與階段失敗。
- 確認分流:如果修改過路由,分別測試預期直連與代理的目標;還原暫時停用的規則後,再重新測試。
8. 常見問題:重新安裝、管理員權限與日誌層級
重新安裝後仍無法啟動,需要繼續重裝嗎?
先確認是否沿用同一份使用者設定與自訂路由。更新程式檔案不一定會移除設定錯誤。備份後,先用已知可用的伺服器設定與簡化路由測試,再逐項還原自訂內容,避免一次載入整份有問題的設定。
一定要以管理員身分執行才能修復嗎?
一般本機高位連接埠監聽通常不需要管理員權限。先分辨問題是連接埠占用、目錄存取遭拒,還是需要額外權限的網路功能。提高權限無法修正 JSON 標點錯誤、欄位錯誤或集合遺失,也不能取代程序與路徑檢查。
日誌內容太少,調成 debug 能找到原因嗎?
前往「設定」→「參數設定」尋找日誌層級,暫時調整為 debug,重新啟動並重現一次問題。如果設定在日誌系統初始化前就失敗,仍須檢查啟動輸出。排查完成後請還原常用層級,分享前移除敏感連線資訊。
換一個節點就正常,是否代表原本的節點失效?
不一定。兩個節點可能使用不同的協定、傳輸或安全性參數,只有其中一個觸發目前核心不支援的設定。先比較切換節點時的啟動日誌;如果原節點也能正常啟動、只有連線請求失敗,再檢查其伺服器位址、連接埠與交握條件。
最後請保存一份能重現問題的去識別化日誌,以及對應的核心版本、觸發操作與修正項目。下次遇到類似故障時,先判斷錯誤階段,再找最內層原因,比直接重設所有設定更能保留有效設定。若要進一步確認系統代理與接入情況,請參閱故障排除手冊。