v2rayN 連接埠被占用怎麼辦?查出衝突程序並變更本機監聽連接埠

v2rayN 啟動時出現錯誤?先查出占用 10808/10809 的程序,再到參數設定改用未占用的本機連接埠。

本文重點

適用於 Windows 版 v2rayN 無法啟動核心,且日誌出現 bind 或 address already in use 的情況。先判斷是連接埠衝突還是權限限制,再用 netstat 或 PowerShell 找出監聽程序。確認程序用途後,關閉重複執行的執行個體,或變更本機監聽連接埠;最後同步系統代理與應用程式設定並測試連線。

先看日誌:確認是否本機監聽失敗

v2rayN 視窗能開啟,不代表代理核心已正常啟動。介面用來管理設定,核心則負責接收本機連線並連接遠端伺服器。如果日誌顯示無法監聽 127.0.0.1:10808,問題出在本機入口;此時反覆更新訂閱或切換 VMess、VLESS 節點,通常無法解決監聽失敗。

先查看主視窗的日誌區域,記下完整錯誤訊息,尤其是位址、連接埠及最後的系統錯誤。不同核心、系統語言與版本的錯誤文字可能不同,以下列出常見的錯誤關鍵字,不必逐字完全相同。

bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.

原因與解法:相同的監聽位址與連接埠發生衝突。先查出對應的 PID,確認是否為另一個 v2rayN 執行個體或其他本機服務,再決定要結束程序還是更換連接埠。

bind: address already in use

原因與解法:目標通訊端已被占用。依照日誌中的實際連接埠查詢監聽程序,不要只檢查慣用的 10808。

bind: An attempt was made to access a socket in a way forbidden by its access permissions.

原因與解法:系統拒絕繫結,可能與連接埠排除範圍或安全性原則有關,不一定是已有程序正在監聽。若查不到 PID,請繼續檢查系統保留連接埠。

確認連接埠:10808 與 10809 不一定會同時使用

部分舊版或舊設定會以 10808 作為 SOCKS 入口、10809 作為 HTTP 入口;另一些版本則使用單一混合監聽連接埠,同時接收 HTTP 與 SOCKS 請求。請以目前「設定」→「參數設定」中的欄位及啟動日誌為準,不要照著教學額外建立原本不存在的入口。

10808
常見的本機入口,請以目前設定為準
10809
部分舊設定中的 HTTP 入口
11808
本文示範的備選連接埠,使用前請先檢查是否已占用

本機監聽連接埠與伺服器連接埠是不同設定。節點編輯視窗中的「連接埠」是連線至遠端伺服器的參數,無法用來解決本機 10808 衝突。訂閱提供的伺服器位址、使用者 ID、傳輸方式與 TLS 設定也應維持不變。

判斷原則:只修改發生衝突的本機入口

日誌回報 10808,就先找出 10808 的監聽程序;只有目前設定確實啟用了獨立 HTTP 入口,才需要一併檢查 10809。修改節點的遠端連接埠,反而會引發另一種連線問題。

找出程序:用 PID 確認哪個程序正在監聽

開啟 Windows「終端機」或「命令提示字元」,執行以下兩個命令。一般查詢不必先以系統管理員身分執行;若看不到程序路徑,再以系統管理員身分開啟終端機查詢。命令只會讀取網路狀態,不會結束程序。

netstat -ano -p tcp | findstr ":10808"
netstat -ano -p tcp | findstr ":10809"

請查看本機位址欄是否以目標連接埠結尾,以及狀態是否為 LISTENING。例如 127.0.0.1:10808、0.0.0.0:10808 或 [::]:10808。不要把遠端位址中的 10808,或狀態為 TIME_WAIT 的舊連線,誤認為目前的監聽程序。

最後一欄是 PID。以下僅示範輸出格式,並非實際裝置的查詢結果;其中 6420 只是用來說明如何接著查詢程序名稱,實際操作時請改用畫面上顯示的 PID。

TCP    127.0.0.1:10808    0.0.0.0:0    LISTENING    6420

tasklist /FI "PID eq 6420"

用 PowerShell 精確篩選連接埠

若不想逐行辨認輸出內容,可以在 PowerShell 依本機連接埠與監聽狀態篩選。沒有輸出通常表示查詢當下沒有符合條件的 TCP 監聽項目,但不代表連接埠一定能成功繫結,也無法排除程序正在反覆啟動。

Get-NetTCPConnection -State Listen -LocalPort 10808,10809 -ErrorAction SilentlyContinue |
  Select-Object LocalAddress,LocalPort,OwningProcess

Get-Process -Id 6420 | Select-Object Id,ProcessName,Path

解除衝突:結束重複執行的執行個體,或修改本機連接埠

如果占用連接埠的是重複啟動的客戶端,建議先在系統匣圖示上按右鍵,選擇「結束」。按下視窗右上角的關閉按鈕,可能只會將視窗縮到系統匣,監聽連接埠仍會維持開啟。結束後重新查詢,確認原有監聽項目已消失,再啟動要保留的 v2rayN。

  1. 記下目前設定:開啟「設定」→「參數設定」,找到本機監聽相關選項。不同版本可能會顯示「本機監聽連接埠」或「本機混合監聽連接埠」等欄位;請記下連接埠、監聽位址,以及是否有獨立的 HTTP 入口。
  2. 檢查備選連接埠:執行下方命令檢查 11808;只有需要第二個獨立入口時,才檢查 11809。確認沒有監聽項目只是第一步,儲存後仍須確認核心是否成功啟動。
  3. 修改本機入口:將發生衝突的本機監聽連接埠改為 11808。如果介面明確提供獨立 HTTP 連接埠,且該入口也有衝突,可以為它另設一個未占用的連接埠,例如 11809;使用混合連接埠時,不必照搬第二個設定。
  4. 儲存並重新啟動:儲存參數,讓設定重新載入;若日誌沒有新增啟動記錄,請結束並重新開啟 v2rayN,再確認新連接埠的監聽狀態。
  5. 維持監聽範圍:僅在本機使用時,請保留回送位址;不要為了解決連接埠占用而啟用「允許來自區域網路的連線」。擴大監聽範圍無法排除連接埠衝突。
Get-NetTCPConnection -State Listen -LocalPort 11808,11809 -ErrorAction SilentlyContinue |
  Select-Object LocalAddress,LocalPort,OwningProcess

11808 和 11809 只是方便說明的備選連接埠,並非固定的安全連接埠。如果已被其他服務使用,可改選其他未占用且不在系統排除範圍內的高號連接埠。連接埠衝突與路由分流是不同層級的問題,排除故障時不必同時修改 GeoSite 規則、DNS 或 TUN 模式,以免增加變因。

找不到監聽程序:檢查 Windows 連接埠排除範圍

如果 netstat 查不到監聽程序,但日誌持續出現權限相關的 bind 錯誤,可在系統管理員終端機查看 Windows 的 TCP 排除範圍。虛擬化、容器與系統網路元件可能會預留連接埠;預留的連接埠不一定會對應到可見的監聽 PID。

netsh interface ipv4 show excludedportrange protocol=tcp
netsh interface ipv6 show excludedportrange protocol=tcp

輸出內容會列出起始與結束連接埠,兩端都包含在範圍內。假設某一列顯示 11700 至 11799,11750 就落在此範圍內;這只是說明如何讀取結果,不代表系統一定保留了這段範圍。請依照日誌中的實際監聽位址,檢查相應位址家族的結果。

確認修復結果:同步系統代理與手動代理設定

新連接埠成功開始監聽後,也要讓使用代理的應用程式改連新的入口。否則即使核心已恢復,瀏覽器仍可能連到舊的 10808,導致網頁無法開啟。請先在 v2rayN 底部的「系統代理」選單中選擇「清除系統代理」,再選擇「自動設定系統代理」,讓客戶端依目前設定重新寫入代理位址。

以混合入口 127.0.0.1:11808 為例,可在 Windows 終端機透過 HTTP 代理發出請求。此處使用 curl.exe,避免部分 PowerShell 環境將 curl 解讀為其他命令。如果你的設定使用獨立 HTTP 入口,請將命令中的連接埠改為該入口的實際值。

curl.exe --proxy http://127.0.0.1:11808 --connect-timeout 10 --max-time 20 -I https://example.com/

命令中的 10 秒是連線逾時上限,20 秒是整個請求的時間上限,並非速度測試結果。收到最終目標回傳的 HTTP 回應,表示這次請求的本機代理入口與後續連線可用;只有代理通道建立的提示,還不能證明目標網頁已成功回應。單次成功也不代表所有應用程式都已使用系統代理。

  1. 檢查監聽狀態:確認新連接埠有 LISTENING 項目,且 PID 屬於目前使用的客戶端核心。
  2. 檢查日誌:確認原本的 bind 錯誤不再出現;若改為遠端連線逾時,請轉而檢查節點是否可用,不要繼續修改本機連接埠。
  3. 檢查應用程式設定:瀏覽器擴充功能、開發工具、終端機環境變數及其他手動代理設定,不一定會隨系統代理一併更新,請逐項改用新的位址。
  4. 確認重新啟動結果:結束後再啟動一次,確認連接埠設定已儲存,並檢查系統啟動項目是否會再次啟動另一個客戶端執行個體。

常見問題:更換連接埠後仍無法使用

視窗已關閉,為什麼 10808 仍在監聽?

先確認系統匣是否仍有 v2rayN 圖示。關閉視窗可能只是將程式縮到系統匣,請按右鍵選擇「結束」。接著重新查詢 PID;如果仍有監聽項目,請確認是否有從其他資料夾啟動的執行個體或殘留核心,再處理已確認所屬的程序。

查不到 10809,是不是設定壞了?

不一定。如果目前版本只設定了一個混合入口,10809 本來就可能沒有監聽。請前往「設定」→「參數設定」確認入口類型;HTTP 和 SOCKS 請求都應使用目前實際啟用的連接埠,而非依賴舊教學中的預設值。

改用 11808 後,瀏覽器能用但終端機不行?

檢查終端機的 HTTP_PROXY、HTTPS_PROXY、ALL_PROXY 是否仍指向舊連接埠。代理環境變數不會因客戶端變更連接埠而自動更新;修改後通常需要重新開啟終端機。也可以先使用上文含 --proxy 的命令明確指定入口,排除環境變數的影響。

每次開機都發生衝突,得一直更換連接埠嗎?

不必。請先到「工作管理員」→「啟動應用程式」檢查啟動項目,並查看客戶端本身的開機啟動設定,只保留一個需要的啟動入口。如果另一個項目是必須執行的本機服務,請為兩者指定不同連接埠並固定使用,之後再同步各應用程式的代理設定。

下載客戶端依平台選擇安裝程式