V2Ray DNS 洩漏檢測與 v2rayN 防洩漏設定教學

使用線上工具檢查 DNS 查詢來源,再調整 v2rayN 的遠端 DNS、本機 DNS 與 TUN DNS 劫持設定,最後重新測試確認。

本文重點

網頁出口變了,不代表網域解析也經過代理。本文適合已能連上節點,但 DNS 檢測結果仍顯示本地網路解析器的桌面使用者。依序完成「建立基準、辨別解析來源、修改 DNS、檢查 TUN、重新測試」,重點是確認需要代理的網域沒有意外交由本地網路解析,而非要求檢測頁只顯示一個位址。

一、檢查 DNS 洩漏,關鍵在解析路徑而非地區

DNS 會將網域名稱轉換為 IP 位址。使用代理時,網頁連線與 DNS 查詢可能走不同路徑:瀏覽器透過代理連上網站,作業系統卻仍向路由器或網路業者查詢網域。如果原本預期這些查詢也經過代理,卻意外直接連線,這才是本文要排查的 DNS 洩漏。

v2rayN 是桌面用戶端,實際解析方式取決於所選核心、產生的設定、應用程式本身的選項,以及系統網路環境。只修改「遠端 DNS」位址,無法限制所有軟體;只啟用系統代理,也不會自動接管所有 UDP 流量。瀏覽器內建的加密 DNS 還可能繞過系統解析器,形成另一條解析路徑。

檢測結果可能原因下一步
網頁出口已變更,仍顯示本地網路業者的解析器查詢可能仍由系統或直連規則送出與關閉代理時的結果比較,並檢查 DNS 路由
出現多個公共解析器位址解析服務採用叢集、轉送或多個出口確認營運機構與來源,不要只憑數量判斷
解析器所在區域與節點所在地不同公共 DNS 可能使用任播,地理位置資料也可能不準確依據查詢出口與設定判斷,不要只看國旗
中國大陸網域由本地 DNS 解析可能是預期中的直連分流確認是否符合自己的網域分流策略

判斷原則:查詢路徑是否符合分流目標

先確認哪些網域應透過代理,再檢查這些網域的解析出口。需要代理的查詢若意外直連,就值得修正;明確設定為直連的網域使用本地 DNS,則不應與前者混為一談。

二、使用線上工具檢測:先記錄關閉代理時的基準

可手動前往 https://www.dnsleaktest.com/,使用 Standard test 或 Extended test。檢測頁會要求瀏覽器查詢一組臨時網域,再顯示向這些網域的權威 DNS 發出查詢的遞迴解析器。顯示的通常不是電腦網卡上的 DNS 位址,也不代表從電腦到解析器之間的完整網路路徑。

  1. 記錄基準

    暫時關閉 TUN,並在 v2rayN 的「系統代理」選單中選擇「清除系統代理」。執行一次檢測,記下時間、網頁出口 IP、解析器 IP 與營運機構。此時測試流量會直接使用目前的網路,請確認可以接受後再操作。

  2. 固定瀏覽器設定

    使用相同的瀏覽器設定檔與網路。在瀏覽器「設定」中搜尋「安全 DNS」或「DNS over HTTPS」,並記下目前選項。為了先確認用戶端的解析路徑,可暫時關閉瀏覽器自訂的加密 DNS,測試結束後再另外驗證此功能。

  3. 啟用代理

    選取已確認可用的節點,在「系統代理」中選擇「自動設定系統代理」。先確認檢測網站的網頁出口確實改變;若沒有變更,請先排查系統代理、瀏覽器擴充功能或繞過規則。

  4. 重複檢測

    先執行 Standard test,再執行 Extended test。每種模式至少重複測試 2 次,並與基準比較。切換模式後重新開啟檢測頁,避免只查看上一次的結果;保留螢幕截圖,以便後續逐項比對。

三、了解 v2rayN 遠端 DNS 與本機 DNS 的分工

修改前,先記下 v2rayN 版本、目前使用的核心、路由模式與原始 DNS 值,並備份現有設定。常見版本可從「設定」→「DNS 設定」進入相關頁面;設定頁通常依核心區分。不同版本的欄位名稱與版面可能有所不同。下文所說的「遠端 DNS」與「本機 DNS」是指功能用途,請以目前版本實際顯示的項目為準,不要將某個核心的設定格式直接貼到另一個核心。

每次只修改一項,依序儲存設定

先從「設定」→「DNS 設定」選取目前使用的核心頁面,查看遠端解析器與直連解析器各自的用途說明。只有欄位支援時才填入上述位址,接著檢查路由設定中是否有強制讓該解析服務直連的規則。儲存後重新啟動服務或核心,確認記錄中沒有設定載入錯誤,再重新進行線上檢測。如果頁面只顯示自訂設定文字,請先依照對應核心的格式核對欄位,不要因名稱相似就自行新增選項。

四、檢查 TUN 模式的 DNS 劫持與 IPv6

系統代理主要適用於遵循代理設定的應用程式。TUN 透過虛擬網路介面接管流量,較適合檢查不遵循系統代理的程式,但啟用 TUN 不代表 DNS 已完整接管。還需要一併檢查 TUN 路由、DNS 接管規則與核心記錄。

  1. 找到目前的 TUN 設定。常見桌面版本可在「設定」→「參數設定」中找到「Tun 模式設定」,部分版本則將其放在獨立頁面。先記下自動路由、嚴格路由與 DNS 相關項目的原始值;只修改目前版本明確提供的欄位。
  2. 確認一般 DNS 已接管。若頁面提供 DNS 劫持或 DNS 接管選項,請確認涵蓋預期的 UDP/TCP 53 查詢。此功能會將一般 DNS 請求導向核心解析流程,不會把所有加密連線都變成 DNS。
  3. 另外處理加密 DNS。DoH 通常使用 TCP 443,也可能透過 HTTP/3 使用 UDP 443;DoT 通常使用 TCP 853。只劫持 53 連接埠不會涵蓋這些連線,仍須透過應用程式設定與路由規則處理。
  4. 檢查 IPv6 路徑。確認系統是否設定 IPv6 DNS、TUN 是否配置 IPv6 路由,以及代理出口是否支援連線至目標。查詢 AAAA 記錄與查詢本身透過 IPv6 傳輸是兩回事,不能只靠停用 AAAA 來判斷問題是否已解決。
  5. 切換網路後重新測試。儲存設定後,先在目前網路重新測試,再於實際使用的有線或無線網路重新連線並檢測。切換網路可能會更新系統 DNS 與預設路由,先前的結果不能取代新測試。

修改 TUN 後若整體網路無法使用,請先關閉 TUN、還原基準,再檢查權限、虛擬介面與路由衝突。停用 IPv6 可作為暫時的對照測試,但會改變系統網路行為,不應視為通用修復方法。需要保留 IPv6 的環境,應完善接管與路由設定。

五、使用系統指令區分快取、代理與解析錯誤

以下以 Windows PowerShell 為例。第一組指令會清除本機 DNS 快取並觸發系統解析;測試的是系統解析路徑,並非單獨驗證用戶端的遠端 DNS。瀏覽器與核心可能另有快取,必要時還須完全關閉瀏覽器並重新啟動核心。

ipconfig /flushdns
Resolve-DnsName example.com -Type A
Resolve-DnsName example.com -Type AAAA

接著可使用支援 SOCKS 的 curl,測試「將目標網域交由代理處理」的連線。以下假設 v2rayN 實際使用的 SOCKS 或混合監聽連接埠為 10808;執行前請前往「設定」→「參數設定」確認本機監聽連接埠,並依實際值修改。數字位址 127.0.0.1 用來連線至本機代理,避免額外解析代理主機名稱。

curl.exe --socks5-hostname 127.0.0.1:10808 --connect-timeout 10 -I https://example.com/

--socks5-hostname 會將目標主機名稱交由 SOCKS 代理解析;相較之下,--socks5 通常會在本機解析目標。前一個指令執行成功,只能表示這條明確指定的代理路徑可用,不能據此判定瀏覽器或背景服務沒有 DNS 洩漏。

錯誤:DNS_PROBE_FINISHED_NXDOMAIN

原因與解決方法:瀏覽器判定網域不存在,可能是網域本身無效,也可能是快取或所選解析器回傳了否定結果。先確認網域拼寫,再用已知有效的網域進行比對;切換解析器後清除快取並重試。

錯誤:curl: (7) Failed to connect

原因與解決方法:若錯誤目標是本機代理位址,通常表示核心尚未執行或監聽連接埠不符,問題還沒進入目標網域解析階段。請確認實際連接埠與核心是否已啟動,再執行相同指令。

錯誤:context deadline exceeded

原因與解決方法:這是通用的逾時訊息,不能只憑這一行就判定為 DNS 故障。只有相鄰記錄明確指出 DNS 查詢時,才檢查解析服務連線、連線出口與啟動解析依賴;否則應繼續確認對應的連線環節。

六、重新測試清單:保留分流並確認預期出口

完成修改後,分別記錄關閉代理、僅使用系統代理與 TUN 三種狀態。每種狀態都使用相同的瀏覽器設定,並記錄解析器營運機構,而不只記下國家或地區。若結果不如預期,請回到最近修改的設定,還原後再重新測試。

驗收原則:設定應與檢測結果相互吻合

不要為了消除檢測頁上的所有差異,就刪除必要的直連規則。先確認需要代理的查詢已依預期轉送,再保留正常的本地服務與直連存取;這比單看解析器數量更有助於實際排查。

七、DNS 防洩漏設定常見問題

已修改遠端 DNS,為什麼檢測結果沒有變?

先確認修改的是目前正在使用的核心頁面,並在儲存後重新啟動核心。接著檢查瀏覽器安全 DNS 是否另外指定了解析服務,以及應用程式的查詢是否確實進入核心;未進入核心的查詢,不會因修改遠端 DNS 而自動改變。

顯示兩個解析器,就一定是 DNS 洩漏嗎?

不一定。先查看兩個位址的營運機構,再與關閉代理時的基準比較。公共解析器可能使用多個出口;只有查詢來源與預期路徑不符時,才需要進一步排查。

啟用 TUN 後,還需要關閉瀏覽器安全 DNS 嗎?

排查期間可以暫時關閉,以減少變數。日常使用時可以保留,但必須確認 DoH 連線會透過路由送往預期出口。TUN 接管一般 DNS,不代表能改寫所有加密 DNS 流量。

更換 DNS 後所有網站都無法開啟,該怎麼復原?

先還原記錄下來的原始 DNS 設定並重新啟動核心;使用 TUN 時,也可以先關閉 TUN。恢復連線後,分別檢查新解析器的協定格式、連線狀況,以及節點網域的啟動解析;不要繼續疊加新的位址。

下載v2rayN