適用於 v2rayN 啟動核心失敗、日誌顯示位址已被使用,或變更連接埠後瀏覽器仍無法連線的情況。先分辨連接埠遭占用或權限不足,再使用 Windows、macOS 指令找出監聽程序;若需更換連接埠,可將 10808 改為 20808,並同步調整用戶端入口、系統代理與手動代理位址,最後確認監聽狀態及請求結果。
先查看日誌:連接埠衝突不等於節點故障
本機監聽連接埠是應用程式連線至代理核心的入口,並非節點伺服器連接埠。瀏覽器連線至 127.0.0.1:10808 時,請求會先送到本機核心,再依路由規則直接連線或透過代理連出。若核心無法繫結入口,更換訂閱或 VMess、VLESS 節點通常無法解決問題。
先開啟 v2rayN 主畫面的日誌區,記下錯誤訊息中的位址、連接埠與文字。127.0.0.1:10808、0.0.0.0:10808 和 [::1]:10808 並不完全相同,代表的監聽範圍或位址系列有所差異。特別是繫結所有 IPv4 位址的程序,可能與只打算繫結本機回送位址的程序發生衝突。
bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.
原因與解法:Windows 常見的位址已在使用錯誤。依日誌中的連接埠查詢監聽程序,確認所屬程式後關閉重複執行的實例,或改用未占用的連接埠。
bind: address already in use
原因與解法:macOS 等環境常見的繫結衝突。使用 lsof 查看同一連接埠上的監聽程序,不要直接認定是遠端伺服器的問題。
bind: An attempt was made to access a socket in a way forbidden by its access permissions.
原因與解法:Windows 拒絕繫結,可能與系統排除的連接埠範圍或安全性原則有關。即使沒有監聽程序也可能發生;請進一步檢查排除範圍,不要反覆強制關閉無關程序。
Windows:依連接埠找出 PID 與程式路徑
在 PowerShell 執行以下查詢。此處以日誌中的 10808 為例;若錯誤訊息顯示其他連接埠,請替換數字。依本機連接埠和監聽狀態篩選,比只搜尋含有該數字的整行結果更準確。
Get-NetTCPConnection -LocalPort 10808 -State Listen -ErrorAction SilentlyContinue |
Select-Object LocalAddress, LocalPort, State, OwningProcess
OwningProcess 是程序 PID。假設查到的 PID 是 6420,接著執行以下兩個指令。這個數字僅供示範,請改用目前電腦實際查到的 PID。
Get-Process -Id 6420 | Select-Object Id, ProcessName, Path
Get-CimInstance Win32_Process -Filter "ProcessId = 6420" |
Select-Object ProcessId, ExecutablePath, CommandLine
檔案路徑和命令列可用來分辨目前由 v2rayN 啟動的核心、其他解壓縮資料夾中的舊實例,以及其他程式。部分程序資訊須具備系統管理員權限才能完整讀取;若一般權限查詢結果不完整,請以系統管理員身分開啟終端機。不要只因程序名稱相同就判定可以將它關閉。
PowerShell 查不到結果時
netstat -ano -p tcp | findstr :10808
tasklist /FI "PID eq 6420"
- 在
netstat輸出中查看「本機位址」欄,確認連接埠確實是10808,且狀態為LISTENING。 findstr只會篩選文字,可能找到遠端位址或其他含有相同數字的連接埠;不能把每一行都視為本機連接埠遭占用。TIME_WAIT不代表仍有代理程序在監聽,不要因此大量強制關閉程式。- 若錯誤明確涉及 UDP,請再使用
Get-NetUDPEndpoint -LocalPort 10808檢查;UDP 查詢沒有 TCP 的監聽狀態欄位。
macOS:檢查監聽程序並辨別重複實例
開啟「終端機」,使用系統內建的 lsof 查詢 TCP 監聽連接埠。-nP 會保留數字格式的位址與連接埠,方便逐項比對日誌。
lsof -nP -iTCP:10808 -sTCP:LISTEN
結果中的 COMMAND 是程序名稱,PID 是程序編號,NAME 則顯示監聽位址。若一般查詢沒有結果,但懷疑是其他帳戶的程序占用,可使用 sudo lsof -nP -iTCP:10808 -sTCP:LISTEN 再查一次。不要直接把空白結果解讀為連接埠一定可用,也要確認錯誤日誌確實來自剛才這次啟動。
- 查到 PID 後,執行
ps -p 6420 -o pid,ppid,command,將範例 PID 換成實際值,以查看啟動指令和父程序。 - 若程序來自另一個 v2rayN 實例,請先從該實例的選單列或應用程式選單正常結束,再啟動要保留的實例。
- 若占用連接埠的是仍在使用的其他程式,請保留該程式,並為 v2rayN 改用其他本機監聽連接埠。
- 只有在確認程序所屬程式,且正常結束無效後,才考慮透過「活動監視器」將它結束;關閉核心可能會中斷現有連線。
變更監聽連接埠:以 10808 改為 20808 為例
若需保留占用連接埠的程式,直接變更本機入口會比較簡單。以下以 v2rayN 7.x 常見介面為例;不同版本、桌面版與傳統介面的分類名稱可能不同,請以目前版本的「本機監聽連接埠」欄位為準。變更前先確認 20808 沒有其他程序監聽;範例數字不保證在每台電腦上都可用。
-
記下原有設定
開啟「設定」→「參數設定」,找出本機監聽相關選項,記下原連接埠、是否啟用混合入口、監聽位址及區域網路連線選項。不要修改節點編輯視窗中的遠端伺服器連接埠。
-
確認新連接埠
Windows 請將前述查詢的連接埠改為
-LocalPort 20808;macOS 則使用lsof -nP -iTCP:20808 -sTCP:LISTEN。若連接埠已遭占用,請換一個數字再檢查。 -
設定監聽入口
在「設定」→「參數設定」中,將對應的「本機監聽連接埠」改為
20808,儲存後依介面提示重新啟動核心。若儲存後設定未重新載入,可正常結束 v2rayN 再重新開啟。 -
重新設定代理
在主畫面或系統匣選單的「系統代理」中,先選擇「清除系統代理」,再選擇「自動設定系統代理」。使用手動代理的應用程式也須另外更新,不能只依賴這個步驟。
-
確認最新日誌
重新查詢
20808,確認預期的核心正在監聽,並查看這次啟動是否仍有繫結錯誤。只修改連接埠數字,但核心並未成功啟動,瀏覽器依然無法連線。
同步更新代理位址:避免應用程式繼續連線至舊連接埠
變更連接埠後仍出現「拒絕連線」,常見原因是應用程式還在連線至舊入口。系統代理、瀏覽器擴充功能和終端機環境變數是不同的設定來源;某個應用程式恢復連線,不代表所有應用程式都已更新。
| 設定來源 | 檢查位置 | 更新重點 |
|---|---|---|
| v2rayN 系統代理 | 「系統代理」選單 | 重新執行「自動設定系統代理」,並確認寫入的本機連接埠。 |
| Windows 手動代理 | 「設定」→「網路和網際網路」→「Proxy」 | 若使用手動設定,請確認位址和連接埠是否仍指向舊入口。 |
| macOS 網路代理 | 「系統設定」→「網路」→目前的連線→「詳細資訊」→「代理」 | 依實際使用的網頁代理或 SOCKS 代理檢查,不要任意混用兩種協定。 |
| 瀏覽器獨立代理 | 瀏覽器網路設定或代理擴充功能設定 | 若明確指定舊連接埠,請手動改為新入口;若設定為沿用系統代理,則請確認系統代理設定。 |
| 終端機與開發工具 | 環境變數、工具本身的網路設定 | 檢查 HTTP_PROXY、HTTPS_PROXY、ALL_PROXY 及固定的代理參數。 |
只有在目前入口支援 HTTP 代理時,才適用以下 PowerShell 範例。此範例只會修改目前終端機程序的環境變數,不會自動更新其他已開啟的終端機,也不會永久寫入系統設定。
$env:HTTP_PROXY = "http://127.0.0.1:20808"
$env:HTTPS_PROXY = "http://127.0.0.1:20808"
HTTPS_PROXY 使用 http:// 並不矛盾:這裡設定的是連線至本機 HTTP 代理的方式,HTTPS 目標通常會透過 CONNECT 通道存取。若使用 SOCKS 入口,請依工具支援的協定填寫;不要只改協定名稱,就假設工具能辨識。
找不到占用程序:檢查排除範圍並驗證結果
若 Windows 出現權限類型的繫結錯誤,但查不到 TCP 監聽程序,可檢查系統排除的連接埠範圍。虛擬化、容器或網路共用相關元件可能會使用這些保留範圍;是否與目前問題有關,請以本機查詢結果為準。
netsh interface ipv4 show excludedportrange protocol=tcp
netsh interface ipv6 show excludedportrange protocol=tcp
若錯誤連接埠落在某個範圍內,請優先選擇範圍外且沒有程序監聽的連接埠。不要為了代理入口任意刪除系統保留項目,也不要把永久使用系統管理員權限當成通用解法。若連接埠不在排除範圍內,再查看安全性軟體的封鎖記錄和核心日誌,不必先停用所有防護。
分三個層面驗證
- 監聽層:確認預期的核心程序正在監聽新連接埠。Windows 可使用
Test-NetConnection 127.0.0.1 -Port 20808測試 TCP 是否能建立連線,但測試成功不代表代理協定和遠端連線也正常。 - 代理層:若入口支援 HTTP,可執行以下明確指定代理的請求,避免系統代理設定造成混淆;使用 SOCKS 入口則執行第二個指令。請依入口類型選擇其中一個。
- 應用程式層:明確指定代理的請求成功後,再用瀏覽器開啟同一個網站。若指令成功但瀏覽器失敗,請優先檢查瀏覽器的獨立代理、擴充功能及舊連接埠快取。
curl --proxy http://127.0.0.1:20808 --connect-timeout 5 --max-time 15 -I https://example.com/
curl --proxy socks5h://127.0.0.1:20808 --connect-timeout 5 --max-time 15 -I https://example.com/
在 Windows PowerShell 中,可將 curl 寫成 curl.exe,避免部分環境中的同名別名影響參數解析。此處的 5 秒是連線逾時上限,15 秒是整體請求的時間上限,並非效能實測值。收到 HTTP 回應表示請求已取得回覆;但如果該網域依路由規則直接連線,仍無法據此證明代理出口節點可用,須搭配核心日誌確認實際出口。
常見問題:重新啟動後復發與變更連接埠的注意事項
重新啟動電腦後,10808 又遭占用怎麼辦?
重新查詢 PID 和程式路徑,確認是否有兩個 v2rayN 實例或其他程式設定為自動啟動。Windows 請檢查「設定」→「應用程式」→「啟動」;macOS 請檢查「系統設定」→「一般」→「登入項目」。只保留需要的啟動項目,不要直接使用上次記錄的 PID 結束程序。
可以直接強制結束占用程序嗎?
先確認程式路徑與用途,再從所屬應用程式正常結束。占用者可能是正在執行的服務,或其他使用者的程式;若需保留,為 v2rayN 更換連接埠會更合適。強制結束核心後,系統代理可能仍指向已關閉的入口,此時須清除或重新設定代理。
變更本機連接埠會影響訂閱和節點嗎?
只修改本機監聽欄位,不會變更訂閱連結、節點伺服器位址或節點服務連接埠。需要同步更新的是連線至本機入口的應用程式。若誤改節點編輯視窗中的連接埠,請依服務端提供的參數還原,不可用 20808 取代遠端連接埠。
改為監聽所有位址就能避開衝突嗎?
不要把 127.0.0.1 改成 0.0.0.0 來解決問題;擴大監聽範圍反而可能造成更多繫結衝突。僅在本機使用時,請保留回送位址監聽;確實需要區域網路存取時,再另外設定存取控制和防火牆規則。
新連接埠已開始監聽,網頁還是無法開啟?
先用明確指定代理的指令測試,再確認入口協定、系統代理和瀏覽器設定。若請求已進入核心,但出現遠端逾時、驗證失敗或網域名稱解析錯誤,接下來應檢查節點參數、DNS 和路由,而不是繼續更換本機連接埠。