2026-10-21 · DNS 進階 · 約 10 分鐘

V2Ray FakeDNS 原理與設定:虛擬 IP、流量嗅探與適用情境

了解 FakeDNS 如何透過保留網段的虛擬 IP 保留網域資訊,以及它與 sniffing、TUN 模式的搭配方式、適用情境與常見問題。

本文重點

FakeDNS 適合解決透明接管時「連線只剩 IP,網域規則無從判斷」的問題,並非通用的網路加速開關。以下會說明虛擬位址、映射表與入站還原之間的關係,並提供 Xray 設定片段、TUN 接管檢查項目及復原步驟。適合已能正常連線、準備調整 DNS 與路由的使用者;初次設定請先完成一般代理連線測試。

FakeDNS 原理:以虛擬位址保留網域資訊

一般 DNS 會將網域解析為可連線的實際位址。FakeDNS 則會為經過處理的 A 或 AAAA 查詢分配虛擬位址,並在本機保存「網域與虛擬位址」的對應關係。應用程式會以為取得一般解析結果,接著向該位址建立連線;代理核心接手連線後,會查詢映射表,還原原始網域,再交由路由與出站處理。

應用程式查詢網域 分配虛擬位址 接管目標連線 查表還原網域 選擇路由與出站

這裡的「還原」是查詢本機映射,不是向公共 DNS 發出 PTR 反向查詢。舉例來說,應用程式查詢 example.com 後取得池中的某個位址;核心偵測到應用程式連往該位址時,就能透過同一份映射表找回 example.com。實際分配到哪個位址取決於執行狀態,不應將特定虛擬位址永久寫入規則。

虛擬 IP 只是本機接管流程中的標記,不是網站伺服器的實際位址。它不能直接拿到另一台裝置上使用,也不能透過一般閘道傳送到公網後期待目標回應。即使最後選擇直連出站,也必須先正確還原網域,再由相應的解析與連線機制處理實際目標。

位址池與連接埠:先分清三個數值

198.18.0.0/15
本文的 IPv4 虛擬位址池範例
4096
本文的 poolSize 設定範例
53
傳統 DNS 的服務連接埠

198.18.0.0/15 涵蓋 198.18.0.0 至 198.19.255.255,是保留給效能測試使用的位址範圍,並非一般私有區域網路位址範圍。將它用作虛擬位址池,是利用這段位址不應作為一般公網目標的特性;不過企業網路、測試環境或其他隧道也可能使用它,啟用前仍應確認是否有路由衝突。

poolSize 代表映射池容量,不是 DNS 快取時間,也不是並行連線上限。本文的 4096 僅為設定範例,並非所有裝置都適用的最佳值。容量不足,或映射遭淘汰但應用程式仍保留舊位址時,可能導致還原失敗;排查時不能只清除瀏覽器快取,也要留意核心映射與系統 DNS 快取的生命週期。

FakeDNS、sniffing 與 TUN:三者各司其職

TUN 負責接收路由至虛擬網卡的 IP 流量,本身不會確保所有連線都帶有網域資訊。一般 sniffing 會嘗試從 HTTP Host、TLS 交握等支援的協定資訊中辨識網域;FakeDNS 則依靠先前建立的映射還原網域。兩者都能補足網域資訊,但來源不同,不能視為相同機制。

FakeDNS 映射還原

資訊來源
本機虛擬位址映射表
必要條件
查詢經過對應的 FakeDNS
入站設定
啟用相符的 fakedns 還原
目標處理
還原網域後交由路由與出站處理

虛擬位址分配與映射還原必須形成完整流程。

一般協定嗅探

資訊來源
支援的應用層交握資訊
常見目標
HTTP Host、TLS SNI
限制條件
加密交握、協定差異與資訊缺漏
TUN 的職責
接管流量,不負責辨識網域

嗅探並非支援所有協定,也不會解密業務資料。

如果應用程式直接使用 IP、使用未受接管的加密 DNS,或重複使用啟用前快取的真實位址,FakeDNS 就無法建立相應映射。此時即使連線仍依 IP 規則處理,也不能直接判定功能失效。反過來說,若只有 DNS 查詢進入 FakeDNS,而目標連線繞過 TUN 或透明入站,應用程式也會因使用虛擬位址而連線失敗。

結論:先確認 DNS 查詢與連線是否走同一條處理流程

出現虛擬位址卻無法開啟網頁時,先檢查目標流量是否回到能讀取映射的核心;不要立刻更換節點,也別先把路由改成全數代理。

Xray 設定範例:位址分配與入站還原缺一不可

以下展示 Xray 風格的欄位關係,並非完整的執行設定。V2Ray 是常用稱呼,實際欄位與行為仍以目前使用的核心為準。v2rayN 是用戶端,v2rayNG 使用 Xray 核心,v2flyNG 使用 V2Fly 核心;不要只因介面名稱相近,就跨核心複製同一份 JSON。

第一段是頂層設定片段:宣告 IPv4 位址池,並讓內建 DNS 使用 FakeDNS。這裡只呈現最基本的關係,未包含節點伺服器網域解析、區域網路網域例外、IPv6 與 DNS 流量入口,不應直接取代用戶端產生的完整設定。

{
  "fakedns": [
    {
      "ipPool": "198.18.0.0/15",
      "poolSize": 4096
    }
  ],
  "dns": {
    "servers": [
      "fakedns"
    ]
  }
}

第二段屬於接收虛擬目標連線的入站物件,用於查表還原網域。此處只保留 fakedns,方便看清必要設定;若要新增 HTTP、TLS 等嗅探類型,應先確認所用核心是否支援。不要將此物件當成獨立的頂層設定,也不要誤加到完全收不到目標連線的入站物件。

{
  "sniffing": {
    "enabled": true,
    "destOverride": [
      "fakedns"
    ]
  }
}

適用情境:透明接管較有幫助,一般系統代理維持簡單即可

使用情境建議檢查重點
TUN 接管後,網域規則經常無法命中備份設定後可嘗試DNS 入口、映射還原與目標路由是否完整連通
瀏覽器透過 HTTP 代理傳送網域通常不必另外啟用先確認代理協定是否已傳遞網域
內部網域與企業專用解析優先保留實際解析結果內部 DNS、路由與虛擬位址池是否衝突
應用程式使用 IP 白名單或檢查解析結果針對該應用程式驗證或設定例外應用程式是否將虛擬位址判定為異常
應用程式內建加密 DNS先確認查詢是否經過接管接管 53 連接埠不代表涵蓋所有 DNS

HTTP 代理與支援遠端解析的 SOCKS 請求,可以直接將網域傳給代理;這種情況下再加入 FakeDNS,未必能解決其他問題。透明接管只收到 IP 封包,更容易遺失網域脈絡,才是 FakeDNS 常見的使用情境。決定是否啟用前,先判斷流量缺少的是網域資訊,還是節點連線、出站解析或路由順序。

FakeDNS 不等於 DNS 加密,也不保證所有 DNS 查詢都會經過代理。它只會改變應用程式收到的解析結果;後續實際解析在哪一端進行、使用哪種傳輸方式,仍由出站與 DNS 策略決定。VMess 或 VLESS 等節點協定不會單獨決定 FakeDNS 能否運作,也不需要為此重新匯入訂閱。

驗證步驟:從解析結果一路追查到最終出站

  1. 保留基準狀態。先確認一般代理模式下,同一個節點可以連上目標,並備份目前設定。暫時不要同時調整訂閱、路由規則庫與 DNS。
  2. 檢查接管入口。啟用選定的 TUN 或透明接管方案,確認應用程式的 DNS 查詢與後續連線都進入預期流程。在 Windows 可前往「設定」→「網路和網際網路」確認目前的網路介面,但不能只憑實體網卡顯示的 DNS 值,就認定接管已成功。
  3. 清除舊快取。關閉測試中的應用程式;在 Windows 可於命令提示字元執行 ipconfig /flushdns 清除系統快取,再重新開啟應用程式。瀏覽器本身的快取與加密 DNS 設定仍需另外確認。
  4. 觀察實際查詢。透過應用程式發出請求以觸發解析,並搭配 DNS 記錄確認回傳位址是否屬於設定的位址池。nslookup example.com 可供參考,但它的查詢路徑可能與瀏覽器不同,不能只憑一次結果判斷所有應用程式。
  5. 確認還原與分流。查看可用記錄中的原始虛擬目標、還原後的網域、命中的規則及出站標籤。記錄詳細程度會因核心與用戶端而異;必要時可暫時提高記錄層級,測試結束後再還原。
  6. 驗證例外情況。分別測試內部網站、IPv6 目標與直連規則。只確認一個代理網站能開啟,還不足以證明整套 DNS 策略正確。

測試資料應能回答具體問題:DNS 回傳了什麼、連線去了哪裡、命中了哪條規則。單獨執行 ping 不適合用來判斷網頁代理是否可用,因為虛擬位址不一定會回應 ICMP,而網頁使用的是另一條連線路徑。也不要把取得虛擬位址的速度當成網站連線延遲,兩者並非同一項指標。

常見問題:虛擬位址殘留、內網異常與分流失效

查到以 198.18 開頭的位址,是 DNS 出錯了嗎?

先確認目前使用的位址池是否為 198.18.0.0/15。若相符,代表查詢可能已進入 FakeDNS;接著應檢查該位址的連線是否回到正確的入站,以及映射能否還原。不能只憑這個位址判定連線正常或異常。

關閉 TUN 後網頁反而都打不開,該怎麼辦?

應用程式可能仍快取著虛擬位址。請還原原本的 DNS 與代理設定,結束測試中的應用程式,清除系統 DNS 快取後再重新開啟;若應用程式仍沿用舊連線,請結束其背景程序後重試。不要繼續將虛擬位址池的流量導向一般閘道。

外部網站能開,公司內部網站卻不能用了?

將內部網域交由企業 DNS 解析,並依照所用用戶端的機制設定 FakeDNS 例外與直連路由。兩者需要一起檢查:只改成直連,卻仍向依賴真實位址的應用程式回傳虛擬位址,問題可能依舊存在。

網域分流規則都寫好了,為什麼還是走預設出站?

先從記錄確認入站是否已還原出網域,再檢查規則順序。較前面的兜底規則可能已先命中;應用程式內建 DNS 或舊快取,也可能讓連線根本沒有映射。不要靠新增更多重複規則,掩蓋上游資訊缺漏。

若問題只在核心重新啟動後出現,還需考慮映射狀態與應用程式快取不同步:應用程式保存了舊虛擬位址,但新啟動的程序沒有對應項目。此時重新啟動應用程式並再次解析,比反覆切換節點更能對症處理。如果擴大位址池後仍反覆發生,也應重新檢查是否有多個 DNS 處理元件;不能無止境擴充容量來取代故障排查。

復原順序:還原 DNS、清除快取,再測試一般代理

判斷這項功能不適合目前的網路時,依原設定復原即可。重點是同時撤銷虛擬位址分配與依賴它的接管設定,避免只留下半套流程。用戶端更新可能改變設定產生方式,復原時應以先前備份的設定為準,不要猜測曾經開啟過哪些選項。

記住這個重點就夠了:FakeDNS 的用途,是為需要網域資訊的分流流程補足資料。若網域已能穩定傳遞,就不必為了多開一個選項而增加複雜度;只有透明接管確實缺少網域資訊時,才逐一接通位址池、查詢入口、入站還原與出站解析。更多欄位關係可參考設定參考中的 DNS 設定;基本連線問題請先查看連線問題排查說明。

用戶端與平台選擇

依作業系統選擇 v2rayN、v2rayNG 或 v2flyNG;先完成訂閱匯入與一般代理連線測試,再依實際使用的核心設定 DNS 與 TUN。

下載v2rayN