系統代理只會影響讀取該設定的應用程式,不代表所有流量都會經過 v2rayN。本文先確認本機代理入口,再分別檢查瀏覽器的系統設定、擴充功能與 PAC,以及終端機的環境變數和工具設定。依序測試,就能將問題範圍縮小至本機監聽、應用程式連線、路由選擇或節點出口,避免一開始就重裝用戶端。
一、釐清系統代理、應用程式代理與節點出口
v2rayN 是桌面用戶端,負責管理設定並啟動代理核心。系統代理設定只是告訴遵循此設定的應用程式,將請求送至哪個本機位址與連接埠。若應用程式沒有讀取此設定,或自身設定覆蓋了系統設定,請求就可能直接連線至目標。終端機中的 curl、套件管理工具與開發工具,也不一定會沿用瀏覽器使用的系統代理。
排查時先固定一個測試網址和一個可用節點。暫時關閉 TUN,記下原本的系統代理模式與路由模式,避免兩種流量接入方式疊加,造成判斷困難。若所在網路必須依賴 TUN 才能運作,請先記下這項條件,不要將測試結果直接解讀為系統代理已正常運作。
- 本機入口:應用程式能否連線至
127.0.0.1上實際監聽的代理連接埠。 - 應用程式連線:瀏覽器和終端機是否確實使用此入口,而非舊連接埠或直連。
- 節點出口:請求進入核心後,是否依規則使用預期節點並成功連線至目標。
二、先用明確指定的代理測試本機連接埠
開啟 v2rayN 的「設定」→「參數設定」,查看本機監聽連接埠;部分版本會在「Core: 基礎設定」頁面顯示相關欄位。欄位名稱和介面配置可能因版本而異,請以目前畫面和啟動記錄為準。本文假設已確認 10808 是支援 HTTP 的混合入口;若實際使用獨立的 HTTP 連接埠,請替換下方所有範例連接埠。
在 Windows PowerShell 中使用 curl.exe,可避免部分 PowerShell 版本將 curl 解讀為其他命令。以下先查看監聽狀態,再明確指定代理;這些命令不受瀏覽器是否讀取系統代理影響。
Get-NetTCPConnection -State Listen -LocalPort 10808
curl.exe --proxy http://127.0.0.1:10808 --connect-timeout 10 --max-time 20 -I https://example.com
macOS 和 Linux 可使用以下 curl 命令進行相同的明確代理測試。測試前請檢查目前工作階段中的 NO_PROXY 與 no_proxy,確認其中未包含測試網域或萬用字元 *,否則可能會略過代理。
curl --proxy http://127.0.0.1:10808 --connect-timeout 10 --max-time 20 -I https://example.com
判斷方式:明確指定代理仍失敗,先別調整瀏覽器
先處理監聽連接埠或核心出口問題。若記錄顯示目標符合直連規則,即使明確指定本機代理,也無法證明流量經過遠端節點;還需要一併確認路由結果。
三、瀏覽器無法開啟網頁:依序檢查系統設定、擴充功能與 PAC
以下步驟主要以 Windows 桌面版為例。macOS 的系統代理可在「系統設定」→「網路」→目前的網路服務→「詳細資訊」→「代理」中查看;Linux 桌面環境的代理設定位置各不相同,而且終端機通常不會因此自動取得代理環境變數。
-
設定系統代理
在 v2rayN 系統匣選單中選取「系統代理」→「自動設定系統代理」。不要將「清除系統代理」當成啟用方式;「不修改系統代理」則會保留目前的系統設定,無法確保它指向這次啟動的連接埠。
-
確認系統位址
前往 Windows「設定」→「網路和網際網路」→「Proxy」,確認手動代理位址和連接埠與 v2rayN 目前的監聽設定一致。記下「使用設定指令碼」的狀態,避免舊 PAC 與手動設定交替影響測試結果。
-
停用代理擴充功能
暫時停用管理代理的瀏覽器擴充功能,再完全關閉瀏覽器後重新開啟。Chrome、Edge 通常會沿用系統代理,但擴充功能或啟動參數可能覆蓋此設定;受管理的裝置也應檢查瀏覽器政策。
-
檢查個別設定
Firefox 可在「設定」→「一般」→「網路設定」→「設定」中檢查連線方式。若要測試系統代理,請選擇「使用系統代理設定」;若選擇手動代理,則必須另外確認位址、連接埠和例外清單。
-
重新檢查 PAC 規則
若平常使用 PAC,請還原指令碼後測試相同網址。確認指令碼網址可連線、回傳內容是代理自動設定指令碼,並檢查目標網域是否回傳
DIRECT。指令碼中的本機連接埠也必須與目前入口一致。
PAC 決定應用程式是否將連線交給代理;v2rayN 的路由規則則決定流量進入核心後從哪裡送出。兩者處於不同階段。「PAC 選擇代理」不代表「核心一定選用遠端節點」。可先記下原設定,暫時改用明確的手動代理進行比對,再還原平常使用的 PAC。
- 只有某一個瀏覽器無法使用:優先檢查擴充功能、個別代理設定、啟動參數和瀏覽器政策。
- 所有瀏覽器都無法使用,但明確指定代理的 curl 測試成功:優先檢查系統代理位址、連接埠和略過清單。
- 只有特定網站無法使用:檢查該網域的 PAC 回傳值、路由規則,以及網站本身的回應。
四、終端機未使用代理:分別檢查環境變數與工具設定
環境變數名稱相近,但用途不能混為一談。https_proxy 表示 HTTPS 目標請求要使用哪個代理,不代表代理入口必須採用 HTTPS 協定。若本機入口是 HTTP 代理,變數值仍可設為 http://127.0.0.1:10808,工具會透過 CONNECT 建立 HTTPS 通道。
在 PowerShell 中,先查看現有變數,再為目前工作階段設定代理。此範例只會影響目前終端機及其後續啟動的子處理程序,不會變更整台裝置的長期設定。curl 處理 HTTP 目標時通常會讀取小寫的 http_proxy,不要只依賴大寫的 HTTP_PROXY。
Get-ChildItem Env: | Where-Object Name -Match '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'
curl.exe --connect-timeout 10 --max-time 20 -I https://example.com
在 Bash、Zsh 等 shell 中,可依照下列方式設定目前工作階段。若先前有設定大寫的略過變數,請先確認其內容,避免不同工具採用不同的大小寫讀取順序。修改 shell 設定檔後,其他已開啟的終端機不會自動更新。
env | grep -i 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 10 --max-time 20 -I https://example.com
| 設定位置 | 檢查項目 | 常見誤判 |
|---|---|---|
| 命令參數 | curl 的 --proxy、--noproxy | 明確指定的參數或略過條件會改變環境變數的作用。 |
| 環境變數 | http_proxy、https_proxy、ALL_PROXY | 只設定一個變數,就以為所有工具都會使用代理。 |
| 略過清單 | no_proxy、NO_PROXY | * 或目標網域可能讓請求略過代理。 |
| 工具設定 | 例如 npm config get proxy 和 npm config get https-proxy | 工具仍保留舊連接埠,覆蓋了預期設定。 |
| 獨立執行環境 | 容器、遠端終端機、子系統的網路與變數 | 其中的 127.0.0.1 並不是主機的代理入口。 |
五、依據實際錯誤判斷故障階段
以下列出常見的原始錯誤訊息片段。同一錯誤可能有多種原因,請搭配請求時間和 v2rayN 記錄判斷。分享記錄前,請刪除訂閱網址、節點憑證和個人瀏覽記錄,只保留必要的錯誤行與連接埠資訊。
錯誤:curl: (7) Failed to connect to 127.0.0.1 port 10808
可能原因與處理方式:本機連線未建立,常見原因包括核心未啟動、連接埠錯誤或入口無法連線。先查看監聽狀態和核心啟動記錄,再依實際連接埠重新測試,不要先更換遠端 DNS。
錯誤:ERR_PROXY_CONNECTION_FAILED
可能原因與處理方式:瀏覽器無法正常連線至設定的代理入口。請確認系統位址、擴充功能設定和 PAC 回傳的連接埠,並使用相同位址執行明確指定代理的 curl 測試。
錯誤:curl: (5) Could not resolve proxy
可能原因與處理方式:代理位址本身無法解析,可能是連接埠、協定或空格寫在錯誤位置。請確認變數值完整設定為 http://127.0.0.1:10808,再檢查工具的個別設定。
錯誤:curl: (6) Could not resolve host
可能原因與處理方式:目標網域解析失敗。請先確認請求是否採用直連,或使用由本機解析的 SOCKS 模式。檢查略過清單和實際代理方式;若需要由代理端解析,可使用已確認可用的 SOCKS5 入口,搭配 socks5h 進行比對。
錯誤:curl: (28) Operation timed out
可能原因與處理方式:請求未能在限定時間內完成,單憑逾時無法判斷故障位置。請查看核心是否收到請求、採用哪個出口,再分別檢查節點連線狀態和目標網站。
HTTP 代理測試出現 200 Connection established,只代表 CONNECT 通道已獲接受,還需繼續檢查目標 TLS 交握和最終 HTTP 回應。目標回傳 403 或 405 也不代表代理失效;部分網站會限制存取來源或 HEAD 請求。請勿關閉憑證驗證來掩蓋 TLS 錯誤。
六、完成比對測試後,還原日常設定
為避免快取和偶發的網路變化造成干擾,請使用相同的測試網域,依下列順序記錄結果。每次只變更一個項目,至少記錄是否成功、錯誤訊息片段,以及記錄中的實際出口。本文的逾時值只是測試參數,不代表實際測得的節點速度或網路品質。
- 明確指定代理測試:使用
--proxy指向已確認的本機連接埠,並確認略過清單未排除目標。 - 瀏覽器測試:停用代理擴充功能、啟用系統代理,連線至相同網域並確認核心記錄。
- 終端機環境變數測試:移除明確指定代理的參數,只保留目前工作階段的環境變數,再送出請求。
- 直連比對:curl 使用
--noproxy '*'可略過應用程式層的代理;若 TUN 仍在執行,這不代表網路層是直連。 - 還原設定:還原原本的 PAC、路由和 TUN 狀態,移除臨時變數,再測試常用應用程式。
結論:確認本機入口可用後,再處理應用程式連線
明確指定代理測試成功、瀏覽器仍失敗時,集中檢查系統設定、擴充功能和 PAC;瀏覽器成功、終端機失敗時,則檢查環境變數、略過清單和工具設定。只有請求已進入核心但仍失敗時,才進一步檢查路由、DNS 和節點出口。
若要清除 PowerShell 目前工作階段中的臨時變數,可執行 Remove-Item Env:http_proxy, Env:https_proxy, Env:no_proxy -ErrorAction SilentlyContinue;在 Bash、Zsh 中可執行 unset http_proxy https_proxy no_proxy。若原本已設定這些變數,請還原記錄的原值,而非直接刪除。若想進一步了解設定概念,可閱讀本站的故障排除說明或術語表。