v2rayN 本機連接埠占用

v2rayN 啟動時若提示連接埠被占用,先找出占用 10808 等本機連接埠的程序,再到參數設定改用未占用的連接埠,並同步更新系統代理。

本文重點

本文適用於 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 並查詢詳細資訊。不要只憑程序名稱就結束系統服務,也不要把所有核心程序都視為殘留程序。正常執行中的核心本來就會占用用戶端設定的監聽連接埠。

釋放連接埠:先結束重複執行的用戶端

若查到同一用戶端的另一個執行個體,建議先透過工作列通知區域的系統匣選單選擇「結束」。按主視窗的關閉按鈕可能只會隱藏視窗,監聽仍會持續。結束後再次查詢連接埠,確認監聽已消失,再啟動要保留的用戶端。

  1. 記下占用程序的 PID、檔案路徑和命令列,確認它屬於哪個程式資料夾。
  2. 透過該程式正常的結束方式關閉,等候幾秒後重新查詢 10808。
  3. 若用戶端已結束,但確認屬於該資料夾的核心仍在執行,可在工作管理員的「詳細資料」中核對 PID 後結束該程序。
  4. 只啟動一個 v2rayN,檢查日誌是否仍出現相同的繫結錯誤。

變更監聽連接埠:以 11808 為替代範例

若原連接埠必須留給其他程式使用,可將 v2rayN 的本機監聽連接埠改為 11808。這只是替代範例,無法保證你的電腦上未被占用。請先使用前面的指令查詢 11808,必要時也檢查後文提到的系統排除範圍。

  1. 記下原有設定

    記下目前的連接埠、監聽位址和系統代理狀態。本文範例會將 127.0.0.1:10808 改為 127.0.0.1:11808,不會變更節點的遠端連接埠。

  2. 開啟參數設定

    前往「設定」→「參數設定」,在基本設定相關區域找到本機監聽連接埠。介面可能顯示「本機混合監聽連接埠」或「本機監聽連接埠」,請以目前版本的實際欄位為準。

  3. 輸入新的連接埠

    將對應的本機入口改為 11808。若目前介面分別提供 SOCKS 與 HTTP 入口,請逐一確認各欄位,勿將兩個獨立監聽設定為相同連接埠;混合入口則可在同一連接埠接收兩種協定。

  4. 儲存並重新啟動

    儲存設定,讓核心重新載入。若沒有自動重新啟動,請結束並重新開啟 v2rayN,再查詢 11808 的監聽程序,確認其路徑屬於這次啟動的用戶端。

  5. 更新系統代理

    在主視窗或系統匣的「系統代理」選單中,先選擇「清除系統代理」,再選擇「自動設定系統代理」。接著確認系統代理的實際位址已指向新的連接埠。

本機監聽連接埠與節點遠端連接埠是兩項獨立設定。節點編輯視窗中的 443 等連接埠屬於遠端伺服器,修改它通常會造成節點連線失敗,無法解決本機 10808 被占用的問題。使用自訂設定時,還要確認實際生效的入站設定;一般參數頁不一定會覆寫自訂入站設定。

同步代理設定:找出仍連線至舊連接埠的應用程式

成功更換連接埠後,常見的第二個問題是應用程式仍連線至舊入口。Windows 11 可前往「設定」→「網路和網際網路」→「Proxy」→「手動設定 Proxy」確認位址和連接埠;Windows 10 的相應路徑為「設定」→「網路和網際網路」→「Proxy」。一般本機 HTTP 代理範例應指向 127.0.0.1 和 11808。

可先執行下方指令,查看目前 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 也在此範圍內;這只是讀取清單的範例,不代表你的裝置一定保留了這段範圍。請選擇範圍之外且沒有監聽程序的連接埠,儲存設定後再測試;不要直接刪除來源不明的系統保留項目。

連接埠衝突常見問題

改成 11808 後,為什麼網頁還是打不開?

先確認新的連接埠由正確的核心監聽,再到「系統代理」中清除並重新自動設定。檢查瀏覽器擴充功能、手動代理和環境變數是否仍設定為 10808;使用明確指定新連接埠的 curl 指令,區分本機入口問題與節點故障。

每次開機都發生衝突,難道要一直手動結束程序嗎?

不必把結束程序當成固定步驟。請檢查工作管理員的「啟動應用程式」和工作排程器,確認是否有兩份用戶端自動啟動。保留一個明確的啟動方式;若兩個程式都必須執行,請為它們設定不同的連接埠。

更換節點或更新訂閱能解決 10808 被占用的問題嗎?

無法直接釋放本機監聽連接埠。訂閱提供的是節點設定,節點的遠端連接埠也不等於本機入站連接埠。請先確認核心已成功繫結本機連接埠,再測試實際連線延遲與節點是否可用。

以系統管理員身分執行就成功了,之後都得這樣啟動嗎?

請先查明兩次執行的差異。一般的本機迴送代理監聽通常不需要系統管理員權限;以系統管理員身分執行可能改變安全性原則的適用情況,也可能只是第二次啟動時原占用程序已結束。請重新核對監聽程序、保留範圍和日誌,不要用提高權限掩蓋真正原因。

下載 v2rayN