系統代理設好了卻沒有效果?分開排查瀏覽器與命令列終端機

瀏覽器會使用系統代理,但終端機預設不會。本文分兩條路線排查:先用瀏覽器確認代理鏈路,再說明終端機為何需要另外設定環境變數。

本文速覽

這份清單適合已匯入節點、v2rayN 核心能啟動,但網頁或終端機命令仍連線失敗的情況。排查時先確認本機代理連接埠確實正在監聽,再分別測試瀏覽器與命令列工具,最後檢查 DNS、路由規則與遠端節點;完成後即可判斷問題位於應用程式、系統代理、本機入站或遠端出站。

先建立可重現的本機代理基準

「系統代理已啟用」只代表作業系統儲存了一組代理位址,不代表 v2rayN 的本機連接埠正在運作,也不代表每個應用程式都會讀取這組設定。一次完整排查至少要確認三個環節:核心正在執行、本機入站連接埠正在監聽,以及測試應用程式確實將請求送往該連接埠。

以 v2rayN 7.x 的常見設定為例,HTTP 代理可能監聽於 127.0.0.1:10809,SOCKS 代理可能監聽於 127.0.0.1:10808。這些數字只是常見範例,實際值應以用戶端介面中的本機監聽設定為準。升級版本、匯入備份或手動修改連接埠後,舊教學中的連接埠未必仍適用。

127.0.0.1
本機迴路位址
10809
常見 HTTP 連接埠範例
10808
常見 SOCKS 連接埠範例
3 層
應用程式、入站、出站
  1. 在 v2rayN 主介面確認目標節點已設為目前使用的伺服器,核心狀態沒有停留在啟動失敗或反覆重新啟動。
  2. 開啟「設定」→「參數設定」,記錄本機 HTTP、SOCKS 監聽連接埠與監聽位址。若選單文字隨版本調整,請尋找包含「本機連接埠」或「入站設定」的頁面。
  3. 從系統匣選單選擇「設定系統代理」的啟用狀態,不要誤選「清除系統代理」或「保持系統代理不變」。切換後完整關閉並重新開啟測試瀏覽器。
  4. 暫時選擇一個能完成延遲測試的節點,並將路由切換至方便驗證的代理模式。基準測試通過後,再恢復原本的分流規則。

瀏覽器路線:確認系統代理是否確實被讀取

多數桌面瀏覽器預設會讀取作業系統代理,但瀏覽器內部仍可能保留獨立代理策略、擴充功能設定或舊程序。修改系統代理後只重新整理頁面並不一定足夠,因為背景程序可能繼續使用啟動時讀取的設定。完整退出瀏覽器後重新開啟,即可排除這類快取狀態。

測試時先使用一般視窗,暫停會改變代理方式的瀏覽器擴充功能,並選擇一個之前未開啟過的網址。若一般網頁可以存取而特定網域失敗,表示本機代理鏈路大致已接通;下一步應檢查路由命中、DNS 解析與遠端目標,而不是反覆切換系統代理開關。

觀察結果 較可能的問題位置 下一步操作
所有網頁立即顯示連線遭拒 本機連接埠未監聽或連接埠填寫錯誤 核對 v2rayN 本機連接埠,檢查核心啟動記錄
頁面等待很久後逾時 節點出站、網路連通性或路由規則 切換至已知可用節點,查看出站逾時記錄
一個瀏覽器可用,另一個無法使用 瀏覽器獨立代理設定或背景程序 選擇「使用系統代理」,完整退出後重新開啟
網域失敗,直接存取測試 IP 有回應 DNS 查詢路徑或網域規則 檢查用戶端 DNS 設定與網域分流規則
瀏覽器可用,終端機命令直連失敗 終端機工具未讀取系統代理 為目前終端機設定代理環境變數

結論:瀏覽器成功不代表所有程式都已接管

瀏覽器測試通過,只能證明「瀏覽器→系統代理→本機入站→遠端出站」這條路線可用。終端機、背景服務與自行管理網路連線的程式,仍需個別確認代理來源。

瀏覽器仍然直連時要檢查什麼

終端機路線:使用環境變數或明確參數指定代理

命令列終端機只是啟動程式的容器,本身不會自動將所有網路連線轉交給系統代理。真正決定是否使用代理的是具體工具:有些會讀取 HTTP_PROXYHTTPS_PROXY,有些只接受命令參數,還有些需要寫入自己的設定檔。因此「瀏覽器能開啟,終端機卻逾時」通常不是節點突然失效,而是兩者走了不同的網路路徑。

對於支援 HTTP 代理環境變數的工具,可以先在目前的終端機工作階段暫時設定。代理位址中的協定仍寫成 http://,即使目標是 HTTPS 網站,工具也會透過 HTTP 代理建立 CONNECT 通道。以下繼續使用 10809 作為範例,執行前請替換為介面顯示的實際連接埠。

Windows PowerShell 暫時設定

$env:HTTP_PROXY="http://127.0.0.1:10809"
$env:HTTPS_PROXY="http://127.0.0.1:10809"
$env:NO_PROXY="localhost,127.0.0.1"

這三行只會影響目前的 PowerShell 程序及其之後啟動的子程序。關閉視窗後設定便會自然消失,適合排查,不適合長期依賴。查看目前值可執行 $env:HTTPS_PROXY;清除時使用 Remove-Item Env:HTTP_PROXYRemove-Item Env:HTTPS_PROXY

Windows 命令提示字元暫時設定

set HTTP_PROXY=http://127.0.0.1:10809
set HTTPS_PROXY=http://127.0.0.1:10809
set NO_PROXY=localhost,127.0.0.1

macOS 與 Linux 目前 Shell 暫時設定

export HTTP_PROXY="http://127.0.0.1:10809"
export HTTPS_PROXY="http://127.0.0.1:10809"
export NO_PROXY="localhost,127.0.0.1"

若工具支援 SOCKS5,可以使用明確參數驗證 10808 連接埠。socks5h 中的字母 h 表示讓代理端解析目標網域,這有助於區分「本機 DNS 失敗」與「代理鏈路失敗」。並非所有程式都會讀取 ALL_PROXY,因此明確參數通常更適合用於第一輪驗證。

curl -v --proxy socks5h://127.0.0.1:10808 https://example.com/
curl -v --proxy http://127.0.0.1:10809 https://example.com/

根據實際錯誤將問題定位到具體層級

終端機的詳細輸出比「無法存取」更有價值。使用 curl -v 時,先確認它連線的是否為 127.0.0.1 與預期連接埠,再查看代理是否成功建立通往目標網站的通道。若第一步就失敗,問題在本機;若本機連線成功後才逾時,問題通常已轉移至路由或出站。

錯誤:curl: (7) Failed to connect to 127.0.0.1 port 10809

原因與解法:本機 HTTP 連接埠沒有監聽,或命令使用了錯誤連接埠——開啟「設定」→「參數設定」核對連接埠,確認 v2rayN 核心已成功啟動。

錯誤:curl: (5) Could not resolve proxy: 127.0.0.1:10809

原因與解法:代理變數格式可能寫錯,工具將整段內容當成代理主機名稱——將值寫成 http://127.0.0.1:10809,並清除多餘引號、空格或重複的協定標頭。

錯誤:Proxy CONNECT aborted

原因與解法:HTTP 代理已收到請求,但通道未能成功建立——確認連接埠類型沒有填成 SOCKS,再檢查 v2rayN 的出站記錄與目前使用的節點。

錯誤:connection refused

原因與解法:目標位址主動拒絕連線——若被拒絕的位址是 127.0.0.1,請檢查本機監聽;若記錄顯示遠端伺服器拒絕,應核對節點位址、連接埠與協定參數。

錯誤:context deadline exceeded

原因與解法:請求未能在限定時間內完成——先切換至另一個已知可用節點,再分別檢查 DNS、網路丟包,以及路由是否將目標錯誤送往直連出站。

執行記錄應依什麼順序查看

  1. 入站:執行測試命令時,是否出現來自本機的新連線。完全沒有記錄,表示應用程式未使用代理或連接埠填寫錯誤。
  2. 路由:目標網域或 IP 被送往代理、直連還是阻斷出站。在分流模式下,規則命中結果比節點延遲更重要。
  3. 出站:是否出現連線逾時、連線遭拒、網域解析失敗或驗證參數錯誤。這裡的錯誤才直接與遠端節點相關。
  4. 返回:通道建立後是否很快被重設。若只有特定目標發生,還需考慮目標服務的連線策略。

瀏覽器可用但部分命令失敗:檢查 DNS 與分流

同一網域在瀏覽器與終端機中可能採用不同的解析路徑。瀏覽器可能使用自身的安全 DNS 設定,終端機工具通常呼叫作業系統解析器;使用 socks5:// 時可能先在本機解析,使用 socks5h:// 時則會將網域交給代理端處理。解析位置不同,取得的位址與路由命中結果也可能不同。

分流規則同樣會造成「有些程式能用、有些程式不能用」的表象。V2Ray 或 Xray 核心會依據網域、IP、連接埠與入站標籤選擇出站。若目標網域被歸入直連規則,即使應用程式已連線至本機代理,請求仍可能從直連出口離開。此時系統代理並未失效,真正需要修正的是路由判斷。

結論:先判斷請求是否進入本機入站

執行記錄沒有新連線時,檢查應用程式代理設定;有入站卻沒有可用出站時,檢查路由與節點。沿著這條界線排查,比持續更換節點更容易得到穩定結論。

常見問題與復原方法

完成測試後應整理並還原暫時修改,避免下次啟動時舊變數、舊連接埠與新設定互相覆蓋。尤其是長期寫入環境變數的設定,即使 v2rayN 已退出,命令列工具仍會繼續嘗試連線至原本的本機連接埠,最後便會持續出現連線遭拒。

系統代理開關已啟用,瀏覽器為什麼仍然直連?

先完整退出瀏覽器,再確認瀏覽器網路設定選擇「使用系統代理」。重新整理頁面時同時觀察 v2rayN 記錄;沒有新增入站記錄,表示請求仍未進入本機代理。

瀏覽器正常,為什麼 curl 一直逾時?

先執行帶有 --proxy http://127.0.0.1:10809 的命令。明確指定代理成功後,再為目前終端機設定 HTTP_PROXYHTTPS_PROXY

HTTP 連接埠和 SOCKS 連接埠可以混用嗎?

不可以。HTTP 用戶端要連線至 HTTP 入站,SOCKS5 用戶端要連線至 SOCKS 入站。若範例連接埠分別為 10809 和 10808,填寫時仍應以用戶端的實際設定為準。

關閉 v2rayN 後終端機無法連線怎麼辦?

清除目前工作階段或系統中儲存的代理環境變數,再開啟新的終端機。若工具還有獨立代理設定,也要刪除指向 127.0.0.1 舊連接埠的項目。

只有一個網域無法開啟,需要重新安裝用戶端嗎?

通常不需要。先查看該網域的 DNS 結果與路由命中情況,再用簡單代理模式進行對照。其他目標正常時,本機監聽與基本代理鏈路通常已可運作。

排查完成後的收尾清單

  1. 將暫時切換的全域代理模式恢復為原本的路由分流設定。
  2. 清除僅用於測試的 HTTP_PROXYHTTPS_PROXYALL_PROXY 環境變數。
  3. 確認系統代理連接埠仍與 v2rayN 目前的本機 HTTP 連接埠一致。
  4. 保存一份有效節點、連接埠號碼、測試命令與關鍵錯誤的文字記錄,下次即可直接從失敗的層級繼續檢查。
  5. 若更換節點後恢復,繼續觀察一段時間,以區分短暫網路波動與節點設定錯誤。
下載 v2rayN查看四個平台的安裝套件