系統代理已開啟卻無效?瀏覽器與終端機疑難排解步驟

v2rayN 系統代理已開啟,瀏覽器卻沒走代理、終端機仍直接連線?本文分別整理瀏覽器設定與終端機環境變數的檢查步驟。

本文重點

適用於 v2rayN 已設定系統代理,但瀏覽器無法開啟目標網站、終端機仍直接連線的情況。先用明確指定代理的請求確認本機入口與節點可用,再分別檢查瀏覽器設定、終端機環境變數及路由記錄。本文以 127.0.0.1:10808 作為本機 HTTP 或混合入口範例;執行前請改成用戶端實際監聽的位址與連接埠。

一、區分系統代理、應用程式代理與路由

v2rayN 的「自動設定系統代理」主要是修改作業系統提供給應用程式讀取的代理設定,不代表所有網路連線都會經過代理。瀏覽器通常會讀取這項設定;命令列工具、背景服務及部分使用獨立網路模組的程式則可能完全忽略。因此,「瀏覽器正常、終端機失敗」通常是應用程式代理入口不同,不應直接判定節點失效。

應用程式代理設定 本機監聽入口 核心路由比對 對外連線 目標網站

在這條連線路徑中,系統代理只影響第一個環節;Xray 或 V2Ray 核心收到請求後,才會依路由規則選擇直連、代理或攔截。即使瀏覽器已連上本機連接埠,符合直連規則的網站仍會透過本機網路連出。「對外 IP 沒變」不能單獨用來證明系統代理失效。

設定位置影響範圍優先檢查項目
作業系統代理會讀取系統設定的應用程式位址、連接埠、略過清單、PAC
瀏覽器獨立代理該瀏覽器或目前的設定檔擴充功能、手動代理、組織政策
終端機環境變數支援這些變數的目前程序及其子程序變數名稱、協定、程序繼承
核心路由已送入核心的請求符合的規則及最終連線方式

TUN 是另一種接管網路流量的方式,不等同於系統代理。為減少變數,本文以未啟用 TUN 的情況進行排查;若目前網路仰賴 TUN,請先記錄原有設定,再於可接受連線中斷時進行隔離測試。請勿同時變更 TUN、DNS 與路由,否則難以判斷是哪項設定造成影響。

二、先確認本機連接埠與明確指定代理的請求

在 v2rayN 開啟「設定」→「參數設定」,確認本機監聽相關設定,並查看核心啟動記錄中的監聽資訊。不同版本的分組選項名稱可能不同,請以實際介面和記錄為準。以下數值僅供排查示範,並非所有版本通用的預設值;若連接埠只提供 SOCKS 服務,就不能當作 HTTP 代理使用。

127.0.0.1
本機迴圈位址
10808
本文的 HTTP/混合連接埠範例
15 秒
單次測試的逾時上限

在 Windows PowerShell 中,先查看監聽狀態,再執行明確指定代理的請求。請使用 curl.exe,避免部分 PowerShell 環境中的 curl 別名將命令交給其他工具。macOS、Linux 可將下方第二條命令中的 curl.exe 改為 curl。

Get-NetTCPConnection -State Listen -LocalPort 10808

curl.exe --noproxy "" --proxy http://127.0.0.1:10808 --connect-timeout 5 --max-time 15 -v https://example.com/ -o NUL

--noproxy "" 會在本次測試中清空略過清單,避免既有的 NO_PROXY 造成干擾。macOS、Linux 的輸出丟棄路徑請改為 /dev/null。範例網域僅用來確認連線,也請換成實際無法連線的目標網站重新測試;單一網站測試成功,不代表所有路由及目的連接埠都正常。

判斷方式:明確指定代理成功後,再檢查應用程式

若明確指定代理後能連上同一個目標,但瀏覽器或終端機的預設請求失敗,請優先修正該應用程式的代理入口設定;暫時保留已確認可用的節點與連接埠。

三、瀏覽器沒有走代理時的檢查順序

先讓 v2rayN 保持執行,並選取可用節點,再從系統匣選單「系統代理」→「自動設定系統代理」寫入設定。接著確認作業系統實際儲存的值,不要只看系統匣圖示狀態。其他代理程式、瀏覽器擴充功能或組織政策,都可能在設定寫入後再次覆寫內容。

  1. 確認系統設定

    Windows 11:開啟「設定」→「網路和網際網路」→「Proxy」,查看「使用 Proxy 伺服器」中的位址與連接埠。macOS:開啟「系統設定」→「網路」→目前使用的連線→「詳細資訊」→「Proxy」。Linux 桌面環境的設定位置各異;若使用 GNOME,可檢查「設定」→「網路」→「網路 Proxy」。

  2. 檢查瀏覽器代理入口

    Chrome:開啟「設定」→「系統」→「開啟電腦的 Proxy 設定」。Firefox:開啟「設定」→「一般」→「網路設定」→「設定」,確認是否選取「使用系統 Proxy 設定」;若選擇「不使用 Proxy」或手動設定,就不會如預期沿用系統設定。

  3. 暫停代理擴充功能

    在 Chrome 開啟「擴充功能」→「管理擴充功能」,暫時停用會控制代理的擴充功能,再以全新的瀏覽器設定檔測試。無痕視窗仍可能沿用政策或執行獲准使用的擴充功能,因此不能視為完全隔離的環境。

  4. 確認略過規則

    檢查系統代理例外清單、瀏覽器手動代理中的「不使用 Proxy」清單,以及是否啟用自動設定指令碼。PAC 可依目標選擇直連;未確認規則內容前,請勿假設 PAC 模式會讓所有網站都經過代理。

  5. 重新啟動後再測試

    關閉所有瀏覽器視窗並結束背景程序,再重新啟動。使用與命令列測試相同的完整網址發送請求,同時查看 v2rayN 記錄。Chrome 可在網址列輸入 chrome://policy,確認是否有組織套用的代理政策;受管理的裝置請洽管理員處理。

若瀏覽器請求完全沒有出現在核心記錄中,請先檢查瀏覽器代理入口;不過,只有在已啟用存取記錄且記錄層級適當時,「沒有記錄」才具參考價值。若記錄明確顯示目標採直連,問題出在路由選擇,而非系統代理開關。若請求已送往代理出口但仍失敗,再檢查節點連線及目標網站狀態。

四、分別用環境變數與單次參數測試終端機

終端機工具沒有統一的「使用系統代理」規範。支援代理環境變數的工具,可在目前終端機工作階段設定變數;支援命令列代理參數的工具,則適合用單次明確指定的參數來定位問題。變數只會傳給之後啟動的子程序,已在執行中的編輯器終端機與背景工作不會自動更新。

Windows PowerShell:先設定目前工作階段

$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"

curl.exe --connect-timeout 5 --max-time 15 -v https://example.com/ -o NUL

Get-ChildItem Env: | Where-Object Name -Match 'proxy'

HTTPS_PROXY 中的 http:// 描述的是「終端機到本機代理」使用的協定,不是目標網址的協定。連線至 HTTPS 網站時,HTTP 代理通常會透過 CONNECT 建立通道,因此不應只因目標是 HTTPS,就把變數值改成 https://127.0.0.1:10808。只有在本機入口確實提供 TLS 代理服務時,後者才可能適用。

macOS、Linux:留意變數名稱的大小寫

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'

curl --connect-timeout 5 --max-time 15 -v https://example.com/ -o /dev/null

env | grep -i proxy

在區分大小寫的環境中,curl 對 HTTP 代理特別只讀取小寫的 http_proxy;HTTPS 代理變數則支援對應的大小寫形式。其他工具的規則可能不同,請依工具文件設定。若同名變數的大小寫版本同時存在且值不一致,請先排除衝突,不要再加入更多變數。

若明確指定 --proxy 時能成功,但設定變數後卻失敗,請確認工具是否支援該變數、是否有專屬代理設定,以及請求是否符合略過清單。Windows 的 WinHTTP 設定與桌面系統代理是不同的入口;不要為了修復單一終端機工具,就貿然修改全域 WinHTTP 設定。

五、依實際錯誤訊息判斷故障位置

錯誤訊息比「網頁無法開啟」更能幫助定位。以下列出常見的輸出內容,實際文字會因 curl 版本、作業系統及瀏覽器語言而異。記下錯誤發生於本機連線、CONNECT、TLS 或目標回應階段,再決定要修改哪項設定。

curl: (7) Failed to connect to 127.0.0.1 port 10808

原因與解法:本機代理入口未接受連線。確認 v2rayN 核心正在執行,並檢查實際監聽連接埠與程序;若連接埠遭其他程式占用,請先排除衝突,再同步修改應用程式的代理入口。

ERR_PROXY_CONNECTION_FAILED

原因與解法:瀏覽器無法連上設定的代理。確認系統設定與擴充功能儲存的位址,排除舊連接埠、錯誤的代理主機及核心已結束等情況;先使用相同入口執行明確指定代理的 curl 測試。

curl: (5) Could not resolve proxy

原因與解法:代理位址中的主機名稱無法解析,或代理 URL 格式有誤。檢查環境變數是否包含多餘字元,並先使用已確認可用的 http://127.0.0.1:10808,排除代理主機名稱解析問題。

curl: (60) SSL certificate problem: unable to get local issuer certificate

原因與解法:目前 curl 使用的信任存放區無法建立憑證鏈,也可能與組織網路的 TLS 檢查有關。請確認系統時間、憑證來源及 curl 的憑證存放區設定;不要長期關閉憑證驗證來代替修復問題。

curl: (28) Connection timed out

原因與解法:在指定時間內未能完成連線或取得回應,僅憑這則訊息無法判斷故障位置。使用 -v 查看最後成功的階段,再搭配核心記錄區分本機入口、節點對外連線與目標網站逾時。

若瀏覽器運作正常,只有終端機出現憑證錯誤,請勿直接更換節點。瀏覽器與命令列程式可能使用不同的憑證信任存放區。同樣地,若終端機連線成功、瀏覽器卻顯示代理連線失敗,請先比對兩者使用的本機連接埠,而非據此判定整種協定都無法使用。

六、還原設定並保留必要的排查記錄

找出原因後,只保留必要設定。若工作流程確實需要代理環境變數,再將設定寫入對應 shell 的啟動檔,並確認是否影響本機開發服務。臨時測試結束後,可使用下列命令移除本文設定的變數;若測試前已有變數值,請還原原值,不要直接刪除。

清除目前工作階段的變數

# Windows PowerShell
Remove-Item Env:HTTP_PROXY, Env:HTTPS_PROXY, Env:NO_PROXY -ErrorAction SilentlyContinue

# macOS、Linux shell
unset http_proxy https_proxy no_proxy

這不會清除其他位置儲存的設定,例如工具專屬設定、其他大小寫形式的變數、shell 啟動檔或已啟動的子程序。瀏覽器測試時暫時停用的擴充功能,請逐一恢復並重新測試;若恢復某項後故障再度出現,就能找出具體的設定覆寫來源。

判斷方式:比較同一請求的結果,決定修改範圍

明確指定代理後成功,就檢查應用程式入口;請求進入核心但走錯對外路徑,就檢查路由;已選取代理出口但連線失敗,再檢查節點與網路。每次只調整一個環節,並用同一網址重新測試。

下載 v2rayN桌面版與 Android 用戶端