怎麼確認 VPN 真的生效:出口 IP、DNS 與 分應用 三步驗證

連上了不等於走對了:查出口 IP、查 DNS、分應用程式驗證三步走,並列出「看起來連上其實沒走」的幾種常見情況。

用戶端狀態燈亮著,網頁打開卻還是原來的樣子——這是「怎麼確認 VPN 真的生效」最常見的提問。答案不是再看一眼連線狀態,而是按三個層面依序核對:出口位址有沒有真的換掉、網域名稱解析有沒有跟著隧道走、正在使用的那個應用程式有沒有被納入代理。三步都過,才算走對了;只過第一步就收工,漏掉的往往正是後面兩層。

為什麼「已連線」不等於生效

狀態燈只說明一件事:本機到節點這一段的隧道已經建立。它不說明流量有沒有被接管,不說明接管之後走了哪條規則,也不說明網域名稱解析跟著走了沒有。這三件事分別由用戶端的接管模式、分流規則和 DNS 設定決定,任何一環出偏差,表現都是「顯示已連線,實際沒走」。

接管方式常見三種。系統代理只對讀取系統代理設定的程式生效,瀏覽器通常會讀,很多桌面用戶端不讀;TUN 虛擬網卡在網路層接管 IP 流量,覆蓋面最廣;分應用程式代理只把名單裡的應用程式送進隧道,名單外的應用程式照舊直連。判斷「是否生效」的方法,取決於目前用的是哪一種。

協定是另一層。Shadowsocks、VMess、VLESS、Trojan 負責把流量封裝後送到節點,Hysteria2、TUIC 基於 QUIC、以 UDP 承載,弱網環境下更穩。協定決定的是「怎麼送」,不決定「哪些流量被送」,所以換協定修不好分流誤判,只能改善鏈路品質。

訂閱連結只是節點清單的載體。用戶端匯入訂閱後按連結裡的節點清單產生設定;訂閱過期或連結失效,節點清單不再更新,但本機已儲存的節點仍可能握手成功。這類情況下狀態燈同樣會亮,實際卻轉發不出去。

第一步:核對出口 IP 與 所在地

先記錄基準。連線之前,在瀏覽器打開任意位址查詢頁,或在終端機執行一條指令,把目前的出口位址與所在地記下來。

# 連線前:記錄出口位址與所在地
curl -s https://ipinfo.io/json

# 連線後:ip 與 country 兩項都應該改變
curl -s https://ipinfo.io/json

連上節點之後,換一個無痕視窗再查一次。用無痕視窗是為了排除快取與瀏覽器擴充功能的干擾——有些代理類擴充功能會自行接管請求,讓結果看起來與用戶端無關。

判斷標準只有兩條:位址變了;所在地與所選節點所在區域一致。兩條同時滿足,才說明流量確實從境外出口出去。

有幾種情況需要區別對待。公開的位址歸屬資料庫之間存在差異,任播位址與跨國廣播位址可能顯示為鄰近區域,這不算異常;串流平台用的是自己的判定資料庫,不以公開資料庫為準,所以「位址歸屬正確、平台仍按本地顯示」是可能出現的結果。反過來,位址沒變也不一定是故障:分流模式下存取境內網站本來就該走本地出口,需要測的是境外網站那一次請求。

分流模式下存取境內網站顯示本地位址是設計如此。測出口位址時,務必用一個確定會走代理的境外網站,或暫時切到全域模式再測一次做對比。

第二步:確認網域名稱解析沒有落回本地

DNS 洩漏指的是:流量進了隧道,網域名稱解析請求卻沒有跟著進去,而是發給了本地電信商。後果有兩層——存取清單暴露給本地解析方,以及解析結果按本地位置回傳,於是出現「出口位址是境外的,拿到的內容還是本地的」。

驗證方法並不複雜:打開一個 DNS 洩漏檢測頁,它會列出實際應答的解析伺服器及其歸屬。正常表現是應答伺服器位於出口地區,或屬於服務商下發的 DNS;異常表現是應答伺服器為本地電信商。檢測時同樣用無痕視窗,避免瀏覽器快取的解析結果干擾判斷。

分流模式下有一個例外:境內網域走本地 DNS 是設計如此,不算洩漏。要看的是境外網域那一部分的應答伺服器。

瀏覽器內建的安全 DNS(DoH)會繞過系統與用戶端的 DNS 設定,直接向第三方解析伺服器發查詢,這是「IP 對了、內容還是本地」的高頻原因。檢測前先在瀏覽器設定裡確認「使用安全 DNS」的狀態,關閉後再測一次做對比。

IPv6 是同一類問題的另一面。隧道只接管 IPv4 時,支援 IPv6 的網站會從本地 IPv6 出口出去,檢測頁回傳的就是本地位址。處理方式有兩種:在系統裡關閉 IPv6,或讓用戶端接管 IPv6 流量。

第三步:分應用與分流規則逐項確認

第三層最容易被跳過,因為它不在用戶端主畫面上。分應用程式代理的邏輯是「只代理名單裡的應用程式」:名單外的應用程式即使隧道已經建立,流量依舊直連。核對方式是打開用戶端的分應用程式清單,逐項確認要用的應用程式在不在裡面,改完名單後重新啟動目標應用程式——多數程式只在啟動時讀取一次代理設定。

平台之間的差異

桌面端常見系統代理與 TUN 兩種模式,TUN 覆蓋所有程式,系統代理只覆蓋讀取系統設定的程式;Android 用戶端普遍提供依應用程式代理;iOS 受系統限制,通常以整條隧道的方式運作,沒有同等的依應用程式開關;Linux 上多為命令列與系統代理,需要手動設定 http_proxy、https_proxy 環境變數,或改用 TUN 模式。同一份訂閱在不同平台上表現不一致,多數時候是這一層造成的。

分流規則怎麼影響判斷

規則通常按網域後綴、GeoIP 地區、行程名稱比對,命中直連的網域不會進隧道。判斷方法很直接:把用戶端暫時切到全域模式,再存取同一個網站。切全域後正常、切回分流又不正常,問題就在規則,而不是節點。線路類型(IEPL 專線、中轉、直連)影響的是鏈路穩定性與繞行路徑,不會改變「哪些流量被代理」,排查時不要把兩者混在一起。

層面怎麼查正常表現異常訊號
出口位址連線前後各查一次位址與所在地位址改變,所在地與節點地區一致位址未變,或所在地與節點不符
網域名稱解析DNS 洩漏檢測頁應答伺服器在出口地區,或為服務商下發應答伺服器是本地電信商
分流規則切全域模式,對比同一網站全域與分流結果一致只有全域模式正常
分應用程式用戶端的分應用程式清單逐項核對目標應用程式在代理名單內應用程式不在名單,實際走直連
IPv6支援 IPv6 的檢測頁與 IPv4 出口一致,或不回傳回傳本地 IPv6 位址

七種 常見情況:狀態正常卻沒走隧道

下面這些情況,狀態燈都是正常的,實際卻沒有按預期走。按現象對照排查,比反覆重新連線有效。

現象常見原因處理
狀態已連線,瀏覽器仍顯示本地位址用戶端處於系統代理模式而該程式不讀系統代理;或網域命中直連規則改用 TUN 模式,或把網域加入代理規則後重測
出口位址正確,部分網站仍按本地顯示瀏覽器安全 DNS 繞過用戶端關閉瀏覽器安全 DNS 後重測
只有某個應用程式不走隧道該應用程式不在分應用程式名單裡勾選後重新啟動應用程式再試
檢測頁回傳本地 IPv6 位址隧道只接管 IPv4關閉系統 IPv6,或讓用戶端接管 IPv6
換節點後仍打不開,過一會又正常DNS 快取與連線重用用無痕視窗或清除快取後重測
所有境外網站都打不開訂閱過期、流量用盡或節點故障查看訂閱狀態,換節點或換線路類型複測
連線時提示憑證或時間錯誤系統時間偏差過大,握手階段就失敗同步系統時間後重新連線

一次完整的 自查清單

把上面三層合成一份可以照著做的清單。每次換節點、換裝置、換網路之後走一遍,通常兩三分鐘。

  • ✅ 連線前記錄一次本機出口位址與所在地,作為對照基準。
  • ✅ 連線後用無痕視窗複查出口位址,排除快取與擴充功能干擾。
  • ✅ 用 DNS 洩漏檢測確認應答伺服器不在本地電信商。
  • ✅ 明確目前是全域還是分流模式,知道目標網域走哪條規則。
  • ✅ 在分應用程式清單裡逐項核對要用的應用程式,改完重新啟動應用程式。
  • ✅ 關閉或統一瀏覽器內建的安全 DNS,避免繞過用戶端。
  • ✅ 檢查訂閱有效期與剩餘流量,確認節點清單是最新的。
  • ✅ 同步系統時間,避免在握手階段就失敗。
  • ❌ 只看用戶端狀態燈就認定已經生效。
  • ❌ 用同一個分頁反覆重新整理來判斷結果。
  • ❌ 用延遲或頻寬數字判斷出口是否正確,兩者不是一回事。

把三步固定成習慣

三步的順序不能顛倒:先確認出口位址變了,再確認解析跟著走,最後確認正在用的應用程式在代理範圍內。順序顛倒的代價是誤判——只看了第一步就認為一切正常,後面兩層的偏差會被帶進日常使用,表現成「有時候能打開、有時候不能」。

結論:出口位址、網域名稱解析、分應用程式與分流,三層都通過才算真的生效。任何一層異常,先用全域模式做一次對照測試,就能把問題定位到規則、DNS 還是應用程式本身,而不是在節點之間反覆切換。

本服務目前提供 90+ 國家 / 160+ 線路,用戶端涵蓋 Windows、macOS、iOS、Android、Linux,不限台數,不記錄日誌,7 天無條件退款;註冊只需使用者名稱與密碼,無需電子郵件地址。換節點之後按上面的三步複測一遍,比憑感覺判斷更省時間。

VPNFH

90+ 國家 / 160+ 線路,不限台數

無需電子郵件地址即可註冊,不記錄日誌,7 天無條件退款。換節點後按三步複測一遍再使用。

免費試用 查看方案
免費使用