2026-08-04 · 故障排除 · 約 10 分鐘

V2Ray DNS 洩漏檢測與防漏設定:v2rayN、v2rayNG 實測

了解 DNS 洩漏原因與檢測方式,並逐步調整 v2rayN、v2rayNG 的 DNS、路由及系統代理,讓 DNS 查詢依預期經過代理。

本文重點

適合已匯入節點、能正常瀏覽網頁,卻不確定 DNS 是否繞過代理的使用者。先釐清網站出口、DNS 解析伺服器與實際傳輸路徑,再分別檢查桌面系統代理和 Android VPN 的接管範圍,最後透過瀏覽器測試、用戶端日誌與網路封包交叉驗證。本文不提供可直接覆寫現有設定的通用 JSON,以免破壞訂閱產生的出站與路由設定。

一、判斷 DNS 洩漏的範圍

DNS 會將網域名稱轉換為 IP 位址。網站連線經過代理,不代表此前的 DNS 查詢也經過代理:瀏覽器、作業系統及用戶端核心都可能發出解析請求。本文所說的洩漏,是原本預期透過代理處理的網域查詢,實際上卻交由本機網路或其他非預期路徑解析。若依既定規則讓中國大陸網域直連並使用本地 DNS,這屬於分流策略,不應只因「出現本地解析器」就判定設定失敗。

應用程式發出網域請求 接管 DNS 解析入口 選擇 DNS 規則 透過出站傳送查詢 建立目標連線

V2Ray、Xray 是核心;v2rayN 是桌面圖形介面用戶端;v2rayNG 是使用 Xray 核心的 Android 用戶端;v2flyNG 則使用 V2Fly 核心。介面中的 DNS 選項最後會轉換成所選核心的執行設定。VMess、VLESS 是代理協定,本身不會決定系統中所有程式的 DNS 解析路徑。

觀察到的現象可以說明什麼還需要確認什麼
網站出口 IP 已變更這次網站連線使用了相應的出口網域是否由本機網路解析
檢測頁顯示公共 DNS 解析器測試網域最後由該 DNS 服務遞迴查詢連線至 DNS 解析器的路徑是否經過代理
解析器所在國家與節點不同DNS 服務位置與網站出口位置不同是否涉及公共 DNS 的 Anycast 或不同出口
本機網卡出現 UDP 53 流量有明文 DNS 查詢離開裝置查詢的網域是否屬於允許直連的範圍

二、建立基準:在同一網路進行三組對照

先記下目前使用的節點、路由模式、瀏覽器安全 DNS、系統 DNS 與用戶端執行模式。不要同時修改這些項目,否則結果改變後很難找出原因。使用同一台裝置、同一個瀏覽器和同一個網路,分別記錄「用戶端中斷連線」、「僅使用系統代理」及「啟用 TUN 或 VPN 接管」的結果;若不支援某種模式就略過,不要為了湊齊測試而疊加其他網路軟體。

53
傳統 DNS 常用的 UDP/TCP 連接埠
443
DoH 常用的 HTTPS 連接埠
10808
本機代理連接埠範例,請以實際設定為準
  1. 取得直連基準。中斷用戶端連線,在 DNS 檢測頁執行測試,記錄解析器名稱、位址與時間。檢測頁通常會使用隨機子網域降低快取干擾,但只涵蓋目前瀏覽器發出的請求。
  2. 取得代理結果。連線至節點後,在同一個檢測頁重新執行完整測試,不要只重新整理舊結果。同時記錄網站出口 IP,區分連線出口變化與 DNS 解析路徑變化。
  3. 排除瀏覽器變數。暫時關閉瀏覽器內建的安全 DNS,再測試一次。若平時需要保留此功能,請重新啟用後再次確認其 HTTPS 連線是否也經過預期的出站路徑。
  4. 檢查其他應用程式。瀏覽器測試通過後,再檢查實際使用的軟體。系統代理不保證涵蓋命令列工具、使用自有解析器的程式,或直接傳送 UDP 的應用程式。

結論:解析器名稱不能證明傳輸路徑

如果只知道檢測頁顯示哪家 DNS,先別急著更換節點。優先確認該查詢是否直接從本機網卡送出,再決定要調整接管範圍還是 DNS 出站規則。

三、v2rayN:先確認流量接管,再設定 DNS

以下以常見的繁體中文介面說明,實際選項分類會因版本及所選核心而異。操作前請記下 v2rayN 版本與核心類型,並備份目前設定。桌面版的「設定系統代理」主要影響遵循系統代理的應用程式;TUN 的網路接管範圍較廣,但仍須檢查排除項目與 DNS 接管規則。兩種模式不可混為一談。

  1. 確認本機代理入口

    開啟「設定」→「參數設定」,檢查本機監聽連接埠。若實際連接埠是 10808,應用程式就必須使用相符的協定與連接埠;不能把 SOCKS 入口當成 HTTP 入口。若支援混合監聽,請依介面說明設定。

  2. 確認代理模式

    在主畫面底部的「系統代理」選擇「自動設定系統代理」,接著確認系統中的代理位址與連接埠是否相符。若要涵蓋不遵循系統代理的應用程式,再考慮啟用主畫面的「啟用 TUN」,並依提示授予所需權限。

  3. 檢查 DNS 規則

    前往「設定」→「DNS 設定」。若目前版本或核心將此選項放在參數設定中,請使用相應的 DNS 頁面。檢查代理網域使用的遠端 DNS 解析器,並確認連線至該解析器時會走代理出站;不能只填入伺服器位址就算完成。

  4. 確認分流範圍

    在路由設定中確認直連網域、代理網域與預設出站。暫時切換為全域代理路由有助縮小排查範圍,但不能取代 DNS 接管,也無法證明系統中的所有應用程式都已納入接管。

  5. 重新啟動並複測

    儲存設定後重新啟動核心,確認啟動日誌沒有設定錯誤,再以相同方式重新測試。若訂閱更新後結果反覆變動,請檢查 DNS 或路由是否被訂閱、自訂設定重新產生,不要持續疊加更多規則。

在 macOS、Linux 上,系統代理的適用範圍取決於桌面環境與應用程式的實作方式,不應直接套用 Windows 的系統設定路徑。不論使用哪個平台,驗證重點都是應用程式流量是否進入用戶端、核心使用哪個 DNS,以及 DNS 查詢最後選擇哪個出站。

四、v2rayNG:檢查 VPN 接管範圍與遠端 DNS

在 Android 上成功連線後看到 VPN 圖示,只代表 VPN 服務已建立,不保證每個應用程式都在接管範圍內。依應用程式代理、略過區域網路、其他 VPN 服務和系統私人 DNS,都可能改變測試結果。v2rayNG 的欄位會因版本而異,以下以設定頁常見的「遠端 DNS」、「啟用本地 DNS」標籤為線索;若沒有該選項,別用其他開關勉強替代。

  1. 檢查應用程式接管範圍

    開啟側邊選單「設定」→「分應用代理」,確認目前設定是代理所選應用程式,還是略過所選應用程式。測試用的瀏覽器必須包含在代理範圍內;排查時可暫時關閉分應用限制,並記下原本的清單。

  2. 設定 DNS 解析入口

    在「設定」中找到 DNS 相關選項,檢查「遠端 DNS」;若有「啟用本地 DNS」,請先閱讀選項說明再決定是否啟用。這裡的「本地」通常指用戶端內部的 DNS 處理方式,不等於把查詢交給電信業者的 DNS。

  3. 確認系統設定變數

    開啟 Android 系統「設定」→「網路和網際網路」→「私人 DNS」,記下目前狀態。不同廠牌的路徑可能不同,也可以在系統設定中搜尋「私人 DNS」。對照測試時可暫時關閉,完成後再恢復並重新驗證。

  4. 重新連線並查看日誌

    儲存設定後先中斷連線,再重新連線,並在側邊選單的「日誌」查看是否有查詢逾時或出站失敗。分別透過 Wi-Fi 和行動網路重複測試,確認選用的解析服務不是只有在某一種網路下才能連線。

如果同時啟用瀏覽器安全 DNS 與系統私人 DNS,請先一次只保留一個變數。DoH 使用 HTTPS,DoT 常用 TCP 853;兩者都能加密 DNS 查詢傳輸,但查詢是否經過代理,仍取決於接管範圍與路由。切換網路後只能開啟曾瀏覽過的網站,也可能是快取掩蓋了解析問題,不能因此認定設定已穩定。

  • 以全域代理路由進行對照後,記得恢復原有分流規則,並重新驗證代理網域與直連網域。
  • 區域網路印表機、企業內部網域可能依賴本地 DNS,應另外保留明確規則;不要一律將所有解析器換成公共服務。
  • v2flyNG 採用不同的核心與介面實作,不宜直接複製 v2rayNG 的執行設定;移轉時請重新確認 DNS 欄位與路由功能。

五、日誌與封包擷取:找出請求在哪一層失敗

先判斷問題發生在查詢、連線還是監聽階段。以下錯誤訊息可能出現在核心或底層網路錯誤中,完整前綴會因版本而異。這些訊息只能作為排查線索,不能只憑一行日誌就認定發生 DNS 洩漏。

錯誤:context deadline exceeded

原因:作業未能在期限內完成;若出現在 DNS 查詢附近,可能是解析器無法連線,或查詢的出站路徑設定錯誤。

處理方式:核對同一時間的目標位址與出站紀錄,先確認解析器的網路路徑,再調整逾時參數。

錯誤:no such host

原因:名稱解析未取得可用結果,可能是網域拼寫錯誤、上游回覆不存在,或受到過濾規則影響。

處理方式:確認解析失敗的是節點網域還是一般使用的網域,再透過獨立解析路徑交叉檢查,不要直接修改所有路由。

錯誤:address already in use

原因:準備監聽的位址或連接埠已被其他程序占用,用戶端入口可能根本沒有成功啟動。

處理方式:檢查占用中的程序或更換監聽連接埠,並同步修改應用程式的代理設定;接著重新啟動核心,確認監聽成功。

Windows:查詢系統 DNS 並清除快取

在 PowerShell 中執行下列命令,分別查看系統網卡的 DNS、清除系統解析快取,以及測試命令列解析。最後一項通常使用系統設定的解析伺服器,不會因啟用 HTTP 系統代理就自動改走用戶端,因此結果與瀏覽器不同並不矛盾。

Get-DnsClientServerAddress
Clear-DnsClientCache
nslookup example.com

檢查明文 DNS 與 IPv6

若能擷取網路封包,請在實體網卡套用以下篩選條件。先關閉不相關的應用程式,再觸發一次新的網域查詢。只看到 53 連接埠的流量還不夠,必須搭配查詢名稱與時間確認是否來自測試應用程式;沒有 53 連接埠流量也不代表絕對安全,因為查詢可能使用加密 DNS,或直接命中快取。

udp.port == 53 || tcp.port == 53
tcp.port == 853

六、防洩漏驗收清單與還原方式

驗收時應以既定策略為準,而不是追求頁面上只顯示一個解析器。若目標是讓所有業務查詢經過代理,就逐一檢查受管理應用程式的解析入口與出站;若目標是依中國大陸與海外網域分流,就分別驗證直連網域與代理網域。DNS 查詢和網站連線可以採用不同策略,但必須是明確規劃,而非意外繞過代理。

  • 設定生效:重新啟動後核心正常運作,日誌中沒有 DNS 設定解析失敗或監聽失敗。
  • 路徑一致:測試用瀏覽器位於接管範圍內,遠端 DNS 連線也使用預期的代理出站。
  • 排除快取影響:清除系統快取,或使用檢測頁新產生的查詢,避免將舊結果誤認為目前設定。
  • 涵蓋不同網路:切換 Wi-Fi、行動網路或桌面網路後再次測試並記錄差異,不要把單次測試結果當成普遍結論。
  • 啟動後可用:裝置重新啟動後,首次連線也能解析節點位址,不依賴前一次連線留下的快取。
  • 明確的還原方式:保留原本的 DNS、路由與私人 DNS 設定;發生問題時,先還原最近一次變更,再確認基本連線。

結論:一次只修正一條路徑

網頁可正常瀏覽但 DNS 解析路徑異常時,先修正 DNS 接管與查詢出站;節點網域完全無法解析時,則先恢復啟動解析。將兩類問題分開處理,比同時更換協定、節點和所有 DNS 設定更容易得到可重現的結果。

分享排查資訊時,只需保留用戶端版本、核心、路由模式、錯誤時間與已去識別化的日誌。訂閱網址、節點憑證和完整執行設定可能包含存取權限,不應公開貼上。若要進一步排查,請參閱問題診斷,依啟動、監聽、連線、解析的順序逐項確認。

下載v2rayN