v2rayN 本機連接埠 10808 被占用:查出衝突程序並變更本機監聽連接埠

啟動時若提示連接埠被占用,可用 netstat 或 lsof 查出占用程序,再到參數設定變更本機監聽連接埠,並同步更新瀏覽器與系統代理設定。

本文快速導覽

適用於 v2rayN 啟動核心時提示 10808 綁定失敗,或瀏覽器仍指向舊連接埠的情況。先確認錯誤來自本機監聽,再依程序編號找出占用者;若能關閉重複執行的程式,就保留原連接埠;若無法關閉,則改用已確認未占用的 10818。最後同步更新系統代理、瀏覽器和命令列工具,並分別確認本機監聽與遠端連線。

先釐清:本機監聽失敗,還是節點連線失敗

127.0.0.1:10808 是本機代理入口,不是訂閱伺服器位址,也不是節點的遠端連接埠。v2rayN 管理介面能開啟,不代表 Xray 已成功啟動。核心無法綁定入口時,介面仍可能顯示節點清單,但瀏覽器沒有可連線的本機代理。

應用程式代理設定 本機監聽連接埠 核心路由規則 遠端節點

排查時應從連線路徑的左側開始。先開啟 v2rayN 的記錄區,尋找與啟動時間相符的 listen、bind 和 10808。只有錯誤明確指向監聽位址時,才依本文處理;遠端連線逾時、憑證錯誤或訂閱更新失敗,都不能靠隨意變更本機連接埠解決。

bind: address already in use

原因與解法:目標位址和連接埠已有程序在監聽。先找出占用程序,關閉重複執行的程式,或將 v2rayN 的監聽連接埠改成已確認未占用的值。

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

原因與解法:Windows 拒絕重複綁定相同的通訊端位址。請確認記錄中的 IP、TCP 或 UDP 類型及連接埠,不要只看數字就判定衝突對象。

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

原因與解法:問題可能與系統連接埠排除範圍或安全性原則有關,不一定是一般程序占用。若查不到監聽程序,請繼續檢查連接埠保留狀況。

Windows:使用 netstat 找出占用程序

開啟 PowerShell 或命令提示字元,執行以下查詢。這些命令只會讀取狀態,不會停止程式。若無法查看程序路徑,請以系統管理員身分重新開啟終端機再試。

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

查看 TCP 輸出時,請特別留意「本機位址」欄和 LISTENING 狀態。篩選字串也可能符合遠端位址,甚至符合以相同數字開頭的較長連接埠,因此不能把每一行都視為衝突。UDP 沒有相同的監聽狀態欄;只有記錄涉及 UDP 綁定時,才需特別檢查對應結果。

TCP    127.0.0.1:10808    0.0.0.0:0    LISTENING    6420

這是一行教學範例,並非本機實際查詢結果。末尾的 6420 是範例程序編號 PID,實際操作時請換成查詢結果中的數值。若要精確篩選 TCP 本機監聽連接埠,可在 PowerShell 中使用:

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

tasklist /FI "PID eq 6420"

Get-CimInstance Win32_Process -Filter "ProcessId=6420" |
  Select-Object ProcessId, Name, ExecutablePath, CommandLine

macOS 與 Linux:使用 lsof 確認監聽程序

桌面版 v2rayN 在不同系統上的介面可能略有差異,但判斷監聽衝突的方式相同。macOS 可使用 lsof;Linux 若已安裝此工具,也能使用相同命令。查詢 TCP 和 UDP 時,請分別執行:

lsof -nP -iTCP:10808 -sTCP:LISTEN
lsof -nP -iUDP:10808

輸出中的 COMMAND 是程序名稱,PID 是程序編號,NAME 顯示監聽位址。Linux 也可使用以下命令查看 TCP 監聽與程序資訊;若因權限不足而無法顯示程序,請依系統管理規範使用具提權權限的終端機查詢。

ss -ltnp 'sport = :10808'
ps -p 6420 -o pid,comm,args

變更 v2rayN 本機監聽連接埠

以下以將 10808 改為 10818 為例。10818 只是方便辨識的範例,並非保證未占用的專用連接埠。先將前述查詢命令改為查詢 10818;確認沒有相關監聽後,再進入設定。變更前請記下目前的連接埠、監聽位址,以及是否允許區域網路連線。

  1. 記下目前設定

    開啟「設定」→「參數設定」,記下基本設定中的本機連接埠。不同版本的標籤可能略有差異;7.x 介面常見「Core: 基本設定」群組和「本機混合監聽連接埠」欄位,請以目前介面顯示為準。

  2. 填入未占用的連接埠

    將「本機混合監聽連接埠」改為 10818。若目前版本分別顯示本機 SOCKS 和 HTTP 連接埠,請分別記下並修改對應欄位;兩個獨立監聽器不可設定為相同連接埠。

  3. 維持迴圈位址監聽

    若僅供本機使用,請維持迴圈位址監聽,不要透過啟用「允許來自區域網路的連線」來解決連接埠衝突。擴大監聽範圍無法釋放已被占用的連接埠,還會改變入口的可存取範圍。

  4. 儲存並重新啟動

    按一下「確定」儲存設定。若介面未自動重新啟動核心,請從系統匣選單正常結束 v2rayN,再重新啟動程式。接著查詢 10818,確認新監聽程序屬於這次啟動的核心。

  5. 重新設定系統代理

    在系統匣選單的「系統代理」中,先選擇「清除系統代理」,再選擇「自動設定系統代理」。這會重新寫入目前的代理位址,與路由規則中的直連或代理模式無關。

較早的 6.x 介面與後續版本,在獨立 HTTP 入口、混合入口及欄位名稱上有所差異。不要照搬「HTTP 一定是 10809」這類經驗值:混合入口可在同一連接埠接收 HTTP 和 SOCKS 要求,而獨立入口則須依實際設定分別填寫。也不要修改自動產生的暫存核心設定檔,因為介面儲存設定或切換節點時可能會覆寫這些變更。

同步更新瀏覽器、系統代理與命令列設定

核心已在 10818 監聽,但應用程式仍連到 10808,是變更連接埠後最常見的遺漏。系統代理只會影響遵循系統代理設定的程式;手動設定代理的應用程式、環境變數和單次命令參數,都需要另外檢查。

使用入口檢查項目本例設定值
Windows 系統代理「設定」→「網路和網際網路」→「Proxy」,檢查手動代理位址與連接埠位址 127.0.0.1;連接埠 10818
瀏覽器手動代理瀏覽器連線設定或代理擴充功能中目前啟用的設定依入口類型填入 HTTP 或 SOCKS5,連接埠 10818
命令列工具HTTP_PROXY、HTTPS_PROXY、ALL_PROXY 及命令參數將仍指向 10808 的值更新
其他應用程式應用程式中的「網路」或「代理」設定儲存後重新建立連線

若使用 PAC 指令碼,不只要確認指令碼網址是否變更,也要檢查指令碼實際回傳的代理連接埠。瀏覽器可能快取舊指令碼或沿用既有連線;更新設定後,請重新載入指令碼或重新啟動相關應用程式。不要讓應用程式手動設定的代理與系統代理指向不同連接埠,再僅憑網頁偶爾能開啟就判定設定成功。

# Windows PowerShell:檢查目前終端機的代理環境變數
Get-ChildItem Env: | Where-Object Name -Match '^(HTTP|HTTPS|ALL|NO)_PROXY$'

# macOS / Linux:檢查目前終端機的代理環境變數
env | grep -iE '^(http|https|all|no)_proxy='

變更環境變數通常只會影響之後啟動的程序。已開啟的終端機、編輯器或下載工作可能仍保留舊值。找到變數後,請在實際設定它的位置更新,例如終端機設定檔或系統環境變數介面,再重新開啟相關程式;不要只修改暫用的終端機就結束排查。

確認結果:本機連線成功,不代表遠端服務可用

請分兩個階段驗證:先確認本機入口存在,再測試代理要求。Windows PowerShell 可先執行以下命令;TcpTestSucceeded 為 True 只代表 TCP 連接埠可建立連線,無法證明訂閱、節點和 DNS 都正常。

Test-NetConnection 127.0.0.1 -Port 10818

如果 10818 是混合入口,可以分別測試 HTTP 和 SOCKS。以下使用文件範例網域發出要求,不代表節點測速結果,也不代表固定的可用性。Windows PowerShell 請明確使用 curl.exe,避免舊版環境將 curl 解讀為其他命令;macOS 和 Linux 則使用 curl。

curl.exe --noproxy "" --proxy http://127.0.0.1:10818 --connect-timeout 10 --max-time 20 -I https://example.com/
curl.exe --noproxy "" --proxy socks5h://127.0.0.1:10818 --connect-timeout 10 --max-time 20 -I https://example.com/

常見問題:查不到程序,或重新啟動後問題再次發生

netstat 查不到結果,為什麼連接埠仍無法使用?

先確認記錄是否來自這次啟動,再核對 IPv4、IPv6 以及 TCP、UDP 類型。Windows 可執行下方命令查看 TCP 排除範圍;若 10808 位於其中,請優先改用不在排除範圍內且未被監聽的連接埠,不要直接刪除系統保留項目。

每次重新啟動電腦,10808 都會再次被占用嗎?

檢查 Windows「設定」→「應用程式」→「啟動」,以及工作排程器中是否同時啟動了位於不同資料夾的 v2rayN。保留實際使用的副本,並確認占用程序的完整路徑;不要只憑程序名稱相同就下判斷。

改用 10818,會影響 VMess 或 VLESS 節點嗎?

本機監聽連接埠和節點的遠端連接埠是兩項不同設定。變更本機入口不需要修改訂閱中的 VMess、VLESS 伺服器連接埠,也不需要重新產生使用者識別碼;需要同步更新的是連線至本機代理的應用程式。

啟用 TUN 或以系統管理員身分執行,能避開衝突嗎?

TUN 的接管方式不同,但核心仍可能啟動本機入站,無法保證避開重複綁定。系統管理員權限也不會自動釋放其他程序的通訊端。請先解決記錄指出的監聽失敗,再另外檢查 TUN 路由和 DNS。

netsh interface ipv4 show excludedportrange protocol=tcp
netsh interface ipv6 show excludedportrange protocol=tcp
下載v2rayN 選擇平台與安裝套件