DNS 洩漏是什麼:檢測方法與 V2Ray 客戶端防洩漏設定實作

說明 DNS 洩漏的成因與影響,提供線上檢測步驟,並分別介紹桌面版與 Android 版的 DNS 設定,最後透過複測確認效果。

本文速覽

適合已能連線至節點,但檢測頁面仍顯示本地電信業者 DNS 的使用者。操作順序是先建立直連基準,再辨識瀏覽器安全 DNS、系統快取與客戶端分流造成的干擾,接著調整 v2rayN、v2rayNG 或 v2flyNG 的 DNS 與流量接管設定,最後透過三輪複測確認查詢路徑是否符合預期。

DNS 洩漏的判斷標準

DNS 負責將網域名稱轉換為可連線的 IP 位址。瀏覽器開啟網站時,通常會先查詢網域名稱,再連線至查詢結果對應的位址。代理節點能轉送網頁流量,不代表系統中的 DNS 查詢必然經過相同路徑;兩者由不同元件處理,也可能分別走直連與代理。

所謂 DNS 洩漏,不是檢測頁面出現多個解析器就一定有問題,而是原本應交由指定解析器或代理路徑處理的查詢,繞過了預期通道。常見情況是網頁出口位址已經改變,DNS 檢測結果卻持續出現目前網路電信業者或路由器下發的解析器,或者測試網域直接由本地網路的 53 埠完成解析。

檢測現象 可能原因 處理重點
出口位址已改變,解析器仍屬於本地電信業者 系統 DNS 或 UDP 53 未被客戶端接管 檢查 TUN、VPN 服務與本地 DNS 開關
不同瀏覽器顯示不同解析器 其中一個瀏覽器啟用了獨立的安全 DNS 統一瀏覽器設定後重新建立基準
檢測結果偶爾出現路由器位址 系統回退、快取或網路切換觸發了備用解析 清除快取並連續測試三輪
只顯示代理服務端解析器 網域查詢由遠端或指定解析器完成 繼續核對分流是否符合規則

結論:先確認預期,再判斷洩漏

檢測結果的關鍵不是解析器數量,而是解析器歸屬與查詢路徑。公司網路、家用路由器與瀏覽器安全 DNS 可能產生不同結果,只有先寫清楚預期使用哪一組解析器,複測才有判斷依據。

如何進行線上檢測與本地基準測試

正式修改設定前,先在客戶端完全中斷時測試一次,再連線至節點測試一次。每輪使用相同的瀏覽器、網路與檢測模式,避免將瀏覽器差異誤判為客戶端故障。建議選擇支援標準檢測與擴充檢測的 DNS 測試頁面;擴充檢測通常會發起更多隨機子網域查詢,更容易找出備用解析器。

  1. 記錄直連結果

    退出 v2rayN 或停止 Android 端 VPN 服務,關閉瀏覽器安全 DNS,開啟檢測頁面執行一次擴充檢測。記錄出口網路歸屬、解析器數量與解析器所屬網路,不必記錄暫時性的測試網域。

  2. 連線至目標節點

    在客戶端選取可用設定。v2rayN 開啟系統代理或 TUN 模式;v2rayNG、v2flyNG 點選連線,並確認系統狀態列顯示 VPN 服務正在執行。

  3. 清除舊快取

    桌面版執行 DNS 快取重新整理,接著徹底關閉並重新開啟瀏覽器。Android 端可先中斷再重新連線客戶端;若瀏覽器仍沿用舊結果,再結束瀏覽器程序。

  4. 連續檢測三輪

    每輪間隔至少 30 秒,並重新載入檢測頁面。三輪都只出現預期解析器,比單次結果更能排除快取、備用 DNS 與短暫網路切換的影響。

  5. 比對出口變化

    如果網頁出口位址沒有變化,先處理代理接管問題;如果出口已變化但解析器仍維持直連基準,則進入客戶端 DNS 設定進行排查。

Windows 本機檢查指令

以下指令可用來查看系統目前的 DNS、清除快取,並檢查本機是否有程式監聽 53 埠。這些指令無法單獨證明查詢經過哪條出站路徑,但能協助定位錯誤的網路介面卡設定與埠號衝突。

ipconfig /all
ipconfig /flushdns
nslookup example.com
powershell -NoProfile -Command "Get-NetUDPEndpoint -LocalPort 53 -ErrorAction SilentlyContinue"

v2rayN 桌面版防洩漏設定

以下操作以 v2rayN 7.x 搭配 Xray Core 為基準。小版本更新可能會調整標籤位置,但排查邏輯不變:先確認 Core 類型,再設定 DNS,最後決定使用系統代理或 TUN。系統代理主要接管支援 HTTP 或 SOCKS 代理的應用程式,通常不會自動接管所有程式發出的 UDP 53 查詢;需要涵蓋更多系統流量時,應優先檢查 TUN 模式。

  1. 確認核心

    開啟「設定」→「參數設定」→「Core 類型」,確認目前設定使用 Xray。儲存後重新啟動核心,避免舊程序繼續使用先前產生的設定。

  2. 設定 DNS

    進入「設定」→「DNS 設定」→「Xray DNS」,先選擇隨版本提供的基礎範本,再依分流需求設定直連 DNS 與代理 DNS。直連網域應使用本地網路可連線的解析器,代理網域則交由可透過代理存取的解析器處理。

  3. 核對分流

    在「設定」→「路由設定」中檢查目前規則。網域若先被解析為 IP,後續可能只符合 IP 規則;需要依網域分流時,應確保查詢策略與路由規則相互配合,不要只修改 DNS 位址。

  4. 啟用 TUN

    需要接管不遵循系統代理的程式時,進入「設定」→「參數設定」→「Tun 模式設定」,核對 DNS 劫持與自動路由選項,再從主介面啟用 TUN。首次啟用後,依系統提示完成必要的權限操作。

  5. 重新啟動並複測

    關閉舊核心,執行 ipconfig /flushdns,重新啟動 v2rayN。先開啟一般網頁確認連線,再執行三輪 DNS 擴充檢測。

系統代理與 TUN 的差異

錯誤:failed to find an available destination

原因與解法:出站伺服器網域無法解析,或可用位址全被路由規則排除。先檢查節點位址拼寫與系統時間,再切換回基礎 DNS 範本並重新啟動核心。

錯誤:lookup server.example: no such host

原因與解法:目前解析器沒有回傳節點網域結果,或查詢被錯誤送至不可用的出站。暫時讓節點伺服器網域使用直連 DNS,確認節點連線正常後再恢復分流。

錯誤:bind: Only one usage of each socket address is normally permitted

原因與解法:本地 DNS 或代理埠已被其他程序監聽。使用埠檢查指令定位程序,關閉衝突服務,或在「設定」→「參數設定」中調整監聽埠,並同步修改依賴該埠的設定。

v2rayNG 與 v2flyNG Android 端設定

Android 端通常透過系統 VPN 服務接管流量,DNS 是否經過客戶端取決於本地 DNS、虛擬 DNS 與路由設定。v2rayNG 使用 Xray 核心,v2flyNG 使用 v2fly 核心,兩款客戶端的設定名稱與可用選項可能因核心能力不同而有所差異。操作時不要直接照搬另一款客戶端的進階 JSON,先使用目前版本內建的 DNS 選項建立可正常運作的基準。

  1. 更新客戶端

    先確認使用目前下載頁提供的穩定版本。升級後重新開啟應用程式,讓客戶端完成設定移轉,再選取已確認可連線的節點。

  2. 啟用本地 DNS

    在 v2rayNG 進入「設定」→「本地 DNS」,啟用由客戶端處理 DNS 的選項,並檢查監聽埠未與其他本地服務衝突。常見的 DNS 監聽埠為 53 或客戶端分配的高位埠,請以介面顯示為準。

  3. 檢查虛擬 DNS

    進入「設定」→「VPN 設定」查看 FakeDNS 或相應的虛擬 DNS 選項。需要依網域路由,且一般解析會過早暴露目標網域時,可以啟用此功能;若區域網路裝置或個別應用程式連線異常,先關閉該選項進行對照測試。

  4. 確認依應用程式規則

    如果啟用了依應用程式代理,請確認執行檢測的瀏覽器已包含在代理範圍內。瀏覽器被排除時,其網頁請求與 DNS 查詢都會依直連路徑處理。

  5. 中斷後重新連線

    儲存設定後不要只返回首頁,應先停止目前連線,等待 5 秒後再重新連線。接著結束瀏覽器程序,重新開啟檢測頁面並執行三輪測試。

設定項目 v2rayNG v2flyNG
主要核心 Xray v2fly
流量接管 系統 VPN 服務 系統 VPN 服務
優先檢查 本地 DNS、FakeDNS、依應用程式代理 本地 DNS、路由規則、依應用程式代理
修改後動作 停止連線並重新啟動服務 停止連線並重新啟動服務

結論:先接管查詢,再談解析器選擇

只將 DNS 位址從一個公共解析器換成另一個,無法修復繞過客戶端的查詢。Android 端應先確認檢測瀏覽器位於 VPN 與依應用程式代理範圍內,再調整本地 DNS、FakeDNS 與路由規則。

複測失敗時依結果定位

完成設定後仍看到本地解析器,不要反覆更換節點與 DNS 位址。一次只變更一個變數:先固定節點與瀏覽器,再分別檢查瀏覽器安全 DNS、客戶端接管模式、系統快取與路由規則。變數同時改變時,即使結果暫時正常,也無法確認是哪一項生效。

現象:出口已改變,但三輪都出現本地電信業者 DNS

原因與解法:網頁流量經過代理,但 DNS 仍由系統網路介面卡傳送。桌面版改用並檢查 TUN;Android 端檢查本地 DNS、VPN 服務與依應用程式代理範圍。

現象:第一輪正常,第二輪出現額外解析器

原因與解法:可能存在備用 DNS、瀏覽器安全 DNS 或網路切換。固定網路,關閉瀏覽器獨立解析功能,清除快取後每隔 30 秒連續測試三次。

現象:啟用 FakeDNS 後無法存取區域網路網域

原因與解法:區域網路網域被虛擬解析,未交由本地 DNS 處理。為區域網路網域與私有位址補充直連規則,或暫時關閉 FakeDNS 以確認差異。

現象:修改 DNS 後所有網站都顯示無法解析

原因與解法:解析器位址無法連線、DNS 出站遭到阻斷,或設定格式不受目前核心支援。恢復客戶端內建範本,確認基本連線後再逐項加入自訂規則。

合格的複測紀錄應包含哪些內容

  1. 客戶端名稱、版本系列與核心類型,例如 v2rayN 7.x 搭配 Xray,而不是只寫「V2Ray 已連線」。
  2. 使用系統代理、TUN 或 Android VPN 服務中的哪一種接管方式。
  3. 檢測瀏覽器是否啟用獨立安全 DNS,以及是否位於依應用程式代理範圍內。
  4. 直連基準與連線後結果的解析器歸屬變化,以及三輪測試是否一致。
  5. 複測時間、目前網路類型,以及是否曾發生 Wi-Fi 切換,方便排除網路環境變化。

檢測到兩個解析器就是洩漏嗎?

不一定。同一個 DNS 服務可能使用多個出口位址,負載平衡也可能回傳不同地區的解析器。先核對歸屬是否符合預期,再確認是否混入直連基準中的電信業者解析器。

為什麼更換節點後,DNS 結果沒有變化?

DNS 可能由客戶端指定的固定解析器處理,不一定會隨節點切換。只要查詢沒有繞過預期路徑,解析器維持不變就是正常現象。

開啟系統代理後還需要 TUN 嗎?

只使用瀏覽器等遵循系統代理的程式時,可以先使用系統代理。需要涵蓋遊戲、獨立更新程式或直接傳送 UDP 查詢的程式時,再啟用 TUN 並檢查 DNS 劫持設定。

瀏覽器安全 DNS 必須一直關閉嗎?

排查期間建議關閉,方便確認客戶端的處理路徑。問題解決後可以重新啟用,但應再測試三輪,確認瀏覽器選用的解析器與代理策略符合預期。

訂閱更新失敗也可能與 DNS 有關嗎?

可能。若訂閱伺服器網域無法解析,更新會直接逾時。先讓訂閱更新使用可用代理,或讓該網域透過直連 DNS 完成解析,再檢查核心記錄中的 lookup 與 timeout 資訊。

取得圖形客戶端 依平台選擇 v2rayN 或 v2rayNG