適用於 v2rayN 已啟動,但瀏覽器無法開啟目標網站、終端機仍直接連線,或只有部分應用程式能連線的情況。先用明確指定代理的請求驗證本機入口,再分別檢查瀏覽器代理控制權、系統 PAC 設定和終端機環境變數。以下以 Windows 為主,並補充 Bash 與 Zsh 的檢查指令;範例連接埠請替換為用戶端實際監聽的連接埠。
一、先釐清系統代理、應用程式連線方式與路由分流
v2rayN 的「自動設定系統代理」並非強制將整台電腦的網路請求送進代理。它會修改系統代理設定,只有會讀取這些設定的應用程式才會使用本機代理入口。瀏覽器通常會讀取,但擴充功能、瀏覽器政策和獨立代理設定可能會覆寫系統設定;命令列工具是否讀取,則取決於工具本身的實作。
路由模式是在應用程式接入代理之後才會生效。即使選擇「全域」,未進入本機監聽連接埠的請求也不會因此被接管。反過來說,已進入核心的請求仍可能依目前的路由規則直接連線。排查時先確認請求是否有進入代理,再檢查它使用哪個出站,避免混淆這兩層設定。
- 瀏覽器可用、終端機無法使用:優先檢查終端機代理參數與環境變數,先不用急著更換節點。
- 明確指定代理可用、瀏覽器無法使用:優先檢查擴充功能、PAC 和瀏覽器的獨立代理設定。
- 明確指定代理也無法使用:先檢查連接埠、核心執行狀態和出站記錄,系統代理開關暫時不是重點。
- 只有部分網域異常:再確認略過清單、路由比對、DNS 與目標網站的回應。
二、指定連接埠驗證本機代理入口
先在 v2rayN 主畫面底部的狀態列查看本機連接埠,再前往「設定」→「參數設定」確認監聽連接埠及通訊協定類型。不同版本可能會顯示 SOCKS、HTTP 或混合監聽入口,請勿直接套用其他教學中的數字作為本機設定。以下假設已確認 127.0.0.1:10808 可接受 HTTP 代理;若該連接埠僅支援 SOCKS,請使用後面的 SOCKS 指令。
在 Windows PowerShell 中,先檢查連接埠是否可連線,再使用 curl.exe 明確指定代理。使用 curl.exe 可避開部分 Windows PowerShell 環境中 curl 別名指向其他命令的問題。測試目標為 https://example.com/,僅用於檢查請求鏈路,不代表特定服務網站一定可連線。
Test-NetConnection 127.0.0.1 -Port 10808
curl.exe --noproxy "" --proxy http://127.0.0.1:10808 --connect-timeout 5 --max-time 20 -I -v https://example.com/
--noproxy "" 會在這次命令中清空略過清單,避免現有的 NO_PROXY 影響測試。若入口僅支援 SOCKS5,請改用以下指令;socks5h 表示將目標網域交由代理端解析,而非先由 curl 在本機解析。
curl.exe --noproxy "" --proxy socks5h://127.0.0.1:10808 --connect-timeout 5 --max-time 20 -I -v https://example.com/
結論:先確認入口,再檢查自動接入設定
明確指定代理並收到目標網站的 HTTP 回應後,再檢查瀏覽器與終端機的自動代理設定。只有 200 Connection established 還不夠,這表示通道已建立;還要確認 TLS 交握及後續目標回應。目標網站回傳 403,也不代表本機連接埠失效。
三、檢查瀏覽器擴充功能控制權與 PAC 殘留
以下以 Windows 11 的 Chrome、Edge 和 Firefox 為例。請先記下目前的代理設定,特別是工作網路使用的指令碼網址。受組織管理的裝置應依管理員要求處理,請勿直接刪除既有設定。無痕視窗並非可靠的擴充功能隔離測試:部分擴充功能仍可在無痕模式中執行,系統設定也會繼續沿用。
-
停用代理擴充功能
在 Chrome 開啟「擴充功能」→「管理擴充功能」;在 Edge 開啟「擴充功能」→「管理擴充功能」。暫時停用會控制代理、自動切換規則或網路請求的擴充功能,關閉所有瀏覽器視窗後重新啟動,再測試相同的目標網址。
-
檢查系統代理入口
在 Windows 開啟「設定」→「網路和網際網路」→「Proxy」。確認「手動設定 Proxy」中的位址與連接埠,並確保與本機 HTTP 或混合監聽入口一致。只填入位址的欄位請使用
127.0.0.1,不要填入完整的代理網址。 -
檢查指令碼設定
在同一頁檢查「使用設定指令碼」。個人裝置若仍啟用舊 PAC 網址,請先記下設定,再暫時關閉,只保留這次要驗證的一種接入方式。請勿同時修改指令碼、手動連接埠與路由預設值,否則無法判斷是哪項設定解決了問題。
-
檢查獨立代理設定
在 Firefox 開啟「設定」→「一般」→「網路設定」→「設定」。若要沿用 v2rayN 寫入的系統設定,請選擇「使用系統代理設定」;若保留手動代理,則逐一確認連接埠。請勿將 SOCKS 專用連接埠填入 HTTP 代理欄位。
-
重新寫入系統代理設定
確認明確指定本機代理的測試通過後,在 v2rayN 系統匣選單的「系統代理」中,先選擇「清除系統代理」,再選擇「自動設定系統代理」。接著重新開啟 Windows 代理設定頁面,確認位址和連接埠確實如預期變更。
PAC 是依據網址、網域等條件決定代理方式的指令碼,可能會讓部分請求直接連線。因此,「有指令碼網址」不代表所有請求都會使用 v2rayN。若瀏覽器顯示設定由組織管理,或關閉後又自動恢復,請繼續檢查管理政策及其他正在執行的代理工具,而非反覆點選系統代理按鈕。
四、分別檢查終端機變數、通訊協定與程序環境
瀏覽器可以連線,不代表終端機會自動使用代理。對 curl 等工具,請先使用上一節的 --proxy 參數驗證,再設定目前終端機工作階段的環境變數。這裡的 https_proxy 表示「存取 HTTPS 目標時使用的代理」,其值仍可為 http://127.0.0.1:10808:用戶端會透過 HTTP 代理的 CONNECT 方法建立目標 TLS 通道,並不需要將代理網址改成 HTTPS。
PowerShell:先查看,再設定目前工作階段
Get-ChildItem Env: | Where-Object Name -Match '^(http_proxy|https_proxy|all_proxy|no_proxy)$'
$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,::1'
Remove-Item Env:all_proxy -ErrorAction SilentlyContinue
curl.exe --connect-timeout 5 --max-time 20 -I -v https://example.com/
以上指派只會修改目前的 PowerShell 程序及之後啟動的子程序,不會自動變更已在執行的終端機、編輯器或背景工作。Windows 的環境變數名稱不區分大小寫;在其他系統則要留意大小寫版本。請勿將包含憑證的代理變數輸出內容貼到公開討論區。
Bash / Zsh:清除衝突後使用小寫變數
env | grep -iE '^(http|https|all|no)_proxy='
unset HTTP_PROXY HTTPS_PROXY ALL_PROXY NO_PROXY all_proxy
export http_proxy='http://127.0.0.1:10808'
export https_proxy='http://127.0.0.1:10808'
export no_proxy='localhost,127.0.0.1,::1'
curl --connect-timeout 5 --max-time 20 -I -v https://example.com/
curl 對 http_proxy 的大小寫處理方式較特殊,跨平台排查時建議優先使用小寫。部分工具支援通用代理變數 ALL_PROXY,但不能假設所有工具都會讀取;NO_PROXY 則用於略過代理。若其中包含目標網域,甚至設為 *,就可能出現「變數有值,但請求仍直接連線」的情況。不同工具的比對語法不盡相同。
- 只有目前視窗失敗:比較兩個終端機工作階段的變數,確認舊視窗是否仍使用舊連接埠。
- 編輯器內的終端機失敗:如果是在編輯器啟動後才變更變數,請重新啟動編輯器,讓新開啟的終端機繼承更新後的環境。
- 子系統或容器內無法使用:
127.0.0.1可能指向子系統或容器本身,而非主機。請依實際網路模式確認主機位址,不要直接照搬主機的迴路位址。 - curl 可用,其他工具失敗:檢查該工具的獨立代理設定及官方支援方式,不要因此判定 v2rayN 無效。
測試結束後,可在 PowerShell 中使用 Remove-Item Env:http_proxy,Env:https_proxy,Env:no_proxy -ErrorAction SilentlyContinue 移除這次設定的變數;Bash / Zsh 則使用 unset http_proxy https_proxy no_proxy。若測試前已有變數值,請還原記下的原值,而非直接刪除。
五、依實際錯誤訊息判斷故障階段
保留命令列的完整錯誤訊息與發生時間,並對照 v2rayN 記錄中的同一筆請求。以下列出 curl 常見的原始錯誤片段;連接埠、目標網址和逾時毫秒數會因環境而異。錯誤碼可縮小排查範圍,但仍須搭配明確指定代理的測試判斷,不能只看一句「連線失敗」。
錯誤:curl: (7) Failed to connect to 127.0.0.1 port 10808
原因:curl 無法連線至此本機入口,可能是核心尚未啟動、監聽連接埠不符,或連線遭本機政策阻擋。
解決方式:確認實際監聽連接埠與核心記錄,再使用 Test-NetConnection 檢查;確認監聽程序的身分,請勿直接關閉整套防火牆。
錯誤:curl: (5) Could not resolve proxy
原因:無法解析代理伺服器名稱,常見原因是代理位址有誤,或變數中包含格式錯誤的主機名稱。
解決方式:在本機測試時明確指定已確認的迴路位址與連接埠,檢查變數內容後,再重試相同指令。
錯誤:curl: (28) Connection timed out
原因:連線或資料傳輸超過時間限制;僅憑逾時無法判斷是本機入口、遠端出站或目標網站故障。
解決方式:從 -v 輸出確認是否已連上本機連接埠,再比對同一時間的核心記錄,檢查出站連線與目標回應。
錯誤:curl: (60) SSL certificate problem
原因:憑證驗證失敗,可能與系統時間、信任鏈或網路中的 HTTPS 檢查有關,不代表請求未進入代理。
解決方式:檢查系統日期、憑證簽發者與系統信任設定,請勿將關閉憑證驗證當成長期解決方式。
如果記錄顯示請求符合直連規則,請繼續檢查路由,而非重新安裝瀏覽器。VMess、VLESS 等節點通訊協定描述的是代理出站連線;本機應用程式通常接入 HTTP 或 SOCKS 入口。將節點通訊協定名稱填入 http_proxy,並不能建立正確的本機代理連線。
六、依比對結果確認問題,避免一次修改多個層級
每次只修改一項設定,並重新測試同一個目標。建議保留三組結果:明確指定代理的 curl、只依賴環境變數的 curl,以及停用代理擴充功能後的瀏覽器連線。這樣既能定位故障,也方便在更新用戶端、變更連接埠或切換網路後重現檢查流程。
- 明確指定代理成功,變數測試失敗:檢查變數值、略過清單、程序環境繼承與工具設定。
- 兩組 curl 測試都成功,瀏覽器失敗:檢查擴充功能、PAC、獨立代理設定與管理政策。
- 連接埠可連線,但明確指定代理失敗:確認入口通訊協定是否相符,再檢查核心記錄、節點連線和目標網站。
- 全部恢復正常:視需要逐一重新啟用擴充功能及既有指令碼;每恢復一項就重新測試一次,找出確切的衝突來源。
結論:以同一筆請求的接入證據為準
系統代理按鈕的狀態只代表設定動作,不代表目標請求確實經由代理。比對用戶端記錄、curl 詳細輸出與應用程式代理設定,比反覆切換全域模式更容易找出故障所在。
如需進一步排查,請記錄作業系統版本、v2rayN 版本、監聽通訊協定與連接埠、失敗指令及錯誤時間。提交記錄前,請移除訂閱網址、存取權杖、節點憑證及個人目標網址。更新訂閱主要會變更連線設定,不會替終端機補上環境變數,也不會自動解除瀏覽器擴充功能的代理控制權。