適用於 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
- 同一資料夾中殘留的核心:先從系統匣選單結束 v2rayN,等候幾秒後再查詢連接埠是否已釋放。
- 從另一個資料夾啟動的副本:依程序路徑找到對應視窗或系統匣圖示,關閉不需要的副本,避免兩個開機啟動項目爭用同一連接埠。
- 其他正常運作的應用程式:讓它繼續執行,改為替 v2rayN 更換連接埠;不要為了代理入口而強制結束業務程序。
- 系統程序或用途不明的程序:先查明程序來源及所屬服務,不要直接執行強制終止命令。
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 連接埠,不要反覆強制結束程序。
變更 v2rayN 本機監聽連接埠
以下以將 10808 改為 10818 為例。10818 只是方便辨識的範例,並非保證未占用的專用連接埠。先將前述查詢命令改為查詢 10818;確認沒有相關監聽後,再進入設定。變更前請記下目前的連接埠、監聽位址,以及是否允許區域網路連線。
-
記下目前設定
開啟「設定」→「參數設定」,記下基本設定中的本機連接埠。不同版本的標籤可能略有差異;7.x 介面常見「Core: 基本設定」群組和「本機混合監聽連接埠」欄位,請以目前介面顯示為準。
-
填入未占用的連接埠
將「本機混合監聽連接埠」改為
10818。若目前版本分別顯示本機 SOCKS 和 HTTP 連接埠,請分別記下並修改對應欄位;兩個獨立監聽器不可設定為相同連接埠。 -
維持迴圈位址監聽
若僅供本機使用,請維持迴圈位址監聽,不要透過啟用「允許來自區域網路的連線」來解決連接埠衝突。擴大監聽範圍無法釋放已被占用的連接埠,還會改變入口的可存取範圍。
-
儲存並重新啟動
按一下「確定」儲存設定。若介面未自動重新啟動核心,請從系統匣選單正常結束 v2rayN,再重新啟動程式。接著查詢 10818,確認新監聽程序屬於這次啟動的核心。
-
重新設定系統代理
在系統匣選單的「系統代理」中,先選擇「清除系統代理」,再選擇「自動設定系統代理」。這會重新寫入目前的代理位址,與路由規則中的直連或代理模式無關。
較早的 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/
- 立即顯示連線遭拒:先確認連接埠、位址和核心是否仍在執行,暫時不要更換節點。
- 入口可以連線,但要求逾時:接著檢查核心的 DNS、路由和輸出記錄;本機綁定問題可能已經排除。
- 命令成功,但瀏覽器連線失敗:檢查瀏覽器目前使用的代理設定、PAC 快取及舊連線。
- 只有 HTTP 或 SOCKS 其中一項失敗:確認該連接埠是混合入口還是獨立協定入口,別把協定不符誤判為連接埠遭占用。
常見問題:查不到程序,或重新啟動後問題再次發生
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