適用於 v2rayN 核心已啟動,但瀏覽器無法連線、終端機請求逾時,或只有部分應用程式能上網的情況。先用明確指定代理的請求測試本機入口,再確認瀏覽器是否使用系統代理,最後檢查終端機環境變數、PAC 與例外清單。本文主要以 Windows 為操作環境;範例連接埠請依用戶端實際監聽值調整,命令成功不代表所有流量都已經透過代理。
先釐清系統代理、核心啟動與節點是否可用
v2rayN 顯示核心已啟動,只代表相關程序正在執行;選取某台伺服器,也不代表瀏覽器正在使用該伺服器。系統代理是提供本機代理位址給遵循此設定的應用程式,不會自動接管所有程式的網路連線。終端機工具、瀏覽器擴充功能及應用程式自己的代理設定,都可能使用不同的連線路徑。
請沿著這條連線路徑逐段確認。明確指定本機代理後仍然失敗,就先檢查監聽連接埠、核心記錄與伺服器連線;明確指定代理後成功、一般瀏覽卻失敗,再檢查系統設定和瀏覽器。依此順序排查,可避免入口尚未連通時就反覆調整 PAC 規則。
- 記下目前使用的伺服器、系統代理模式、本機監聽位址與連接埠,以便還原設定。
- 排查期間先關閉 TUN,避免流量被另一條接管路徑攔截;也不要同時執行另一個會接管系統代理的程式。
- 在 v2rayN 的「設定」→「參數設定」中確認本機監聽相關項目;欄位位置可能因介面版本而異,請以實際畫面為準。
- 開啟用戶端記錄,確認沒有啟動失敗、連接埠綁定失敗或持續發生連線錯誤,再進行後續對照測試。
明確指定代理,確認本機入口是否可用
先在 PowerShell 中執行 curl.exe,避免某些環境中的 curl 實際上指向其他命令。以下兩次請求使用相同的目標位址,第一次略過代理,第二次明確指定本機 HTTP 代理。設定連線與總執行時間上限,避免等待過久。範例網站僅用於測試連線,不代表任何實際測速結果。
# 直連對照:略過所有代理
curl.exe --noproxy "*" --connect-timeout 10 --max-time 20 -I https://example.com/
# HTTP 代理入口:排除清單中不得包含本次測試網域
curl.exe --proxy http://127.0.0.1:10808 --noproxy "localhost,127.0.0.1" --connect-timeout 10 --max-time 20 -I https://example.com/
# 若此連接埠僅支援 SOCKS,請改用這一行
curl.exe --proxy socks5h://127.0.0.1:10808 --noproxy "localhost,127.0.0.1" --connect-timeout 10 --max-time 20 -I https://example.com/
socks5h 會將目標網域交由 SOCKS 代理端處理,但最終的解析方式仍取決於核心設定。HTTP 代理連線至 HTTPS 位址時,通常會使用 CONNECT 通道;代理位址寫成 http://127.0.0.1:10808,不代表目標網頁會改用未加密的 HTTP。
| 對照結果 | 優先檢查項目 | 無法直接推論的結論 |
|---|---|---|
| 明確指定代理可用,但瀏覽器連線失敗 | 瀏覽器擴充功能、系統代理位址、PAC 與例外清單 | 不能因此認定瀏覽器已使用代理 |
| 連線至本機代理時遭拒 | 監聽連接埠、入口協定、核心是否正在執行 | 不能直接判定遠端伺服器故障 |
| 直連與代理都成功 | 搭配記錄判斷實際對外連線路徑 | 同一網頁能開啟,不代表兩次使用相同的連線路徑 |
| 代理請求逾時 | 依記錄時間檢查 DNS、路由與對外連線 | 單憑逾時無法判斷是哪個環節出問題 |
判斷方式:明確指定代理成功後,再調整系統設定
先保留一條可重複成功的明確代理命令作為基準。之後每次只修改瀏覽器、PAC 或環境變數其中一項;若基準測試仍成功、應用程式卻失敗,就能將排查範圍鎖定在應用程式的代理入口。
瀏覽器未使用代理:檢查系統設定與擴充功能
在 Windows 11 開啟「設定」→「網路和網際網路」→「Proxy」,確認目前啟用的是設定指令碼或手動代理。如果使用 v2rayN 的手動系統代理模式,位址與連接埠應與用戶端目前可用的 HTTP 或混合入口一致。若使用 PAC,請確認指令碼位址,不必要求手動代理開關也同時啟用。
- 重新設定系統代理。在 v2rayN 系統匣選單的「系統代理」中選擇「自動設定系統代理」。若目前介面的用詞不同,請選擇能寫入本機代理位址的對應選項,再回到系統設定確認結果。
- 暫時停用代理擴充功能。擴充功能可能固定使用特定伺服器、強制直連,或依自身規則分流。先停用相關擴充功能,再用一般視窗測試;無痕視窗並非絕對隔離,因為部分擴充功能也可能獲准在其中執行。
- 檢查瀏覽器本身的設定。若瀏覽器提供獨立的代理設定,請選擇使用系統代理;若沒有獨立設定入口,請檢查啟動參數是否固定使用代理或直連。
- 關閉後重新啟動。關閉所有瀏覽器視窗,並確認背景程序已結束,再開啟相同的測試位址,避免沿用舊連線影響判斷。
如果系統設定剛變更就自動還原,請優先檢查其他代理程式、瀏覽器擴充功能或組織管理政策。受管理的裝置請勿反覆覆寫政策設定,應向管理員確認允許使用的代理方式。系統代理正常但特定應用程式仍無法連線,也可能是該應用程式根本不會讀取這項設定。
PAC 模式與例外清單:先確認請求是否被略過
PAC 是由應用程式讀取並執行的代理選擇指令碼,常見回傳結果包括 DIRECT 和 PROXY 127.0.0.1:10808。它決定請求首先送往何處,與請求進入核心後才進行的路由分流屬於不同層級。PAC 回傳直連時,該請求可能根本不會進入 v2rayN。
- 確認指令碼位址可連線:將系統顯示的 PAC 位址複製到瀏覽器,檢查能否讀取指令碼內容。若位址位於本機,用戶端關閉或服務停止後,可能就無法載入指令碼。
- 確認指令碼使用正確連接埠:變更本機代理入口的連接埠後,請確認 PAC 內容也指向目前的入口,不要繼續使用舊連接埠。
- 檢查規則比對範圍:若目標網域符合直連規則,即使網頁能開啟,也不代表代理已生效。測試時應搭配 PAC 內容與核心記錄判斷。
- 檢查代理例外清單:保留有實際用途的本機位址例外,但也要確認沒有誤填範圍過大的網域規則。不同應用程式對萬用字元的解讀可能不同,請勿直接照搬其他工具的寫法。
Windows 手動代理的「例外」與 PAC 內部的直連邏輯,應依目前生效的模式分別檢查;終端機中的 NO_PROXY 則是另一套設定。請勿以為刪除系統中的例外項目,就會一併清除命令列工具的略過清單。
判斷方式:暫時固定代理入口,區分 PAC 與核心問題
先記下 PAC 位址,再暫時切換到已確認可用的手動代理入口。若瀏覽器隨即恢復連線,而明確代理命令一直成功,請優先檢查 PAC 載入與規則比對邏輯;找到原因後再還原原本模式,不必同時重設核心路由。
終端機未使用代理:檢查環境變數與工具設定
終端機中的程式不一定會讀取 Windows 系統代理。瀏覽器可以連線、命令列仍然逾時時,通常需要另外檢查工具的代理參數與環境變數。以下 PowerShell 設定只會影響目前工作階段及其後啟動的子程序,不會自動修改已經開啟的其他終端機視窗。
# 查看目前工作階段中名稱含有 proxy 的環境變數
Get-ChildItem Env: | Where-Object { $_.Name -match 'proxy' }
# 範例:替支援這些變數的工具設定 HTTP 代理
$env:http_proxy = "http://127.0.0.1:10808"
$env:https_proxy = "http://127.0.0.1:10808"
$env:no_proxy = "localhost,127.0.0.1"
# 不再明確指定 --proxy,確認 curl.exe 是否會讀取目前環境變數
curl.exe --connect-timeout 10 --max-time 20 -I https://example.com/
# 排查完成後,刪除本次設定的工作階段變數
Remove-Item Env:http_proxy,Env:https_proxy,Env:no_proxy -ErrorAction SilentlyContinue
https_proxy 表示連線至 HTTPS 目標時要使用哪個代理,並不要求代理位址本身使用 HTTPS。若本機入口只支援一般 HTTP 代理,將它設為 https://127.0.0.1:10808 反而可能造成 TLS 交握失敗。各工具對環境變數的支援與優先順序不盡相同,不能把 curl 的行為套用到所有程式。
- 檢查殘留變數:
ALL_PROXY可能仍指向舊的 SOCKS 連接埠,NO_PROXY可能包含目標網域或*。請先記下原值,再視需要調整。 - 留意大小寫:Windows 環境變數名稱通常不區分大小寫;Linux 等環境則要留意工具對大小寫變數的支援差異。curl 的 HTTP 代理變數尤其應使用小寫
http_proxy。 - 檢查工具專屬設定:命令列參數、使用者設定檔與環境變數可能互相覆寫。先用明確指定的
--proxy建立基準,再逐項還原設定。 - 確認執行環境:遠端終端機、容器及獨立網路環境中的
127.0.0.1指向它們自身,不一定是執行 v2rayN 的桌上型電腦。
連接埠占用與實際錯誤訊息:從監聽狀態開始檢查
如果明確指定代理的命令在連線本機連接埠時就失敗,請先檢查監聽狀態,而不是更換 VMess、VLESS 等協定參數。以下命令請在 PowerShell 中執行,連接埠沿用前文範例值。找到監聽記錄後,還要確認所屬程序;有程式正在監聽,不代表監聽者就是目前的 v2rayN 核心。
# 查看該連接埠是否正在監聽 TCP
Get-NetTCPConnection -LocalPort 10808 -State Listen -ErrorAction SilentlyContinue |
Select-Object LocalAddress,LocalPort,OwningProcess
# 查看監聽程序的名稱
Get-NetTCPConnection -LocalPort 10808 -State Listen -ErrorAction SilentlyContinue |
ForEach-Object { Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue }
# 檢查 Windows 的 WinHTTP 代理設定,作為另一項線索
netsh winhttp show proxy
netsh winhttp show proxy 顯示的是 WinHTTP 代理設定,不等同於瀏覽器使用的使用者系統代理。若結果顯示直連,不能據此判定 v2rayN 未正確寫入瀏覽器使用的系統設定;也請勿未經確認就將使用者代理匯入另一套設定。
錯誤:Connection refused
原因:連線至本機回送位址時出現這項訊息,通常表示目標連接埠沒有接受連線的服務,也可能是連線遭到主動拒絕。解法:確認實際監聽位址與連接埠,檢查核心啟動記錄,再使用正確的入口協定重試。
錯誤:address already in use
原因:這是常見的連接埠綁定錯誤,其他程序或重複啟動的執行個體可能已占用相同的位址與連接埠。解法:依監聽程序確認占用者,正常關閉衝突程式,或變更本機連接埠並同步更新系統代理、PAC 與終端機變數。
錯誤:Could not resolve proxy
原因:curl 無法解析代理主機名稱,常見原因包括代理位址拼錯、殘留變數或格式錯誤。解法:先使用明確的 http://127.0.0.1:10808 測試,再檢查環境變數與工具設定中的代理位址。
錯誤:Could not resolve host
原因:目前請求路徑中的目標網域解析失敗;實際發生位置取決於使用直連、SOCKS 或 HTTP 代理。解法:記下使用的命令與代理類型,搭配核心記錄確認請求是否進入代理,再檢查該路徑使用的 DNS 設定。
不同作業系統與核心版本顯示的完整錯誤訊息可能不同。記下錯誤關鍵字、發生時間與目標連接埠即可協助定位;不要只憑一個「逾時」就判定節點失效。如果本機入口已連通,且記錄顯示遠端連線失敗,再確認伺服器位址、連接埠、傳輸與安全性參數。
還原設定後,完成這三項檢查
找到原因後,請還原實際需要的代理模式,並清除排查時新增的暫時設定。特別要避免系統代理已改用新連接埠,終端機卻仍保留舊連接埠,或 PAC 仍指向變更前的位址。每次只還原一項,確認結果穩定後再繼續。
- 明確指定代理可重複成功:重新執行基準命令,確認本機入口與對外連線路徑仍能完成請求。
- 應用程式連線路徑明確:瀏覽器依預期使用系統代理或 PAC,終端機則按需求使用環境變數;並搭配記錄確認請求是否進入核心。
- 退出後的狀態可預期:停止使用代理前,先清除或還原系統代理。若用戶端異常結束後所有網頁都無法開啟,請確認系統是否仍指向已停止監聽的本機連接埠。
若需要進一步協助,請提供作業系統、v2rayN 介面類型、實際監聽協定與連接埠、系統代理模式、對照命令及對應時間的記錄。分享前請遮蔽訂閱網址、認證資訊與伺服器敏感欄位。設定概念可參閱進階設定;初次設定則可依照入門指南重新確認基本步驟。