適用於 Windows 上的 v2rayN 啟動後出現 bind、address already in use 或連接埠存取遭拒的情況。先從記錄確認本機連接埠,再用 PowerShell 找出監聽程序;若是重複執行的執行個體,請正常關閉;若由其他服務占用,則改用未使用的連接埠。最後同步更新系統代理與手動代理位址,並依序確認核心監聽、代理交握及網頁請求是否正常。
一、先從記錄確認:衝突的是本機連接埠
先開啟 v2rayN 主畫面的記錄區,重新啟動核心一次,並保留包含 listen、bind 及位址與連接埠的完整錯誤訊息。本文以 127.0.0.1:10808 為例;若記錄顯示其他連接埠,請一併替換後續指令中的連接埠。請勿只依教學中的預設值判斷。
bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.
原因與解法:相同或重疊的監聽位址、通訊協定與連接埠已遭占用。先查詢監聽程序,確認其身分後,正常關閉重複執行的執行個體,或變更本機入站連接埠。
bind: An attempt was made to access a socket in a way forbidden by its access permissions.
原因與解法:連接埠可能遭系統保留,或受到安全性原則限制,不一定有一般監聽程序。先查詢監聽狀況,再檢查排除連接埠範圍,請勿直接關閉防火牆。
這類錯誤發生在本機接收代理請求的入口,尚未進入遠端節點連線階段。修改訂閱、切換 VMess 或 VLESS、調整遠端伺服器連接埠,都無法釋放遭占用的本機 10808。此外,本機連接埠不必與節點伺服器端的連接埠相同。
判斷原則:先修復監聽,再測試節點
記錄仍顯示本機 bind 失敗時,請先暫停節點延遲測試。先確認指定連接埠已成功進入監聽狀態,之後測試節點才有排查意義。
二、用 PowerShell 找出占用 10808 的程序
開啟 Windows PowerShell,先查詢 TCP 監聽記錄。以下指令只比對本機連接埠,不會把「連線至遠端 10808」的一般連線誤判為監聽衝突。若沒有結果,畫面會維持空白;這只代表查詢當下沒有符合條件的 TCP 監聽記錄。
Get-NetTCPConnection -State Listen -LocalPort 10808 -ErrorAction SilentlyContinue |
Select-Object LocalAddress, LocalPort, State, OwningProcess
請留意 LocalAddress 與 OwningProcess。0.0.0.0 代表監聽所有 IPv4 位址,可能與迴路位址上的同一連接埠監聽發生衝突;:: 是 IPv6 通用位址,也須考量雙堆疊行為。即使位址不是 127.0.0.1,也不要忽略該筆記錄。
# 假設上一步傳回的 OwningProcess 是 6240,請依實際結果替換
Get-Process -Id 6240 |
Select-Object Id, ProcessName, Path
Get-CimInstance Win32_Process -Filter "ProcessId = 6240" |
Select-Object ProcessId, ParentProcessId, ExecutablePath, CommandLine
6240 僅為示範用的 PID,並非固定的程序編號。若路徑或命令列為空白,可改用系統管理員權限重新查詢。若查到的是核心程序,也請檢查其父程序:正在執行的 v2rayN 本來就會占用代理連接埠,不能只看程序名稱就認定它異常。
- 同一套 v2rayN 正常運作的核心:先確認記錄是否為舊資料,以及目前的請求能否正常通過,避免誤關正常連線。
- 從其他資料夾啟動的重複執行個體:找到對應的系統匣圖示並正常結束。只關閉主視窗可能只是將程式最小化至系統匣。
- 其他服務程式:保留其監聽設定,優先變更 v2rayN 的本機連接埠,避免影響現有服務。
- 路徑或用途不明:先在工作管理員查看檔案位置與所屬服務,請勿只憑 PID 就貿然終止程序。
三、沒有監聽記錄:檢查 UDP 與系統保留連接埠
TCP 與 UDP 是不同的傳輸通訊協定。同一個數字連接埠可分別供 TCP 與 UDP 使用;只有 UDP 記錄,不能直接證明 TCP 監聽發生衝突。若記錄明確指出 UDP 入站繫結失敗,請再查詢 UDP 端點,並依傳回的 PID 繼續追查。
Get-NetUDPEndpoint -LocalPort 10808 -ErrorAction SilentlyContinue |
Select-Object LocalAddress, LocalPort, OwningProcess
若錯誤是存取遭拒,而 TCP、UDP 都查不到對應記錄,請再查看 Windows 的排除連接埠範圍。虛擬化、容器與系統網路元件都可能影響這些範圍。以下指令只會查詢,不會修改設定;必要時請在系統管理員終端機中執行。
netsh interface ipv4 show excludedportrange protocol=tcp
netsh interface ipv6 show excludedportrange protocol=tcp
- 確認輸出中是否有某一組起始連接埠與結束連接埠涵蓋
10808,不要只搜尋完全相同的那一列。 - 若連接埠落在排除範圍內,請改選範圍以外的新連接埠,並再次確認沒有其他程序正在監聽。
- 若記錄涉及 UDP,查詢時請將
protocol=tcp替換為protocol=udp。 - 請勿任意刪除系統保留範圍,也不要為了解決本機代理問題而停用整套安全防護。若仍遭拒絕,請檢查安全軟體事件記錄與組織的裝置管理原則。
另一種情況是程式啟動後立即結束,因此查詢時已沒有監聽記錄。此時請重新啟動核心,並立即查看最新記錄與連接埠狀態。單次查無結果不足以證明連接埠一直未遭占用,更不能據此判定節點無法使用。
四、在參數設定中變更本機監聽連接埠
以下以將 10808 改為 10818 為例。新連接埠僅供示範,使用前仍須依前述步驟查詢監聽狀態並檢查保留範圍。v2rayN 不同介面的欄位可能標示為「本機混合監聽連接埠」,也可能分別列出 SOCKS、HTTP 連接埠,請依欄位實際用途設定。
-
記下原有設定
記下目前的本機連接埠、監聽位址與系統代理狀態。若瀏覽器擴充功能、終端機環境變數或開發工具有手動指定舊連接埠,也請一併記錄。
-
確認新連接埠可用
將查詢指令中的
10808改為10818,確認沒有衝突的監聽程序,並檢查新連接埠不在相關排除範圍內。 -
變更入站連接埠
前往「設定」→「參數設定」→「基本設定」,找到本機監聽連接埠欄位。若使用混合入站,請填入
10818;若介面分別設定 SOCKS 與 HTTP,請依各欄位設定不同連接埠,避免兩個獨立入站使用相同的 TCP 位址與連接埠。 -
儲存並重新啟動
按一下「確定」儲存設定,讓核心重新載入設定;若程式沒有自動重新啟動,請正常退出 v2rayN 後再開啟。查看這次啟動的記錄,確認沒有新的 bind 錯誤。
-
同步更新代理位址
在主畫面底部的「系統代理」中,先選擇「清除系統代理」,再選擇「自動設定系統代理」。接著將手動代理工具中的舊連接埠改為對應的新連接埠。
部分舊設定會將 SOCKS 與 HTTP 分別設在 10808 和 10809;混合入站則能在同一個連接埠接收這兩類代理請求。請勿套用「HTTP 永遠是 SOCKS 連接埠加一」的規則。若使用自訂設定,介面欄位可能不會控制該設定中的入站,請檢查實際載入的設定檔與記錄。
五、變更連接埠後,分三個層面確認代理是否恢復
先確認新連接埠確實由目前的核心監聽,再用命令列明確指定代理,最後檢查應用程式是否仍使用舊連接埠。如此即可分別排查「核心未啟動」、「節點連線失敗」與「應用程式設定未更新」。
Get-NetTCPConnection -State Listen -LocalPort 10818 -ErrorAction SilentlyContinue |
Select-Object LocalAddress, LocalPort, State, OwningProcess
# 僅適用於已將 10818 設定為 HTTP 或混合入站
curl.exe --proxy http://127.0.0.1:10818 --connect-timeout 10 --max-time 20 -I https://www.microsoft.com/
這裡明確使用 curl.exe,避免部分 PowerShell 環境將 curl 解讀為其他指令。測試目標是公開的 HTTPS 網頁;若目標無法連線,可改用已確認能存取的 HTTPS 位址。請勿在截圖或記錄中公開訂閱連結與節點認證資訊。
| 觀察結果 | 代表情況 | 下一步 |
|---|---|---|
| 10818 沒有監聽 | 設定未套用,或核心仍無法啟動 | 查看最新的啟動記錄,確認欄位設定與實際載入的設定 |
| 顯示無法連線至本機代理 | 位址、連接埠或入站通訊協定不符 | 核對監聽位址,並確認沒有將 SOCKS 連接埠當成 HTTP 使用 |
| CONNECT 顯示成功,但後續請求失敗 | 本機代理交握已完成,但後續連線仍有問題 | 繼續檢查節點、DNS、TLS 與目標網站的回應 |
| 收到最終 HTTP 回應 | 這次請求已透過指定的本機代理完成 | 接著檢查瀏覽器與其他應用程式的代理設定 |
若該連接埠只提供 SOCKS 服務,請使用以下指令;socks5h 會將目標網域名稱交由代理端解析。請依入站類型選擇 HTTP 或 SOCKS 測試,並非所有設定都必須同時支援兩者。
curl.exe --proxy socks5h://127.0.0.1:10818 --connect-timeout 10 --max-time 20 -I https://www.microsoft.com/
結論:本機請求成功後,再排查應用程式差異
若明確指定代理的測試成功,但瀏覽器仍無法使用,請先檢查瀏覽器的個別代理設定、舊連接埠快取與系統代理狀態,不要一再更換連接埠。請求進入本機代理,也不代表一定會經過遠端節點;最終的對外連線仍由路由分流規則決定。
六、連接埠遭占用與變更後的常見問題
占用連接埠的程序就是核心,可以直接結束嗎?
先透過路徑與父程序確認所屬項目。它可能是目前正常運作的核心,也可能屬於另一個 v2rayN 執行個體。請優先退出對應的管理程式;只有確認是殘留程序後,才考慮在工作管理員中將其結束,並重新查詢連接埠。
改成 10818 後,為什麼終端機仍顯示 10808 連線失敗?
檢查 HTTP_PROXY、HTTPS_PROXY、ALL_PROXY 環境變數,以及開發工具本身的代理設定。將連接埠改為正確的新連接埠,並重新開啟終端機;已啟動的程序通常不會自動讀取之後變更的環境變數。
重新啟動電腦後恢復正常,過一會兒又遭占用怎麼辦?
衝突發生時,重新記錄 PID、路徑與父程序,並檢查是否有兩份 v2rayN 或其他代理服務同時設定為開機啟動。只保留需要的啟動項目;若確實需要同時執行多個程式,請為各程式指定互不重疊的監聽連接埠。
啟用 TUN 後也出現連接埠錯誤,還能依本文排查嗎?
若記錄明確顯示本機入站 bind 失敗,仍可依本文檢查對應連接埠。若記錄指向虛擬網卡建立、驅動程式或路由權限,則屬於其他層面的問題。請先關閉 TUN,透過本機 HTTP 或 SOCKS 入站完成基本測試,再個別排查 TUN。
可以直接改用一個很大的連接埠嗎?
可以選擇未遭占用且不在保留範圍內的連接埠;有效連接埠號碼範圍為 1~65535。數字大不代表一定未遭占用,變更前仍須查詢,變更後也要同步更新所有手動代理設定。
完成排查後,請留下簡短記錄:衝突連接埠、占用程式的路徑、變更後的入站類型與連接埠,以及驗證結果。下次更新用戶端或還原設定時,先核對這些資訊,比反覆切換節點更容易找出問題。