V2Ray 系統代理無效怎麼排查?瀏覽器能連線、終端機卻不行

分別檢查瀏覽器擴充功能與代理設定是否覆寫系統設定,再為終端機設定 http_proxy 環境變數,並逐一執行指令確認。

本文重點

適合已在 v2rayN 選好伺服器,卻遇到「瀏覽器能連線、終端機逾時」或相反狀況的使用者。先用明確指定代理的指令檢查本機入口,再分別確認瀏覽器代理來源與終端機環境變數,最後搭配路由和記錄檔找出問題。範例使用本機混合連接埠 10808,執行前請改成用戶端實際顯示的連接埠。

一、系統代理只設定代理,不會接管所有連線

v2rayN 的「設定系統代理」會將本機代理位址寫入作業系統的相關設定。應用程式是否讀取這些設定,取決於應用程式本身。瀏覽器通常會讀取系統代理,但許多命令列工具使用的是環境變數或自己的設定檔。因此,瀏覽器能連上同一個網址,不代表終端機也已透過代理連線。

應用程式讀取設定 連線至本機連接埠 核心比對路由 選擇輸出 連線至目標

這條連線路徑有三個互相獨立的環節:應用程式是否使用代理、本機連接埠能否接收要求,以及核心最後選擇哪條輸出路徑。V2Ray 或 Xray 負責核心處理,v2rayN 負責桌面端的設定與管理。VMess、VLESS 等是伺服器連線協定,不是瀏覽器代理類型的選項。

入口主要使用者排查重點
系統代理會讀取系統設定的應用程式手動代理、自動設定指令碼、略過清單
環境變數curl 等命令列工具變數名稱、協定前綴、目前程序是否繼承
應用程式專用設定瀏覽器擴充功能、開發工具是否覆寫系統設定或環境變數
TUN 模式由虛擬網卡與路由接管的流量系統路由、DNS 與排除規則

本文會先排除應用程式代理設定問題,不會一開始就啟用 TUN。若 TUN 已開啟,直連測試也可能被它接管;若要分辨兩種入口,可先記下原設定,再暫時關閉 TUN 進行比對。

二、先確認 v2rayN 監聽的連接埠,再測試明確指定代理

先查看 v2rayN 主畫面的本機連接埠資訊,並在「設定」→「參數設定」中確認本機監聽設定。不同版本的欄位名稱和預設值可能不同,別只依舊教學認定 HTTP 連接埠一定是 10809。以下假設 127.0.0.1:10808 是支援 HTTP 的混合入口;若實際入口只支援 SOCKS,請改用後文的 SOCKS 指令。

127.0.0.1
同一台電腦的迴路位址
10808
本文範例使用的混合連接埠
10 秒
範例連線逾時上限
  1. 確認核心正在執行

    在主畫面選取要使用的伺服器,查看記錄檔是否出現啟動失敗或連接埠遭占用的訊息。更新訂閱只會更新伺服器資料,不代表連線已成功建立。

  2. 確認本機連接埠

    開啟「設定」→「參數設定」,記下實際監聽連接埠及支援的入口類型。儲存變更後,確認核心已重新載入設定。

  3. 檢查連接埠是否正在監聽

    在 Windows PowerShell 執行下方指令。若沒有監聽結果,先解決核心啟動問題,暫時不必調整瀏覽器設定。

  4. 明確指定代理

    使用 curl 的 --proxy 參數直接指定入口,排除「工具究竟讀取哪一份代理設定」的不確定性。

# Windows PowerShell
Get-NetTCPConnection -State Listen -LocalPort 10808

curl.exe -v --connect-timeout 10 --max-time 25 --proxy http://127.0.0.1:10808 --noproxy "localhost,127.0.0.1" https://example.com/ -o NUL

Windows 請使用 curl.exe,避免舊版 Windows PowerShell 將 curl 解讀成其他指令。Linux 與 macOS 請使用 curl,並將輸出目標 NUL 改為 /dev/null。範例的略過清單只包含本機位址,確保目標網址不會因既有的 NO_PROXY 設定而略過代理。

結論:明確指定代理測試成功後,再調整應用程式設定

若記錄顯示 curl 已連上本機 10808 連接埠,並收到目標網站回應,請優先檢查終端機變數或瀏覽器覆寫設定;若連本機連接埠都連不上,先修正監聽位址、連接埠或核心啟動問題。僅憑網頁狀態碼無法判斷流量最後是否經由遠端代理輸出,還需要查看核心路由記錄。

三、瀏覽器排查:檢查擴充功能、手動代理與自動設定

瀏覽器正常、終端機失敗,可能只是瀏覽器另外設定了代理。反過來,明確指定代理的 curl 測試成功、瀏覽器卻失敗,也可能是擴充功能仍指向舊連接埠。先選定一個固定網址,記下瀏覽器目前的代理來源,再逐項調整設定,避免同時更動多項而無從比對。

自動設定指令碼可依網址指定使用代理或直接連線,系統略過清單也可能排除特定網域。若只有某個網站沒有走代理,先確認目標是否符合這些規則,不要立即更換伺服器。瀏覽器的安全 DNS 設定會影響部分網域的解析方式,但不等同於代理開關。

四、終端機排查:設定 http_proxy 與 https_proxy

命令列工具通常不會因為系統代理已開啟,就自動使用本機入口。先在目前的終端機暫時設定變數,確認可用後再考慮寫入使用者設定檔。以下位址適用於 HTTP 代理或支援 HTTP 的混合入口;即使目標是 HTTPS,代理位址的前綴仍可使用 http://。

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"

Get-ChildItem Env: | Where-Object Name -Match 'proxy'
curl.exe -v --connect-timeout 10 --max-time 25 https://example.com/ -o NUL

設定 $env: 會影響目前的 PowerShell 及其後續啟動的子程序,不會修改另一個已開啟的終端機。若要讓開發工具繼承變數,請從這個工作階段啟動工具,或修改永久環境設定後重新啟動工具。

Linux 與 macOS:在目前的 shell 匯出變數

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'

env | grep -i proxy
curl -v --connect-timeout 10 --max-time 25 https://example.com/ -o /dev/null

這裡的 127.0.0.1 必須與 v2rayN 位於相同的網路環境。容器、遠端 SSH 工作階段及部分虛擬化環境中的迴路位址,指向的是它們自身,而非桌面電腦。此時不能直接照抄這個位址,也不應為了排查而將代理連接埠開放至公用網路。

五、分辨 HTTP、SOCKS 與 DNS 解析問題

若入口只支援 SOCKS5,卻將它當成 HTTP 代理使用,可能會導致連線重設或協定錯誤。先確認本機入口類型,再使用相應指令。以下的 socks5h 會將目標網域交由代理端解析;一般的 socks5 則通常由 curl 在本機解析目標網域。

# Windows:透過 SOCKS5 入口,將目標網域交由代理端解析
curl.exe -v --connect-timeout 10 --max-time 25 --proxy socks5h://127.0.0.1:10808 --noproxy "localhost,127.0.0.1" https://example.com/ -o NUL

# Linux / macOS
curl -v --connect-timeout 10 --max-time 25 --proxy socks5h://127.0.0.1:10808 --noproxy "localhost,127.0.0.1" https://example.com/ -o /dev/null

錯誤:curl: (7) Failed to connect

原因:常見原因包括本機連接埠未監聽、位址錯誤,或要求是在另一個網路環境中執行。解法:先確認監聽狀態,再檢查指令中的迴路位址是否確實指向執行 v2rayN 的電腦。

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

原因:無法解析代理伺服器位址,或環境變數中的位址格式錯誤。解法:確認變數中沒有多餘字元;在本機測試時直接使用完整位址 http://127.0.0.1:10808。

錯誤:curl: (6) Could not resolve host

原因:目標網域在目前的解析路徑中解析失敗,可能是要求實際上直接連線,或 SOCKS 使用本機解析。解法:查看詳細輸出確認是否使用代理,再以 socks5h 進行對照測試,並檢查核心 DNS 記錄。

錯誤:curl: (60) SSL certificate problem

原因:TLS 憑證驗證失敗,可能與系統時間、信任憑證或網路中的憑證遭替換有關。解法:校正時間並檢查憑證鏈;不要把永久停用憑證驗證當成修復代理的方法。

錯誤訊息末尾通常還會附上目標位址和更具體的原因,請保留完整內容。若 HTTP 代理已回傳 200 Connection established,只代表 CONNECT 通道已建立,不代表後續 TLS 交握和目標內容要求一定成功。

六、要求進入核心後,檢查路由與伺服器輸出

應用程式連上本機入口,不代表要求一定會經由遠端伺服器輸出。v2rayN 的路由規則可能讓特定網域或 IP 直接連線。瀏覽器和終端機若使用不同網域、不同位址家族或不同重新導向目標,結果可能不同;比對時請固定完整網址。

觀察結果優先檢查項目下一步
明確指定代理測試成功,一般 curl 失敗環境變數與略過清單列出目前工作階段的變數,確認 no_proxy 與應用程式設定
curl 成功,瀏覽器失敗瀏覽器的獨立代理設定停用代理擴充功能,檢查系統模式與手動連接埠
入口有記錄,輸出連線逾時伺服器連線狀態與連線參數檢查節點位址、連接埠、傳輸設定及遠端服務狀態
要求使用直接連線的輸出路徑路由比對結果確認網域或 IP 規則及規則順序
本機連接埠未在監聽核心啟動與連接埠占用查看啟動記錄,修正設定或監聽衝突

測試期間可暫時提高記錄層級,但請限制持續時間。分享記錄前,請刪除訂閱網址、使用者識別資訊、造訪網域等敏感內容。若記錄明確顯示遠端交握或驗證失敗,再檢查 VMess、VLESS 等節點參數;這類錯誤與終端機是否讀取系統代理是兩個不同層次的問題。

結論:以入口和輸出證據完整確認連線路徑

保留同一次要求的 curl 詳細輸出與核心記錄,分別確認「連上哪個本機連接埠」及「使用哪條輸出路徑」。兩項資訊都確認後,再判斷問題出在應用程式設定、DNS、路由或伺服器,避免只憑輸出 IP 改變就反覆調整設定。

七、驗證完成後,還原暫時設定

暫時設定的環境變數會留在終端機中,可能導致退出 v2rayN 後,命令列仍嘗試連線至已關閉的連接埠。若這些變數是本次新增的,可依下方方法刪除;若原本已有企業代理或開發環境設定,請還原先前記錄的值,而非直接清空。

# Windows PowerShell:刪除目前工作階段中的暫時變數
Remove-Item Env:http_proxy, Env:https_proxy, Env:no_proxy -ErrorAction SilentlyContinue

# Linux / macOS:刪除目前 shell 中的暫時變數
unset http_proxy https_proxy no_proxy

用戶端與平台選擇

依裝置作業系統選擇用戶端,桌面端請使用 v2rayN。安裝後先確認實際監聽連接埠,再依本文分別測試瀏覽器與終端機。首次設定可參考使用教學。

下載v2rayN依作業系統選擇用戶端