「節點逾時」不是單一故障。它可能發生在網域解析、TCP 建立連線、TLS 交握、協定驗證或本機代理轉送的任何一層。反覆切換節點只能偶爾繞過問題,無法判斷故障究竟位於本機、網路、訂閱還是伺服器。
更有效的做法是縮短故障鏈:先確認用戶端核心正在執行,再確認本機監聽連接埠可用,接著核對節點參數,最後才檢查遠端伺服器。每完成一步,都要觀察一次記錄或連線結果,不要同時修改多個欄位。
本文適合遇到 v2rayN、v2rayNG 或 v2flyNG 節點逾時、測速失敗、連線後網頁無法開啟的使用者。排查順序固定為:辨識錯誤層級、校準時間、檢查本機連接埠、核對節點與傳輸欄位、重新整理訂閱、交叉測試網路,最後界定伺服器端故障範圍。
先區分「逾時」發生在哪一層
用戶端顯示紅色延遲、連線測試失敗或記錄出現 timeout,不代表一定是同一種問題。一次完整連線至少會經過「用戶端程序 → 本機代理連接埠 → 網域解析 → 遠端連接埠 → TLS 或 REALITY 交握 → VMess/VLESS 驗證」這些環節。前一層尚未完成,後一層就不會開始。
先清除或暫停滾動記錄,重新連線一次發生問題的節點,只閱讀這次連線產生的內容。v2rayN 可從主視窗底部的記錄區查看;需要更完整的記錄時,進入「設定」→「參數設定」→「基礎設定」,將記錄層級暫時調整為 info。v2rayNG 可開啟左上角選單,再進入「記錄」查看目前核心輸出。
錯誤:dial tcp: i/o timeout
原因與解法:用戶端向遠端位址與連接埠發起連線,但在等待時間內未收到回應。先切換另一個網路測試,再核對伺服器連接埠與防火牆狀態。
錯誤:connectex: No connection could be made because the target machine actively refused it
原因與解法:遠端主機可以連線,但目標連接埠明確拒絕連線。常見原因包括服務未監聽、連接埠填寫錯誤,或伺服器規則未允許連線。
錯誤:failed to find an available destination
原因與解法:目前的出站連線沒有取得可用目標,可能是位址解析失敗或前置連線全部失敗所致。檢查節點位址拼寫、DNS 與網路可達性後重新啟動核心。
錯誤:context deadline exceeded
原因與解法:某個連線階段超過核心的等待期限。結合前後兩行記錄,判斷發生在 TCP 建立連線、TLS 交握還是訂閱要求階段,不要只看最後一行。
- 所有節點同時失敗:優先檢查系統時間、核心、系統代理、本機連接埠與目前網路。
- 只有一個節點失敗:優先檢查該節點的位址、連接埠、傳輸層欄位與伺服器狀態。
- 測速失敗但網頁可以開啟:可能是測速目標無法連線,不應只憑單一延遲結果判定節點失效。
- 用戶端顯示已連線但網頁無法開啟:重點檢查系統代理是否啟用、瀏覽器是否繞過代理,以及 DNS 要求是否進入正確的出站連線。
第一輪檢查:系統時間、核心與本機代理連接埠
VMess 會使用時間資訊參與驗證,TLS 與 REALITY 交握也需要正確時間。系統時間相差數分鐘時,表面上可能仍能解析網域並連線到連接埠,但驗證階段會失敗。先在系統設定中啟用自動設定時間與自動設定時區,完成同步後完全退出用戶端,再重新啟動。
第二個檢查點是核心狀態。用戶端介面負責管理設定,真正建立連線的是 Xray 或 v2fly 核心。按鈕顯示「已啟動」不代表核心一定持續執行;若連接埠已被佔用,核心可能啟動後立即退出。應以記錄中的監聽成功訊息為準。
-
同步時間
開啟系統日期與時間設定,啟用自動時間與自動時區。同步完成後確認日期、時區與分鐘數都正確。
-
確認核心
在 v2rayN 開啟「設定」→「參數設定」→「Core 類型」,確認目前節點對應 Xray 或 v2fly 核心;儲存後執行「重新啟動服務」。
-
讀取連接埠
在 v2rayN 進入「設定」→「參數設定」→「基礎設定」,記下本機監聽連接埠。v2rayNG 則進入左上角選單「設定」→「本機代理連接埠」。
-
排除佔用
觀察記錄是否出現
address already in use或Only one usage of each socket address。若有,關閉佔用該連接埠的舊程序,或將監聽連接埠改為未使用的值。 -
重新開啟代理
在 v2rayN 的系統匣選單中先關閉系統代理,再選擇自動設定系統代理。Android 端則中斷目前連線,等待 3 秒後重新啟動。
第二輪檢查:位址、連接埠、使用者識別碼與加密欄位
本機監聽正常後,開始逐字核對節點。不要憑記憶修改。節點名稱只是備註,並不決定連線;真正影響驗證的是伺服器位址、連接埠、協定、使用者識別碼以及傳輸設定。
VMess 節點重點檢查 id、alterId 與安全性選項。現代設定通常使用 alterId: 0,但最終必須依照伺服器設定。VLESS 節點重點檢查 UUID、流量控制欄位與安全層;使用 XTLS Vision 時,常見流量控制值為 xtls-rprx-vision,空值與該值不能任意互換。
| 欄位 | 檢查內容 | 典型錯誤 |
|---|---|---|
address |
網域或 IP 是否完整,前後是否有空格 | 誤把訂閱備註填成伺服器位址 |
port |
範圍應為 1 至 65535,並與服務監聽設定一致 | 誤把本機 10808 當成遠端連接埠 |
id |
UUID 的字元、連字號與順序必須完全一致 | 複製時遺漏結尾字元 |
security |
區分 none、tls 與 reality | 伺服器使用 REALITY,用戶端卻選擇 TLS |
flow |
僅在伺服器要求時填寫對應的流量控制值 | 一般 VLESS 節點誤填 Vision 流量控制 |
{
"address": "node.example.net",
"port": 443,
"id": "依節點資料逐字核對",
"security": "reality",
"flow": "xtls-rprx-vision"
}
第三輪檢查:傳輸層、TLS 與 REALITY 參數
位址與使用者識別碼正確,不代表節點能完成交握。WebSocket、gRPC、TCP 與 HTTPUpgrade 的欄位結構各不相同。用戶端選擇的傳輸方式必須與伺服器一致,路徑、主機名稱、服務名稱等字串也要逐字相符。
使用 TLS 時,serverName 通常是交握使用的網域名稱。它不一定與連線位址相同,但必須符合伺服器部署設定。使用 REALITY 時,還要核對 publicKey、shortId、serverName 與指紋。任何一個欄位不相符,都可能表現為建立連線後立即中斷或交握逾時。
network
傳輸類型
用於區分 TCP、WebSocket、gRPC 或 HTTPUpgrade。用戶端與伺服器必須選擇相同的傳輸方式。
path
要求路徑
WebSocket 與 HTTPUpgrade 常用的欄位。斜線、大小寫與附加查詢內容都應依照節點資料填寫。
serviceName
gRPC 服務名稱
僅用於 gRPC 傳輸。它不是網頁路徑,也不能直接用 WebSocket 的 path 取代。
serverName
交握伺服器名稱
TLS 或 REALITY 交握使用的名稱。應依照伺服器端設定填寫,不要自動替換成節點備註。
shortId
REALITY 短識別碼
由伺服器設定提供。複製時要保留完整的十六進位字元,不應自行產生或補齊。
錯誤:remote error: tls: handshake failure
原因與解法:TLS 交握參數未獲遠端接受。檢查 serverName、系統時間、安全層選擇及伺服器憑證的對應關係。
錯誤:REALITY: processed invalid connection
原因與解法:REALITY 驗證參數不相符。重新核對公鑰、shortId、serverName、指紋與 Vision 流量控制,不要只替換伺服器位址。
錯誤:websocket: bad handshake
原因與解法:WebSocket 升級要求未被正確接受。檢查 path、Host、連接埠與 TLS 開關,並確認沒有將 gRPC 節點依 WebSocket 匯入。
第四輪檢查:訂閱是否過期、快取是否仍是舊節點
訂閱連結可以開啟,不代表其中每個節點仍然有效。伺服器端可能已更換位址、連接埠或 UUID,但用戶端清單仍保留上次更新的快取。手動編輯舊節點只能暫時修補,後續更新訂閱時還可能被覆蓋。
在 v2rayN 中,先進入「訂閱群組」核對訂閱位址,再執行「訂閱群組」→「更新全部訂閱」。如果目前網路無法直接存取訂閱位址,但已有一個節點可用,可依實際環境選擇透過代理更新。v2rayNG 中可從左上角選單進入「訂閱群組設定」,儲存位址後返回節點清單,再執行「更新訂閱」。
-
保留舊清單
更新前記下問題節點的位址、連接埠與更新時間。不要先刪除全部設定,以免失去前後比對的依據。
-
核對連結
進入訂閱群組設定,確認連結沒有換行、空格或複製不完整。若服務提供者給了新位址,應替換舊位址後儲存。
-
更新訂閱
執行更新全部訂閱,觀察記錄中的 HTTP 狀態與耗時。超過 30 秒仍無回應時,應分別測試直接連線更新與透過代理更新。
-
比較欄位
開啟更新後的節點詳細資料,與舊記錄比較 address、port、id、network 和 security,確認伺服器端是否發生遷移。
-
重新測試三次
選擇一個更新後的節點,間隔 5 秒執行三次實際連線測試。若一次成功、兩次逾時,應繼續檢查網路丟包與伺服器負載。
第五輪檢查:用交叉測試界定本機網路與伺服器範圍
完成用戶端與節點欄位檢查後,才進入網路範圍判斷。最簡單的交叉測試是保持節點設定不變,只更換連線網路。例如桌面端從目前寬頻切換到手機熱點,Android 端則從目前無線網路切換到行動網路。若更換網路後立即恢復,故障更可能位於原網路的 DNS、路由或連接埠存取路徑。
反過來,若同一節點在兩個獨立網路上都逾時,而同一用戶端的其他節點可以正常連線,就應將注意力轉向該節點伺服器。此時繼續重裝用戶端、反覆切換系統代理,通常不會改變結果。
| 測試結果 | 較可能的位置 | 下一步 |
|---|---|---|
| 所有節點在目前網路失敗,切換網路後恢復 | 原網路、DNS 或出口路徑 | 恢復自動 DNS,重新啟動網路設備,再測試遠端連接埠 |
| 只有一個節點在兩個網路上都失敗 | 節點參數或伺服器 | 重新更新訂閱,並確認伺服器程序與監聽連接埠 |
| 節點連線成功,但瀏覽器仍直接連線 | 系統代理或應用程式代理設定 | 重新啟用系統代理,確認瀏覽器沒有設定固定的代理例外 |
| 連線數秒後反覆中斷 | 交握參數、網路抖動或伺服器負載 | 查看中斷前的記錄,核對 TLS、REALITY 與傳輸欄位 |
- 遠端網域無法解析時,先確認節點位址是否仍然有效,再測試更換 DNS;不要直接將網域改成解析出的 IP,因為 TLS 或 REALITY 仍可能依賴網域名稱。
- 遠端連接埠明確拒絕連線時,伺服器維護者應檢查程序是否執行、監聽位址是否正確,以及入站連接埠是否已放行。
- 遠端連接埠可連線但協定交握失敗時,重點比較用戶端與伺服器的協定、UUID、安全層與傳輸欄位。
- 伺服器記錄完全沒有收到連線,而用戶端持續逾時時,問題通常發生在抵達伺服器之前的網路路徑。
常見追問:測速、系統代理與更新後的異常
完成固定順序後,多數問題可以歸入本機監聽、節點參數、訂閱快取、網路路徑或伺服器狀態其中一類。以下幾種現象容易互相混淆,需要分別處理。
節點延遲顯示逾時,但網頁可以開啟,算是故障嗎?
不一定。延遲測試使用的目標可能與實際網頁要求不同。先執行實際連線測試,再連續存取兩個不同網站;若記錄中有穩定流量且頁面正常,不應只因紅色延遲就刪除節點。
訂閱更新失敗並顯示逾時怎麼辦?
先確認訂閱位址完整,再分別嘗試直接連線更新與透過代理更新。v2rayN 可在訂閱群組設定中檢查更新方式;等待 30 秒仍無回應時,查看記錄中的網域解析與 HTTP 狀態。
顯示連線成功,為什麼瀏覽器仍無法開啟?
在 v2rayN 系統匣選單中重新選擇自動設定系統代理,並核對實際監聽連接埠。若瀏覽器曾設定固定代理,位址應為 127.0.0.1,連接埠必須與用戶端設定一致。
更新用戶端後所有節點都逾時怎麼辦?
先開啟「設定」→「參數設定」→「Core 類型」確認核心選擇,再讀取啟動記錄。若舊設定使用 10808,而新設定監聽了其他連接埠,還要同步修改系統代理或應用程式代理。
v2rayNG 和 v2flyNG 的測試結果不同,正常嗎?
兩者使用的核心與預設選項可能不同。比較時應保持相同節點、相同網路與相同傳輸參數,並分別查看記錄中的核心版本與交握結果,不能只比較介面上的延遲數字。