適合遇到「address already in use」、核心啟動後立即退出、系統代理已開啟但本機連接埠沒有監聽的使用者。處理順序是確認錯誤連接埠與協定、找出佔用程序、判斷應關閉程序或修改連接埠,最後同步調整系統代理、瀏覽器及其他依賴該連接埠的設定。
先確認衝突的是哪個本機連接埠
V2Ray 或 Xray 核心啟動時,會在本機位址上建立監聽連接埠。瀏覽器和其他應用程式會將要求傳送至這個入口,再由客戶端依照節點設定與路由規則處理。v2rayN 7.x 常見的是本機混合代理連接埠,許多既有設定使用 127.0.0.1:10808;舊設定也可能將 SOCKS 與 HTTP 分成 10808、10809 兩個連接埠。連接埠值不是協定伺服器連接埠,只在目前裝置上作為應用程式與客戶端之間的入口。
同一組網路協定、監聽位址與連接埠通常只能由一個程序使用。例如,已有程序正在監聽 TCP 127.0.0.1:10808,新啟動的 Xray 核心再次申請相同組合時,就會回傳繫結失敗。只看到「啟動失敗」還不夠,應開啟 v2rayN 的記錄視窗或查看核心記錄,找出包含 listen、bind、10808 的原始行。
- 確認連接埠:記錄寫的是 10808 就查詢 10808,不要依預設值猜測。
- 確認位址:
127.0.0.1只接受本機連線,0.0.0.0表示監聽所有 IPv4 網路介面。 - 確認協定:TCP 與 UDP 的佔用記錄分開,檢查 TUN 或 DNS 相關問題時尤其要留意 UDP。
- 確認執行個體:從系統匣退出客戶端後再檢查,避免舊核心程序仍在背景執行。
在 Windows 找出佔用 10808 連接埠的程序
在 Windows 上,先開啟「終端機」或「命令提示字元」。一般權限通常可以查看連線和 PID;如果查詢程序詳細資料或結束系統層級程序時遭到拒絕,再以系統管理員權限開啟終端機。第一步只進行定位,不要看到 PID 後就立即強制結束程序。
netstat -ano | findstr :10808
輸出中的 LISTENING 表示有程序正在監聽。最後一欄是 PID。例如,以下記錄表示 PID 6420 佔用了本機 TCP 10808;如果只看到 TIME_WAIT,通常代表連線關閉後的短暫狀態,不等同於存在監聽服務。
TCP 127.0.0.1:10808 0.0.0.0:0 LISTENING 6420
取得 PID 後,使用工作清單查詢可執行程式。如果指令回傳多筆記錄,應以 PID 精確比對,不要只依程序名稱判斷,因為同一程式可能同時執行多個執行個體。
tasklist /FI "PID eq 6420"
| 查詢結果 | 常見含義 | 建議操作 |
|---|---|---|
| 另一個 v2rayN 或 Xray 程序 | 舊執行個體未退出,或客戶端重複啟動 | 先從系統匣退出舊執行個體,再重新檢查監聽記錄 |
| 其他本機代理程式 | 兩套程式使用了相同的入口連接埠 | 保留常用程式的連接埠,將另一套程式改用未佔用的連接埠 |
| 業務開發服務 | 開發工具剛好使用 10808 | 依專案需求決定修改開發服務或客戶端連接埠 |
| PID 已不存在 | 程序在查詢期間已退出 | 重新執行 netstat,確認監聽是否已釋放 |
PowerShell 也能直接串接監聽記錄與程序資訊。以下指令只查詢 TCP 10808,並將使用該連接埠的 PID 傳給程序查詢。沒有輸出時,表示目前沒有符合條件的 TCP 監聽記錄。
$listener = Get-NetTCPConnection -LocalPort 10808 -State Listen -ErrorAction SilentlyContinue
$listener | Select-Object LocalAddress, LocalPort, OwningProcess
$listener | ForEach-Object { Get-Process -Id $_.OwningProcess }
在 v2rayN 中修改本機監聽連接埠
如果佔用程序必須保留,修改 v2rayN 的本機連接埠通常比反覆結束程序更穩定。以 v2rayN 7.x 繁體中文介面為例,先記下目前的系統代理狀態,接著進入「設定」→「參數設定」→「基礎設定」,找到本機混合代理連接埠或本機監聽連接埠。不同 7.x 小版本的欄位名稱可能略有差異,但應修改入站監聽項目,而不是節點的伺服器連接埠。
- 從系統匣選單暫時關閉系統代理,避免舊位址繼續被應用程式使用。
- 開啟「設定」→「參數設定」→「基礎設定」,將本機連接埠從 10808 改為範例值 10818。
- 儲存參數並重新啟動核心;如果介面提示需要重新啟動客戶端,請完整退出系統匣執行個體後再重新啟動。
- 開啟記錄,確認出現監聽
127.0.0.1:10818的記錄,且不再出現 bind 或 address already in use。 - 重新啟用系統代理,再檢查系統代理位址是否已同步為 127.0.0.1 和新的連接埠。
選擇新連接埠時,可使用 1024 到 65535 之間未被佔用的連接埠,但不要只憑「數字較大」判斷是否可用。修改前先執行 netstat -ano | findstr :10818;確認沒有 LISTENING 記錄後,再將 10818 寫入客戶端。如果設定同時存在 SOCKS、HTTP、API、DNS 入站,每個欄位都必須使用不同連接埠,不能將所有入口設為同一個值。
修改連接埠後,「核心啟動成功」只表示監聽衝突已排除,不代表瀏覽器一定會使用新的連接埠。系統代理模式通常由 v2rayN 自動寫入,但手動代理、瀏覽器獨立代理、終端機環境變數和開發工具不一定會同步變更。應逐項檢查這些相依設定。
- Windows 系統代理:確認位址仍是
127.0.0.1,連接埠已從 10808 改為 10818。 - 命令列環境變數:如果曾設定
HTTP_PROXY、HTTPS_PROXY或ALL_PROXY,請同步替換其中的舊連接埠。 - 瀏覽器獨立設定:使用手動代理時,HTTP 與 SOCKS 欄位要對應客戶端實際開放的入站類型。
- 區域網路共用:如果允許其他裝置連線,應同時核對監聽位址、區域網路存取開關和系統防火牆規則。
v2rayNG 與 v2flyNG 的連接埠修改要點
Android 端也可能發生本機連接埠衝突,常見情況是另一個網路工具佔用相同連接埠、上次服務未正常停止,或使用者匯入的自訂設定自行宣告了入站。v2rayNG 使用 Xray 核心,v2flyNG 使用 v2fly 核心;兩者的設定名稱會隨版本調整,但排查原則相同:先停止目前連線,再修改本機代理入口,最後重新啟動服務。
以 v2rayNG 1.10.x 常見的繁體中文介面為例,可進入「設定」→「本機代理設定」,檢查本機 SOCKS 連接埠、HTTP 連接埠或相關監聽項目。如果目前是 10808,可先改成已確認未被佔用的 10818。返回主介面後停止並重新啟動連線,讓核心重新載入入站設定。使用 v2flyNG 時,同樣從設定中的本機代理或監聽連接埠項目修改,不要編輯訂閱節點中的遠端伺服器連接埠。
錯誤:listen tcp 127.0.0.1:10808: bind: address already in use
原因與解法:另一個程序已在監聽 TCP 10808——停止衝突程式,或將目前客戶端的本機監聽連接埠改為 10818 後重新啟動核心。
錯誤:bind: Only one usage of each socket address is normally permitted
原因與解法:Windows 拒絕第二個程序繫結相同的位址和連接埠——使用 netstat 找出 PID,再決定退出舊執行個體或修改連接埠。
錯誤:failed to start app/proxyman/inbound
原因與解法:入站模組初始化失敗,連接埠衝突是常見原因之一——繼續查看緊接其後的 listen 或 bind 記錄,依記錄中的實際連接埠進行排查。
如果使用自訂 JSON 設定,介面中的全域連接埠不一定會覆蓋設定檔內的 inbounds。此時需要檢查每個入站物件的 listen 與 port。同一份設定中重複宣告 10808,也會在單一核心內部形成衝突。
{
"inbounds": [
{
"listen": "127.0.0.1",
"port": 10818,
"protocol": "socks"
}
]
}
連接埠已釋放,為什麼仍然啟動失敗?
解決連接埠衝突後仍然失敗,應重新讀取最新記錄,而不是繼續針對舊 PID 操作。一次啟動過程可能依序建立混合代理、API、DNS 和 TUN 相關監聽;10808 成功並不表示其他連接埠也成功。搜尋記錄中的下一個 failed、listen 或 bind,再依實際連接埠重複查詢。
netstat 查不到 10808,客戶端仍提示遭佔用?
先確認記錄寫的是 TCP 還是 UDP,並檢查監聽位址是否為 IPv6。TCP 可使用 netstat -ano -p tcp,UDP 可使用 netstat -ano -p udp;接著完整退出客戶端並重新讀取最新記錄。
改成 10818 後,瀏覽器反而無法開啟網頁?
檢查 Windows 系統代理和瀏覽器手動代理是否仍指向 10808。位址應與客戶端監聽位址一致,連接埠應改為 10818,然後關閉並重新開啟瀏覽器連線。
每次開機都再次出現連接埠衝突?
在工作管理員的啟動應用程式中檢查是否有兩個客戶端同時自動啟動,並確認系統匣中沒有重複執行個體。保留一個自動啟動入口,再為必須共存的程式分配不同連接埠。
程序已結束,為什麼 PID 馬上又出現?
該程式可能由背景服務或排程工作自動啟動。先在對應程式中關閉自動啟動,再正常退出;不要反覆使用強制結束指令,與自動復原機制互相對抗。
系統代理顯示新連接埠,終端機指令仍連線失敗?
終端機可能使用獨立的代理環境變數。執行目前 shell 對應的環境變數查詢,確認其中沒有殘留 127.0.0.1:10808,修改後重新開啟終端機視窗。
還要區分「連接埠遭佔用」和「連接埠保留」。少數 Windows 網路元件或虛擬化功能會保留一段 TCP 連接埠範圍,即使 netstat 看不到監聽程序,繫結仍可能遭系統拒絕。可使用以下指令查看排除範圍;如果 10808 落在範圍內,選擇 10818、20808 等未被佔用且未被保留的連接埠,通常比調整系統保留策略更直接。
netsh interface ipv4 show excludedportrange protocol=tcp
修改後的完整複查順序
排障結束前應進行一次完整複查。目標不只是讓錯誤消失,而是確認核心監聽、系統代理、應用程式連線和節點出站使用同一套設定。以下順序可避免「客戶端顯示正在執行,但流量仍傳往舊連接埠」的情況。
- 完整退出舊客戶端執行個體,等待系統匣圖示和相關核心程序結束。
- 執行
netstat -ano | findstr :10818,確認修改前沒有其他程序監聽新的連接埠。 - 啟動 v2rayN、v2rayNG 或 v2flyNG,並在記錄中確認新的連接埠已成功監聽。
- 再次查詢連接埠,核對監聽 PID 是否屬於目前客戶端啟動的核心程序。
- 檢查系統代理、瀏覽器手動代理、終端機環境變數和開發工具代理設定。
- 選擇一個有效節點進行連線測試;如果連接埠已正常監聽但連線失敗,改為檢查節點可用性、DNS、路由規則和系統時間。
如果只是重複啟動造成的衝突,保留預設 10808 並清理舊執行個體即可;如果兩套本機服務需要長期共存,則應固定分配不同連接埠,並記錄每個連接埠對應的程式。連接埠規劃穩定後,訂閱更新、VMess 或 VLESS 節點選擇、直連與代理路由都不需要因本機連接埠變更而重建,只有依賴本機入口的應用程式設定需要同步更新。