網頁出口變了,不代表網域解析也經過代理。本文適合已能連上節點,但 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 位址,也不代表從電腦到解析器之間的完整網路路徑。
-
記錄基準
暫時關閉 TUN,並在 v2rayN 的「系統代理」選單中選擇「清除系統代理」。執行一次檢測,記下時間、網頁出口 IP、解析器 IP 與營運機構。此時測試流量會直接使用目前的網路,請確認可以接受後再操作。
-
固定瀏覽器設定
使用相同的瀏覽器設定檔與網路。在瀏覽器「設定」中搜尋「安全 DNS」或「DNS over HTTPS」,並記下目前選項。為了先確認用戶端的解析路徑,可暫時關閉瀏覽器自訂的加密 DNS,測試結束後再另外驗證此功能。
-
啟用代理
選取已確認可用的節點,在「系統代理」中選擇「自動設定系統代理」。先確認檢測網站的網頁出口確實改變;若沒有變更,請先排查系統代理、瀏覽器擴充功能或繞過規則。
-
重複檢測
先執行 Standard test,再執行 Extended test。每種模式至少重複測試 2 次,並與基準比較。切換模式後重新開啟檢測頁,避免只查看上一次的結果;保留螢幕截圖,以便後續逐項比對。
三、了解 v2rayN 遠端 DNS 與本機 DNS 的分工
修改前,先記下 v2rayN 版本、目前使用的核心、路由模式與原始 DNS 值,並備份現有設定。常見版本可從「設定」→「DNS 設定」進入相關頁面;設定頁通常依核心區分。不同版本的欄位名稱與版面可能有所不同。下文所說的「遠端 DNS」與「本機 DNS」是指功能用途,請以目前版本實際顯示的項目為準,不要將某個核心的設定格式直接貼到另一個核心。
- 遠端 DNS:用於解析需要透過代理的網域。若填入
https://1.1.1.1/dns-query這類 DoH 位址,前提是欄位支援 DoH,且連往該服務的連線已正確導向預期的出口。 - 本機或直連 DNS:用於直連網域與部分啟動解析。可依實際網路環境使用可信任的本地解析器;例如
223.5.5.5是一個公共解析器位址,但是否合適仍取決於網路連線狀況與隱私需求。 - 節點網域解析:連線節點前,通常需要先取得節點伺服器的 IP 位址。如果此時要求所有解析都經過尚未建立的節點,可能會形成啟動依賴循環。請使用核心支援的獨立解析方式,不要為了避免直連而強行移除所有直連解析。
- DNS 出站規則:決定查詢連線透過直連或代理送出。加密 DNS 可保護傳輸內容,但若 DoH 連線本身是直連,解析服務仍會看到本地的公網出口;「加密」與「透過代理」是兩種不同的設定目標。
每次只修改一項,依序儲存設定
先從「設定」→「DNS 設定」選取目前使用的核心頁面,查看遠端解析器與直連解析器各自的用途說明。只有欄位支援時才填入上述位址,接著檢查路由設定中是否有強制讓該解析服務直連的規則。儲存後重新啟動服務或核心,確認記錄中沒有設定載入錯誤,再重新進行線上檢測。如果頁面只顯示自訂設定文字,請先依照對應核心的格式核對欄位,不要因名稱相似就自行新增選項。
四、檢查 TUN 模式的 DNS 劫持與 IPv6
系統代理主要適用於遵循代理設定的應用程式。TUN 透過虛擬網路介面接管流量,較適合檢查不遵循系統代理的程式,但啟用 TUN 不代表 DNS 已完整接管。還需要一併檢查 TUN 路由、DNS 接管規則與核心記錄。
- 找到目前的 TUN 設定。常見桌面版本可在「設定」→「參數設定」中找到「Tun 模式設定」,部分版本則將其放在獨立頁面。先記下自動路由、嚴格路由與 DNS 相關項目的原始值;只修改目前版本明確提供的欄位。
- 確認一般 DNS 已接管。若頁面提供 DNS 劫持或 DNS 接管選項,請確認涵蓋預期的 UDP/TCP
53查詢。此功能會將一般 DNS 請求導向核心解析流程,不會把所有加密連線都變成 DNS。 - 另外處理加密 DNS。DoH 通常使用 TCP
443,也可能透過 HTTP/3 使用 UDP443;DoT 通常使用 TCP853。只劫持53連接埠不會涵蓋這些連線,仍須透過應用程式設定與路由規則處理。 - 檢查 IPv6 路徑。確認系統是否設定 IPv6 DNS、TUN 是否配置 IPv6 路由,以及代理出口是否支援連線至目標。查詢 AAAA 記錄與查詢本身透過 IPv6 傳輸是兩回事,不能只靠停用 AAAA 來判斷問題是否已解決。
- 切換網路後重新測試。儲存設定後,先在目前網路重新測試,再於實際使用的有線或無線網路重新連線並檢測。切換網路可能會更新系統 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,請另外再測一次。
- 終端機:明確指定 SOCKS 的連線可成功,系統解析測試也能得到合理結果;請勿將兩者誤記為同一條路徑。
- 分流:直連網域仍可正常存取,需要代理的網域也不會因遠端解析失敗而意外改走直連。
- 記錄:沒有持續出現 DNS 逾時、循環連線或設定載入失敗;可在短時間內提高記錄詳細程度以利排查,完成後再恢復日常等級。
- 保存設定紀錄:記下版本、核心、DNS 位址、TUN 狀態與檢測日期。向他人求助前,請遮蔽訂閱網址、節點憑證,以及不希望公開的公網 IP。
驗收原則:設定應與檢測結果相互吻合
不要為了消除檢測頁上的所有差異,就刪除必要的直連規則。先確認需要代理的查詢已依預期轉送,再保留正常的本地服務與直連存取;這比單看解析器數量更有助於實際排查。
七、DNS 防洩漏設定常見問題
已修改遠端 DNS,為什麼檢測結果沒有變?
先確認修改的是目前正在使用的核心頁面,並在儲存後重新啟動核心。接著檢查瀏覽器安全 DNS 是否另外指定了解析服務,以及應用程式的查詢是否確實進入核心;未進入核心的查詢,不會因修改遠端 DNS 而自動改變。
顯示兩個解析器,就一定是 DNS 洩漏嗎?
不一定。先查看兩個位址的營運機構,再與關閉代理時的基準比較。公共解析器可能使用多個出口;只有查詢來源與預期路徑不符時,才需要進一步排查。
啟用 TUN 後,還需要關閉瀏覽器安全 DNS 嗎?
排查期間可以暫時關閉,以減少變數。日常使用時可以保留,但必須確認 DoH 連線會透過路由送往預期出口。TUN 接管一般 DNS,不代表能改寫所有加密 DNS 流量。
更換 DNS 後所有網站都無法開啟,該怎麼復原?
先還原記錄下來的原始 DNS 設定並重新啟動核心;使用 TUN 時,也可以先關閉 TUN。恢復連線後,分別檢查新解析器的協定格式、連線狀況,以及節點網域的啟動解析;不要繼續疊加新的位址。