v2rayN 本機連接埠遭占用:10808 衝突排查與監聽連接埠變更

使用 lsof、netstat 找出占用本機 SOCKS/HTTP 連接埠的程序,在 v2rayN 設定中更換連接埠,並同步更新瀏覽器與終端機的代理設定。

本文重點

適用於 v2rayN 啟動核心時出現監聽失敗,或系統代理指向 10808 卻無法連線的情況。先確認錯誤訊息中的位址與連接埠,再用系統指令找出監聽程序;若無法關閉占用程序,請變更 v2rayN 的本機連接埠,並逐一更新仍使用舊連接埠的應用程式。

先確認衝突發生在本機監聽連接埠

v2rayN 的本機 SOCKS 或 HTTP 入口負責接收瀏覽器、終端機等應用程式的代理請求,與節點設定中的遠端伺服器連接埠不同。若記錄指出 127.0.0.1:10808 綁定失敗,應檢查目前這台電腦上的 10808,而不是訂閱連結或節點位址。

先在 v2rayN 記錄完整錯誤訊息,特別是協定、監聽位址與連接埠。設定可能使用 10808、10809,也可能經過手動變更;不要只憑常見連接埠號碼判斷。若錯誤指向 0.0.0.0:10808,也要檢查是否有程序在同一連接埠綁定其他本機位址。

應用程式連線至代理本機連接埠監聽核心處理請求連線至節點傳回回應

連接埠衝突發生在流程的第二步:核心尚未成功接收本機連線。此時切換 VMess 或 VLESS 節點通常無法排除衝突。若連接埠已成功監聽,但只有特定節點無法連線,請再檢查節點狀態、路由規則與 DNS。

錯誤:bind: address already in use

原因與解決方式:指定的本機位址與連接埠已被其他程序占用。查詢監聽程序,關閉重複啟動的執行個體,或為 v2rayN 選擇尚未占用的連接埠。

錯誤:Only one usage of each socket address is normally permitted

原因與解決方式:Windows 拒絕重複綁定相同的通訊端位址。使用 netstat 取得 PID,再確認該程序是否仍有必要執行。

錯誤:connection refused 127.0.0.1:10808

原因與解決方式:應用程式仍在連線至 10808,但該位址沒有可用的代理監聽服務。確認 v2rayN 目前使用的連接埠,並更新應用程式的代理位址;不要直接將拒絕連線判定為連接埠遭占用。

Windows:使用 netstat 和 PID 找出占用程序

在命令提示字元中分別查詢 10808 和 10809。netstat -ano 會列出本機位址、連線狀態與 PID。只查看狀態為 LISTENING,且本機位址連接埠與錯誤訊息相符的資料列;遠端位址出現 10808,不代表本機監聽發生衝突。

netstat -ano | findstr :10808
netstat -ano | findstr :10809
tasklist /FI "PID eq 4321"

上例中的 4321 是示範用 PID,執行第三條指令時請換成查詢結果的最後一欄。findstr 只用來篩選文字,可能會比對到相近的連接埠或既有連線。請以完整的本機位址欄位和 LISTENING 狀態為準,不要只憑篩選結果就結束程序。

查詢結果判斷方式下一步
127.0.0.1:10808、LISTENING該程序正在監聽目標本機位址。依 PID 查詢程式名稱,確認是否為重複啟動的 v2rayN。
0.0.0.0:10808、LISTENING程序正在所有 IPv4 本機位址上監聽該連接埠。先確認程序用途,再決定結束程序或更換連接埠。
只有 ESTABLISHED 資料列目前結果無法證明有程序正在監聽目標位址。重新確認記錄中的連接埠,並在重新啟動核心時再次查詢。

也可以在 PowerShell 中直接依本機連接埠與監聽狀態篩選。先找出 OwningProcess,再查詢程序名稱。若結果指向其他仍在使用的服務,建議優先在 v2rayN 中更換連接埠;不要只為了釋出連接埠,就終止用途不明的系統程序。

Get-NetTCPConnection -LocalPort 10808 -State Listen
Get-Process -Id 4321

macOS 與 Linux:使用 lsof 確認監聽位址

在終端機執行 lsof 時,-nP 會保留數字位址與連接埠,方便直接比對記錄;-sTCP:LISTEN 則會將結果限制為 TCP 監聽程序。先不要加上 sudo 查詢;若權限不足導致程序資訊不完整,再以管理員權限重試。

lsof -nP -iTCP:10808 -sTCP:LISTEN
lsof -nP -iTCP:10809 -sTCP:LISTEN
sudo lsof -nP -iTCP:10808 -sTCP:LISTEN

輸出中的 COMMAND 是程序名稱,PID 可用來進一步識別程序,NAME 則顯示監聽位址。若看到 127.0.0.1:10808、*:10808 或 IPv6 監聽結果,請對照 v2rayN 記錄中的綁定位址,判斷衝突範圍。同一程式的舊執行個體若尚未結束,也可能留下仍在執行的核心程序。

查詢指令沒有輸出,只代表查詢當下找不到符合篩選條件的 TCP 監聽程序。另一個程式可能在核心啟動的瞬間搶先占用連接埠,也可能是錯誤訊息實際指向不同的連接埠。請保留完整記錄,並在重新啟動核心時再次查詢。

結束程序前,先確認其來源,並使用對應程式的正常結束方式停止服務。若占用連接埠的是必須常駐的本機服務,改用一組尚未占用的連接埠會更合適。連接埠號碼不是速度參數;從 10808 改成 20808,不會讓遠端連線變快。

在 v2rayN 中變更連接埠並更新代理入口

以下以將 SOCKS 入口從 10808 改為 20808,並將獨立設定的 HTTP 入口從 10809 改為 20809 為例。不同版本的介面可能會顯示本機監聽連接埠、SOCKS 連接埠或 HTTP 連接埠;請先查看目前欄位,再修改相應入口。若設定中只有一個混合代理入口,請勿照著範例自行假設還有第二個監聽連接埠。

  1. 記下舊連接埠

    在 v2rayN 主畫面查看目前的系統代理狀態,並記下「設定」→「參數設定」中的本機監聽連接埠。另外記下瀏覽器與終端機目前使用的 127.0.0.1 連接埠,方便逐項更新。

  2. 確認新連接埠

    使用前述系統指令檢查 20808;若有獨立的 HTTP 入口,也要檢查 20809。查詢時沒有程序監聽只是必要的初步檢查;儲存設定後,仍須確認核心能否成功綁定。

  3. 變更監聽連接埠

    前往「設定」→「參數設定」,將與錯誤訊息相符的本機 SOCKS 監聽連接埠改為 20808。若介面提供獨立的 HTTP 連接埠,且目前有啟用該入口,請改為 20809,然後儲存設定。

  4. 重新啟動核心

    透過 v2rayN 介面重新啟動核心,確認新記錄中不再出現綁定失敗。接著使用 netstat 或 lsof 查詢新連接埠,確認已有程序開始監聽。

  5. 同步更新應用程式

    重新套用 v2rayN 的系統代理設定;手動設定代理的瀏覽器、終端機與其他桌面程式,也要逐一將舊連接埠改成相應的新連接埠。只修改 v2rayN 而未更新應用程式,應用程式仍會連線至舊入口。

若瀏覽器使用系統代理,請確認重新套用後的代理伺服器位址與連接埠。若瀏覽器另有獨立代理設定,請直接到網路或代理設定中修改。HTTP 代理應指向實際啟用的 HTTP 或混合入口;SOCKS5 代理則應指向實際啟用的 SOCKS 或混合入口,不能只看連接埠號碼而忽略協定類型。

驗證新連接埠,排除「已監聽但無法上網」

分兩個階段驗證:先確認預期的程序正在監聽新連接埠,再透過該連接埠讓應用程式送出請求。以下 curl 指令分別測試獨立 HTTP 入口與 SOCKS5 入口;只需執行目前設定中實際啟用的入口。socks5h 表示目標網域由代理端解析,可避免本機 DNS 解析結果干擾這項測試。

curl -I --proxy http://127.0.0.1:20809 https://example.com
curl -I --proxy socks5h://127.0.0.1:20808 https://example.com

若指令回傳 connection refused,請先確認是否有監聽程序、位址是否為 127.0.0.1,以及連接埠和協定是否正確。若請求已送達核心但之後逾時,應改為排查節點連線、路由規則或 DNS,而不是繼續更換本機連接埠。

改成 20808 後,瀏覽器為什麼仍無法連線?

確認瀏覽器使用的是系統代理,還是另有獨立代理設定。獨立設定中的 127.0.0.1:10808 不會隨 v2rayN 參數自動更新;請改成實際啟用的入口,再重新載入網頁測試。

終端機已更換連接埠,為什麼 curl 還是連到舊位址?

檢查目前終端機工作階段中的 HTTP_PROXY、HTTPS_PROXY、ALL_PROXY 與對應的小寫變數,也要確認指令是否另外指定了 --proxy。更新變數後,請在同一個終端機工作階段重新執行測試。

netstat 顯示占用者也是 v2rayN,可以直接結束嗎?

先確認是否開啟了兩個 v2rayN 執行個體,並透過介面正常結束多餘的執行個體。接著確認舊核心程序已退出,最後只保留一個執行個體啟動,並再次檢查監聽 PID。

連接埠監聽正常,但所有訂閱節點都逾時,該怎麼辦?

本機監聽正常,只能證明應用程式可以連線至代理入口。請先在 v2rayN 查看核心記錄與目前節點狀態,再分別檢查訂閱內容、遠端伺服器連線與路由規則;不要將遠端逾時誤判為本機連接埠衝突。

最後再確認一次,系統代理與手動代理是否都指向同一組新連接埠。若曾設定終端機代理環境變數,關閉並重新開啟終端機後,也要確認啟動設定中的連接埠已更新。保留修改前的連接埠紀錄;若要還原,請先確認原連接埠已無其他程序占用,再還原 v2rayN 與各應用程式的相應設定。

v2rayN 下載