本文適用於 Windows 版 v2rayN 啟動核心失敗、日誌出現監聽衝突,或變更連接埠後瀏覽器仍無法連線的情況。依序讀取錯誤中的位址、找出程序、釋放或更換連接埠、更新系統代理並測試請求;同時確認問題是連接埠占用還是系統保留連接埠,避免誤關程序或一再更換節點。
先確認:錯誤發生在本機監聽
v2rayN 是圖形介面用戶端,實際負責監聽連接埠並處理代理連線的是啟動的核心。瀏覽器使用系統代理時,通常會先連到本機位址,例如 127.0.0.1:10808。若這個入口未成功建立,即使訂閱正常、節點設定完整,瀏覽器仍無法透過此入口傳送請求。
開啟 v2rayN 主視窗的日誌區域,找到最近一次啟動失敗的訊息。記下錯誤中的協定、位址和連接埠,不要只看最後一行「啟動失敗」。10808 是常見範例,不代表所有版本和設定都使用此連接埠;排查時請以日誌中的連接埠為準。
錯誤:Only one usage of each socket address (protocol/network address/port) is normally permitted.
原因與解法:Windows 通訊端位址衝突,常見原因是 TCP 連接埠已被監聽。先找出監聽程序,再決定要關閉重複執行的用戶端,或變更 v2rayN 的連接埠。
錯誤:An attempt was made to access a socket in a way forbidden by its access permissions.
原因與解法:系統拒絕繫結,不代表一定有程序占用。若查不到監聽程序,請繼續檢查系統排除的連接埠範圍與安全性原則。
相較之下,connection refused 通常表示某次連線遭到拒絕,需依目標位址判斷;連線到本機舊連接埠遭拒,與連線到遠端節點遭拒是不同問題。若只有連往節點位址時發生逾時,也不能直接歸因於本機連接埠。
查詢占用情況:從連接埠找出程序路徑
以下指令請在 Windows PowerShell 中執行。先查詢 10808 的 TCP 監聽狀態;若沒有輸出,表示這次查詢未找到該連接埠的 TCP 監聽程序,但不代表連接埠一定可以繫結。
Get-NetTCPConnection -State Listen -LocalPort 10808 -ErrorAction SilentlyContinue |
Select-Object LocalAddress, LocalPort, State, OwningProcess
請留意 LocalAddress 與 OwningProcess。若監聽位址是 0.0.0.0,代表涵蓋所有 IPv4 本機介面,可能與繫結至 127.0.0.1 的相同連接埠監聽發生衝突。IPv6 的 :: 是否與 IPv4 衝突也會受通訊端選項影響,因此請保留完整位址資訊。
接著查詢對應程序的名稱、執行檔路徑和命令列。下方指令會直接從查詢結果擷取程序識別碼,不必手動輸入 PID:
$listeners = Get-NetTCPConnection -State Listen -LocalPort 10808 -ErrorAction SilentlyContinue
$ownerIds = $listeners | Select-Object -ExpandProperty OwningProcess -Unique
foreach ($ownerId in $ownerIds) {
Get-CimInstance Win32_Process -Filter "ProcessId = $ownerId" |
Select-Object ProcessId, Name, ExecutablePath, CommandLine
}
| 查詢結果 | 代表的情況 | 後續處理 |
|---|---|---|
| 路徑位於另一個 v2rayN 資料夾 | 可能是從不同資料夾重複啟動用戶端 | 從通知區域結束不需要的用戶端,再查詢連接埠 |
| 名稱為 xray.exe,路徑位於用戶端資料夾 | 可能是目前使用的核心,也可能是殘留的核心程序 | 先結束用戶端,再確認該監聽是否隨之消失 |
| 路徑屬於其他已知程式 | 兩個程式使用了相同的本機連接埠 | 保留需要執行的程式,為另一個程式更換連接埠 |
| 查不到 TCP 監聽結果 | 可能是連接埠保留、UDP 衝突,或程序已短暫結束 | 確認日誌中的協定,並檢查系統排除範圍 |
若程序路徑顯示空白,可用系統管理員身分重新開啟 PowerShell 並查詢詳細資訊。不要只憑程序名稱就結束系統服務,也不要把所有核心程序都視為殘留程序。正常執行中的核心本來就會占用用戶端設定的監聽連接埠。
釋放連接埠:先結束重複執行的用戶端
若查到同一用戶端的另一個執行個體,建議先透過工作列通知區域的系統匣選單選擇「結束」。按主視窗的關閉按鈕可能只會隱藏視窗,監聽仍會持續。結束後再次查詢連接埠,確認監聽已消失,再啟動要保留的用戶端。
- 記下占用程序的 PID、檔案路徑和命令列,確認它屬於哪個程式資料夾。
- 透過該程式正常的結束方式關閉,等候幾秒後重新查詢
10808。 - 若用戶端已結束,但確認屬於該資料夾的核心仍在執行,可在工作管理員的「詳細資料」中核對 PID 後結束該程序。
- 只啟動一個 v2rayN,檢查日誌是否仍出現相同的繫結錯誤。
變更監聽連接埠:以 11808 為替代範例
若原連接埠必須留給其他程式使用,可將 v2rayN 的本機監聽連接埠改為 11808。這只是替代範例,無法保證你的電腦上未被占用。請先使用前面的指令查詢 11808,必要時也檢查後文提到的系統排除範圍。
-
記下原有設定
記下目前的連接埠、監聽位址和系統代理狀態。本文範例會將
127.0.0.1:10808改為127.0.0.1:11808,不會變更節點的遠端連接埠。 -
開啟參數設定
前往「設定」→「參數設定」,在基本設定相關區域找到本機監聽連接埠。介面可能顯示「本機混合監聽連接埠」或「本機監聽連接埠」,請以目前版本的實際欄位為準。
-
輸入新的連接埠
將對應的本機入口改為
11808。若目前介面分別提供 SOCKS 與 HTTP 入口,請逐一確認各欄位,勿將兩個獨立監聽設定為相同連接埠;混合入口則可在同一連接埠接收兩種協定。 -
儲存並重新啟動
儲存設定,讓核心重新載入。若沒有自動重新啟動,請結束並重新開啟 v2rayN,再查詢
11808的監聽程序,確認其路徑屬於這次啟動的用戶端。 -
更新系統代理
在主視窗或系統匣的「系統代理」選單中,先選擇「清除系統代理」,再選擇「自動設定系統代理」。接著確認系統代理的實際位址已指向新的連接埠。
本機監聽連接埠與節點遠端連接埠是兩項獨立設定。節點編輯視窗中的 443 等連接埠屬於遠端伺服器,修改它通常會造成節點連線失敗,無法解決本機 10808 被占用的問題。使用自訂設定時,還要確認實際生效的入站設定;一般參數頁不一定會覆寫自訂入站設定。
同步代理設定:找出仍連線至舊連接埠的應用程式
成功更換連接埠後,常見的第二個問題是應用程式仍連線至舊入口。Windows 11 可前往「設定」→「網路和網際網路」→「Proxy」→「手動設定 Proxy」確認位址和連接埠;Windows 10 的相應路徑為「設定」→「網路和網際網路」→「Proxy」。一般本機 HTTP 代理範例應指向 127.0.0.1 和 11808。
- 使用系統代理的瀏覽器:更新系統代理後重新開啟網頁;若瀏覽器安裝了獨立的代理擴充功能,也請檢查擴充功能設定。
- 手動設定代理的應用程式:將應用程式內的
127.0.0.1:10808改為新的入口,並確認它使用的是 HTTP 還是 SOCKS。 - 命令列環境:確認
HTTP_PROXY、HTTPS_PROXY、ALL_PROXY是否仍指向舊連接埠。已開啟的終端機不會自動套用之後變更的環境變數。 - 使用 TUN 的情況:系統代理與 TUN 是不同的流量接管方式。排查本機入口時,先固定一種測試方式,不要同時變更多項路由和接管設定。
可先執行下方指令,查看目前 PowerShell 工作階段中的代理環境變數。若發現舊值,請回到設定該值的終端機設定檔或系統環境變數介面修改,不要只重新整理瀏覽器。
Get-ChildItem Env: |
Where-Object Name -Match '^(HTTP_PROXY|HTTPS_PROXY|ALL_PROXY|NO_PROXY)$'
驗證結果:分別測試監聽與對外連線
先確認新連接埠已開始監聽,再測試透過該連接埠發出請求。以下範例假設 11808 是支援 HTTP 的混合入口或 HTTP 入口;若它是獨立 SOCKS 入口,請改用後面的 SOCKS 指令。
Get-NetTCPConnection -State Listen -LocalPort 11808 -ErrorAction SilentlyContinue |
Select-Object LocalAddress, LocalPort, OwningProcess
Test-NetConnection -ComputerName 127.0.0.1 -Port 11808
curl.exe --noproxy "" --proxy http://127.0.0.1:11808 --connect-timeout 10 --max-time 20 -I https://example.com/
TcpTestSucceeded : True 只代表 TCP 連線成功,不表示監聽程序一定是 v2rayN,也不代表遠端節點可用。請繼續核對程序路徑,並查看發出請求時核心日誌是否有相應紀錄。HTTP 回應標頭代表請求已收到回應;實際狀態碼仍須依目標網站判斷。
curl.exe --noproxy "" --proxy socks5h://127.0.0.1:11808 --connect-timeout 10 --max-time 20 -I https://example.com/
SOCKS 範例中的 socks5h 表示將目標主機名稱交由代理解析。請依入口類型擇一使用兩條指令,不要為了讓測試通過而任意變更節點協定。若明確指定代理的請求成功,但瀏覽器仍失敗,請優先檢查系統代理與瀏覽器的個別設定,不要再次變更監聽連接埠。
找不到占用程序:檢查系統保留連接埠
若出現存取權限相關的繫結錯誤,而 TCP 查詢始終沒有結果,可在系統管理員終端機檢查 Windows 排除的連接埠範圍。虛擬化或網路元件可能會建立這些範圍。連接埠若落在其中,即使沒有使用者程序監聽,也可能無法繫結。
netsh interface ipv4 show excludedportrange protocol=tcp
netsh interface ipv6 show excludedportrange protocol=tcp
輸出會以起始與結束連接埠列出範圍。例如某列若顯示 11800 到 11899,則 11808 也在此範圍內;這只是讀取清單的範例,不代表你的裝置一定保留了這段範圍。請選擇範圍之外且沒有監聽程序的連接埠,儲存設定後再測試;不要直接刪除來源不明的系統保留項目。
- 若日誌標示
udp,請使用Get-NetUDPEndpoint -LocalPort 10808 -ErrorAction SilentlyContinue檢查 UDP 占用情況,不要只查詢 TCP。 - 若繫結位址不是本機現有的位址,應檢查監聽位址設定,而不是繼續結束程序。
- 若更換多個未保留且無人監聽的連接埠仍遭拒絕,請檢查安全性軟體事件和組織的裝置原則,並保留完整日誌供系統管理員判斷。
連接埠衝突常見問題
改成 11808 後,為什麼網頁還是打不開?
先確認新的連接埠由正確的核心監聽,再到「系統代理」中清除並重新自動設定。檢查瀏覽器擴充功能、手動代理和環境變數是否仍設定為 10808;使用明確指定新連接埠的 curl 指令,區分本機入口問題與節點故障。
每次開機都發生衝突,難道要一直手動結束程序嗎?
不必把結束程序當成固定步驟。請檢查工作管理員的「啟動應用程式」和工作排程器,確認是否有兩份用戶端自動啟動。保留一個明確的啟動方式;若兩個程式都必須執行,請為它們設定不同的連接埠。
更換節點或更新訂閱能解決 10808 被占用的問題嗎?
無法直接釋放本機監聽連接埠。訂閱提供的是節點設定,節點的遠端連接埠也不等於本機入站連接埠。請先確認核心已成功繫結本機連接埠,再測試實際連線延遲與節點是否可用。
以系統管理員身分執行就成功了,之後都得這樣啟動嗎?
請先查明兩次執行的差異。一般的本機迴送代理監聽通常不需要系統管理員權限;以系統管理員身分執行可能改變安全性原則的適用情況,也可能只是第二次啟動時原占用程序已結束。請重新核對監聽程序、保留範圍和日誌,不要用提高權限掩蓋真正原因。