適合遇到核心啟動失敗、重新開機後代理失效,或變更本機連接埠後仍無法開啟網頁的桌面使用者。先分辨監聽失敗與代理指向錯誤,再使用 Windows、macOS 指令找出相關程序,最後變更連接埠並重新測試連線;不必先刪除訂閱或重新安裝用戶端。
先確認錯誤是否來自本機監聽
本機監聽連接埠是瀏覽器等應用程式將請求交給代理核心的入口,並非訂閱中節點的遠端連接埠。例如 127.0.0.1:10808 代表本機迴送位址上的入口;節點位址後方的 443 通常是伺服器端的連線目標。變更遠端連接埠無法解決本機繫結失敗,反而可能使原本正確的節點設定失效。
先開啟 v2rayN 主畫面的日誌區,重新啟動一次服務,查看同一時間附近的錯誤訊息。記下監聽位址、連接埠與失敗原因。以下是常見的原始錯誤片段;完整日誌前方可能還有核心模組名稱,連接埠號碼也會因設定而異。
錯誤:bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.
原因與解法:Windows 上目標位址與連接埠已被其他監聽程序占用;先查出該連接埠的 PID,再決定要正常結束占用中的程式,或變更本機連接埠。
錯誤: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 拒絕繫結,可能與連接埠排除範圍或安全性原則有關,不一定是有程序占用;查明監聽狀態與系統保留範圍後,再選擇可用的空閒連接埠。
如果日誌只有節點連線逾時、驗證失敗或網域名稱解析失敗,而本機入口已正常監聽,就應改查節點、DNS 或路由。不要一看到「無法連線」就直接更換連接埠;先確認連線在哪個環節失敗。
Windows:依監聽連接埠找出占用程序
以下以 10808 為例。實際操作時,請改用日誌中失敗的連接埠,不要假設所有版本都使用相同的預設值。在 PowerShell 執行以下查詢;若看不到程序路徑,可用系統管理員身分重新開啟 PowerShell,但不必因此一直以系統管理員身分執行用戶端。
Get-NetTCPConnection -LocalPort 10808 -State Listen -ErrorAction SilentlyContinue |
Select-Object LocalAddress, LocalPort, State, OwningProcess
找到 OwningProcess 欄位後,再查詢該 PID。以下的 6240 僅為示範數字,請替換成上一個指令實際回傳的值。比起只看程序名稱,透過程式路徑區分位於不同資料夾的兩個 v2rayN 更可靠。
Get-Process -Id 6240 | Select-Object Id, ProcessName, Path
也可以在命令提示字元中執行以下兩個指令。第一個指令的篩選結果可能包含遠端連接埠或其他相似數字,務必核對「本機位址」欄,並找出狀態為 LISTENING 的列;最後的數字才是占用該監聽連接埠的 PID。
netstat -ano -p tcp | findstr ":10808"
tasklist /FI "PID eq 6240"
- 另一個 v2rayN 或其核心:先從該程式的系統匣選單正常結束,再查詢連接埠。直接關閉視窗可能只是將程式縮到系統匣。
- 仍需使用的其他軟體:保留該軟體,並為 v2rayN 選擇另一個空閒連接埠,避免每次開機都爭用同一個入口。
- 不熟悉名稱的系統服務:先確認服務身分,不要直接強制結束。尤其不要只因為日誌中反覆出現相同 PID,就認定它是可以任意終止的程式。
macOS:確認監聽程序後再正常結束
開啟「終端機」,使用 lsof 查詢 TCP 監聽狀態。HTTP 與 SOCKS 代理入口先檢查 TCP 即可;只有日誌明確指出 UDP 繫結失敗時,才追加 UDP 查詢。TCP 與 UDP 使用不同的連接埠範圍,不能混為一談。
lsof -nP -iTCP:10808 -sTCP:LISTEN
輸出中的 COMMAND 是程式名稱,PID 是程序編號,NAME 是監聽位址。若權限不足而無法確認其他使用者的監聽狀態,可使用 sudo lsof -nP -iTCP:10808 -sTCP:LISTEN 進一步查看。若要查明啟動指令,請以實際 PID 替換以下範例數字。
ps -p 6240 -o pid,ppid,command
- 從選單列或程式選單正常結束另一個用戶端,避免只關閉視窗卻讓背景服務繼續執行。
- 重新執行
lsof,確認原本的監聽已消失。若立刻出現新的 PID,請檢查該程式的登入項目或自動重新啟動設定。 - 啟動需要保留的 v2rayN,再查詢同一個連接埠,確認監聽程序已換成目前執行個體的核心。
如果同一個連接埠出現 IPv4 與 IPv6 兩列,先比對 PID。它們可能是同一個程式的兩個監聽,不代表開了兩個用戶端。判斷是否衝突時,應綜合檢查位址家族、繫結位址與日誌,而非只計算列數。
在參數設定中變更本機監聽連接埠
若無法釋放原本的連接埠,可以將本機入口改用例如 11808,但請先用前面的指令確認新連接埠沒有監聽程序。範例連接埠不保證一定空閒。變更前先記下原設定,方便驗證失敗時還原。
-
記下原設定
前往「設定」→「參數設定」,找到本機監聽連接埠相關欄位,記下連接埠、監聽位址與入口類型。不同版本可能顯示「本機監聽連接埠」或「本機混合監聽連接埠」,請以目前介面為準。
-
檢查新連接埠
將查詢指令中的
10808改成11808。查不到監聽結果只是第一步;若 Windows 出現存取權限相關錯誤,還需檢查系統的連接埠排除範圍。 -
儲存並重新啟動
將對應入口改為
11808,儲存參數設定並重新啟動服務;若目前介面沒有重新啟動選項,可正常結束後重新開啟用戶端。接著查看新一輪日誌,確認繫結成功。 -
重新設定代理
在系統匣選單的「系統代理」中,先選擇「清除系統代理」,再選擇「自動設定系統代理」。接著檢查作業系統的代理設定,確認 HTTP、HTTPS 使用的位址與連接埠都已更新。
-
同步更新應用程式設定
一併變更瀏覽器手動代理、命令列環境變數,以及其他固定使用舊連接埠的應用程式。SOCKS5 與 HTTP 應分別指向支援該協定的入口,不要只因連接埠號碼相同,就認定兩者通用。
變更後分兩個層面驗證系統代理
「連接埠正在監聽」和「瀏覽器使用了這個連接埠」是兩回事。先重新確認 11808 的監聽程序,再測試明確指定代理的請求,最後檢查瀏覽器。這樣可避免節點本身無法連線時,還反覆調整本機連接埠設定。
| 驗證層面 | 檢查方式 | 結果說明 |
|---|---|---|
| 本機入口 | 查詢新連接埠的 LISTEN 狀態與 PID | 沒有監聽時,先處理核心啟動問題;有監聽再繼續檢查協定與請求。 |
| 明確指定代理 | 使用 curl 明確指定本機代理 | 收到目標回應,表示這次代理連線可用;若連線遭拒,先檢查入口位址與連接埠。 |
| 系統代理 | 核對系統設定中的代理位址、連接埠與模式 | 明確指定代理測試成功但瀏覽器失敗時,應優先檢查應用程式是否使用系統代理,以及略過清單設定。 |
Windows PowerShell 可使用 curl.exe,避免命令別名造成差異。如果 11808 是 HTTP 或混合入口,請執行以下指令;macOS 則將指令開頭改為 curl。此處使用公開網頁作為請求目標,不代表固定的測速網站。
curl.exe --proxy http://127.0.0.1:11808 --connect-timeout 5 --max-time 15 -I https://example.com/
如果入口只接受 SOCKS5,請使用以下寫法。socks5h 代表將目標網域交由代理處理;這與在本機解析網域名稱的測試方式不同。收到 HTTP 回應標頭,表示請求至少已抵達回應端,但不能只憑一次成功就認定所有網站或路由規則都正常。
curl.exe --proxy socks5h://127.0.0.1:11808 --connect-timeout 5 --max-time 15 -I https://example.com/
- 立刻提示無法連線至本機位址:重新確認監聽程序、連接埠,以及 HTTP/SOCKS 類型。
- 本機連線建立後逾時:查看核心日誌中的節點連線、DNS 與路由結果,不要繼續盲目更換本機連接埠。
- 指令成功但瀏覽器失敗:檢查瀏覽器的獨立代理設定、擴充功能與略過清單,確認沒有繼續指向舊的
10808或10809。
常見問題:查不到占用程序、重新開機後再次衝突與多開
查不到占用程序,為什麼還是提示連接埠無法使用?
先確認查詢的是日誌中的連接埠,並核對錯誤涉及 TCP 還是 UDP。若 Windows 提示存取權限受限,可執行以下指令檢查 IPv4 TCP 排除範圍;若是 IPv6 監聽,請將 ipv4 換成 ipv6。若連接埠落在排除範圍內,優先改用未被排除且沒有監聽程序的連接埠,不要任意刪除系統保留項目。
重新開機後又發生衝突,是訂閱有問題嗎?
本機繫結通常與訂閱內容無關。發生衝突時立即查詢 PID 與程式路徑,並確認是否有來自不同資料夾的兩個用戶端都設定了開機啟動。保留一個自動啟動項目後再重新開機確認;若占用者是必須執行的軟體,就固定為兩個程式配置不同的連接埠。
可以同時開啟兩個 v2rayN,各自連線到不同節點嗎?
兩個用戶端必須使用各自獨立的設定資料夾,且所有啟用中的本機監聽連接埠都不能衝突;只變更一個入口,其他 HTTP、SOCKS 或自訂入站仍可能重複。系統代理同一時間應明確由其中一個執行個體管理,另一個則透過應用程式手動設定代理,否則後啟動的執行個體可能覆蓋先前的代理設定。
關閉 v2rayN 後網頁也無法開啟,該如何恢復?
如果用戶端仍可操作,先選擇「系統代理」→「清除系統代理」,再結束程式。若程式已關閉,請前往作業系統的代理設定,關閉指向已停止本機入口的手動代理;只移除與目前故障相關的設定,不要覆蓋單位網路要求的代理設定。恢復直接連線後,再啟動用戶端測試。
netsh interface ipv4 show excludedportrange protocol=tcp
最後應確認三件事:新連接埠由目前的核心監聽、明確指定代理的請求能收到回應,以及瀏覽器與系統設定不再使用舊連接埠。記下變更前後的連接埠與占用程式路徑,下次遇到開機搶占或舊執行個體殘留時,就能依照同一條證據鏈排查。