FakeDNS 是什麼:Xray 核心虛擬 IP 解析原理與開啟情境

FakeDNS 以 198.18.0.0/15 保留網段的虛擬 IP 暫代真實解析結果,讓應用程式立即建立連線,真實解析延後到出站階段;本文說明它的攔截位置、設定寫法、客戶端開啟路徑,以及四類不建議開啟的情境。

本文速覽

本文說明 FakeDNS 以虛擬 IP 取代真實解析的原理與設定寫法,適合正在設定 TUN 透明代理、希望域名規則繼續生效的使用者;讀完能判斷自己的情境該不該開啟,並掌握開啟後的驗證方法。

一次請求的完整路徑:FakeDNS 在哪個環節介入

應用程式發起請求DNS 查詢被攔截回傳虛擬 IP連線虛擬 IP反查域名符合規則代理出站並解析

不開 FakeDNS 時,應用程式先向系統 DNS 伺服器查詢域名的真實 IP,取得結果後再建立連線。TUN 模式下核心看到的是 IP 封包,如果這個 IP 沒有符合任何規則,域名資訊就遺失了,分流只能靠 IP 規則兜底。

開啟 FakeDNS 後,查詢由 Xray 的 DNS 模組接管。它不再向上游 DNS 伺服器要求真實位址,而是從 198.18.0.0/15 網段中挑一個閒置 IP 回傳,並在記憶體對照表中登記「域名 → 虛擬 IP」。

應用程式接著連線的是這個虛擬 IP。流量進入 TUN 網卡後,路由引擎發現目標位址落在 FakeDNS 網段,就透過對照表反查出原始域名,geosite、domain 等規則照常命中,再交給對應的出站連線。

真正的 DNS 解析延後到出站階段,由代理伺服器在遠端完成。對走代理的流量來說,本地少了一次 DNS 往返,連線建立也更快。

FakeDNS 的核心不是「把 DNS 查詢轉發給代理」,而是「本地先不解析,出站時再解析」。省下的那一次往返,來自虛擬 IP 讓應用程式可以立即建立連線。

虛擬 IP 池:198.18.0.0/15 從哪來,為何不會衝突

198.18.0.0/15
預設虛擬 IP 池
131072
池內可用位址
1 次
省掉的本地 DNS 往返

198.18.0.0/15 涵蓋 198.18.0.0 到 198.19.255.255,共 131072 個位址。這段空間在 RFC 2544 中保留給網路設備效能測試使用,公網服務不會部署在其中,因此拿來當虛擬位址不會和任何真實網站衝突。

對照表常駐記憶體,連線結束後條目即被回收,預設池足夠日常使用。Xray 也允許透過根級 fakedns 的 pool 欄位更換網段,一般保持預設即可。

設定寫法:fake 伺服器條目與根級 fakedns 欄位

{
  "dns": {
    "servers": [
      "https://1.1.1.1/dns-query",
      {
        "address": "fake",
        "domains": ["geosite:geolocation-!cn"]
      }
    ]
  }
}

第一條是常規 DoH 伺服器,負責真實解析;第二條 address 為 fake 的條目負責發放虛擬 IP。domains 過濾決定哪些域名走 fake——上述寫法只讓境外域名取得虛擬 IP,境內域名仍由 1.1.1.1 正常解析。

不想手動修改 servers 陣列時,Xray 1.8.0 之後可以直接寫根級 fakedns 欄位,等同於自動注入一條 fake 伺服器條目,適合只想開關、不想改設定的使用者:

{
  "fakedns": {
    "pool": "198.18.0.0/15",
    "skipFallback": false
  }
}

skipFallback 控制回退行為:為 false 時,fake 條目沒接管的域名會繼續找清單裡的其他 DNS 伺服器;為 true 時直接回傳失敗。日常保持預設 false 即可。

v2rayN 與 v2rayNG 的開啟路徑

v2rayN 桌面端

選單位置
設定 → 參數設定
分組
路由設定
開關
啟用 FakeDNS
核心要求
Xray 核心
生效方式
重啟核心

域名解析策略保持 AsIs,不要改為 IPOnDemand。

v2rayNG Android 端

選單位置
設定 → DNS 設定
開關
啟用 FakeDNS
核心要求
Xray 核心
生效方式
返回後重啟應用程式

v2fly 核心同樣辨識 address 為 fake 的 DNS 條目,v2flyNG 使用者可在自訂設定中啟用。

兩個客戶端的開關都只作用於核心產生的設定,改完必須重啟核心或應用程式,否則 DNS 模組仍使用舊狀態。

開啟後第一件事是造訪一個境內網站,確認它走直連且沒有被 fake 接管。這一步能提前暴露 domains 過濾寫錯的問題,比直接測境外站點更有效。

四類不建議開啟 FakeDNS 的情境

判斷標準只有一條:流量必須經過 TUN 網卡,且分流以域名規則為主。兩個條件缺一,FakeDNS 的收益都很小,副作用卻可能直接導致連不上。

開啟前先記下目前域名解析策略與 DNS 伺服器清單。FakeDNS 的問題大多出在 DNS 設定上,保留一份對照可以快速還原。

開啟後的驗證方法與常見問題

驗證 FakeDNS 是否生效,看核心日誌最直接。開啟後造訪一個境外站點,日誌中應出現類似下面的紀錄:

2026/07/24 10:32:11 [Info] [TCP] dialing to target:198.18.0.7:443 via proxy

目標位址是 198.18.x.x,表示這條連線確實用了虛擬 IP;再搭配路由日誌中反查出的域名,就能確認 FakeDNS 與域名規則都正常運作。

開了 FakeDNS 後,境內直連網站反而變慢?

表示境內域名也被 fake 接管了。把 fake 條目的 domains 收窄為境外域名集合(如 geosite:geolocation-!cn),境內域名繼續走一般 DNS 伺服器解析,再重啟核心驗證。

TUN 模式下某些 App 一直連不上?

這類 App 通常會校驗目標 IP 或使用自訂 UDP。為它單獨加入直連規則或按程序排除,讓該 App 的流量不經過 TUN,不必全域關閉 FakeDNS。

關閉 FakeDNS 後一切正常,問題出在哪?

多數是 DNS 伺服器順序或 domains 過濾寫錯。先恢復預設 DNS 設定,再依「境外域名走 fake、境內域名走本地解析」的順序逐條加回,每次只動一處。

系統代理模式有必要開嗎?

沒必要。系統代理下應用程式已把域名交給 v2rayN,路由直接按域名比對;FakeDNS 的收益只在 TUN 透明代理情境成立,系統代理模式保持關閉即可。

v2rayN 下載