FakeDNS 以虛擬 IP 保留網域線索,適合需要依網域分流的透明代理情境。本文說明 DNS 回應、連線攔截與網域還原的原理,並提供核心設定範例、TUN 檢查步驟及復原方式。關鍵不在於找到通用開關,而是確認 DNS 查詢與後續連線都經過同一條可還原的處理路徑。
FakeDNS 是什麼:以虛擬 IP 對應網域
一般 DNS 查詢會將網域轉換成可連線的實際 IP 位址。FakeDNS 則從指定的位址池挑選一個虛擬 IP 回傳給應用程式,並記錄「網域與虛擬 IP」的對應關係。應用程式仍照常發起連線,但該 IP 並非網站伺服器的實際位址,必須由本機代理接手處理。
例如,應用程式查詢 example.com 時,本機 FakeDNS 可以分配 198.18.0.1。應用程式連線至該位址的 443 連接埠時,代理會查詢對應表,將目標還原為 example.com:443,再比對網域規則並選擇出口。這只是流程示例,不代表每次查詢都會取得相同位址。
FakeDNS 解決的是「連線抵達代理時只剩下 IP,網域資訊已遺失」的問題。它不提供節點,也不能取代 VMess、VLESS 或 Trojan,更不會改變 REALITY 的握手設定。訂閱提供連線參數;FakeDNS 則保留本機連線與網域的關聯,兩者位於不同層級。
網域還原和一般嗅探有何不同
一般協定嗅探會分析連線中的應用層資訊,例如 HTTP Host 或 TLS ClientHello 中可見的伺服器名稱。FakeDNS 還原則依賴先前儲存的對應資料,不必等應用程式主動在負載中揭露網域。兩種方式可以搭配使用,但「啟用 HTTP/TLS 嗅探」不代表「已完成 FakeDNS 設定」。
- 依對應資料還原:根據目標虛擬 IP 查詢網域。前提是分配位址與接收連線的一端共用有效的對應資料。
- 協定嗅探:從連線內容擷取網域。若流量中沒有可辨識的網域資訊,就無法保證能取得結果。
- 網域路由:取得網域後比對規則。還原網域不代表規則一定會命中,還要檢查規則順序與目標出口。
- 實際連線:代理出口可能會將網域交由遠端解析;直連出口通常仍需取得實際 IP,具體情況取決於核心與出口設定。
這也說明了為什麼啟用 FakeDNS 不等於完全停用一般 DNS:應用端或許不必等待實際 DNS 解析,但建立直連、解析節點伺服器網域等環節仍可能需要一般 DNS。在遠端代理連線中,目標網域也可能由遠端繼續解析。
FakeDNS 與 TUN:必須打通的兩個入口
TUN 提供虛擬網路介面,用來接收符合路由條件的 IP 流量;FakeDNS 則提供虛擬 DNS 回應與對應資料。兩者經常搭配使用,是因為 TUN 能將前往虛擬 IP 的連線重新導回代理。但 TUN 本身不保證所有 DNS 查詢都已接管,也不代表一定使用某種 FakeDNS 實作。
DNS 處理入口
- 輸入
- 應用程式發出的網域查詢
- 處理
- 由指定的 DNS 模組分配虛擬 IP
- 檢查項目
- 系統 DNS、應用程式加密 DNS、IPv6 查詢
查詢未經過此入口,就不會建立可供後續還原的對應資料。
連線處理入口
- 輸入
- 應用程式連往虛擬 IP 的連線
- 處理
- 由 TUN 接收後交給對應的還原邏輯處理
- 檢查項目
- 虛擬位址範圍路由、對應資料生命週期、出口目標
不能將虛擬位址直接交給不認得該對應資料的另一套核心。
在 v2rayN 中,TUN 路徑與一般代理路徑可能採用不同的設定產生方式或處理模組。請勿將某個核心的 fakedns JSON 直接貼到另一套 TUN 設定格式中。請先確認目前選用的核心、實際使用的設定與記錄,再判斷 DNS 由哪一層處理。
- 先關閉 TUN,透過原有的系統代理確認節點能否正常連線,排除訂閱與伺服器端故障。
- 開啟 v2rayN 的「設定」→「參數設定」,檢查目前版本提供的核心與相關選項;分頁名稱可能隨版本變動,請以實際介面為準。
- 啟用 TUN 後檢查系統路由,確認虛擬位址範圍會進入接管路徑,而不是送往實體閘道。
- 同時檢查 DNS 接管狀態與應用程式內建的加密 DNS 設定,避免只接手業務連線,卻沒有建立網域對應資料。
V2Ray / Xray 設定:分配與還原必須成對
以下是支援相關欄位的 V2Ray / Xray 核心設定片段,用來說明欄位間的關係,並非完整的 v2rayN 匯入設定。內容不含入站監聽、節點出口及完整路由規則。圖形介面用戶端通常會產生這些內容,修改產生的檔案也可能在下次儲存時遭到覆寫。
{
"dns": {
"servers": ["fakedns"]
},
"fakedns": [
{
"ipPool": "198.18.0.0/15",
"poolSize": 4096
}
]
}
dns.servers 中的 fakedns 表示使用虛擬 DNS 回應;頂層的 fakedns 則定義位址池與容量。本例的 4096 是示範容量,不是所有核心的預設值,也不是效能指標。此外,還必須將實際 DNS 查詢導入此 DNS 模組;只新增欄位不會自動接管系統查詢。
對於接收虛擬 IP 連線的入站,還必須啟用相應的還原機制。下方的 sniffing 物件應合併至相關入站物件中,而不是另一個頂層設定。實際支援的欄位請以使用中的核心為準。
{
"sniffing": {
"enabled": true,
"destOverride": ["fakedns"],
"routeOnly": false
}
}
enabled用來啟用該入站的嗅探處理;destOverride中的fakedns則指定依虛擬位址對應資料還原目標。- 本例使用
routeOnly: false,讓還原結果可用於替換目標,而不只用來比對路由。尚未了解出口行為前,請勿改成僅供路由判斷的模式。 - 若使用代理出口,請確認還原後的網域會交由代理連線處理;若使用直連,則必須提供能取得實際 IP 的解析路徑,以免再次回傳虛擬 IP 而形成循環。
geosite:規則比對網域分類,geoip:規則比對 IP 位址分類。虛擬 IP 不代表目標伺服器的地理位置,不能用來依實際目標 IP 的歸屬進行分流。
何時啟用:依連線方式評估
如果應用程式原本就透過 HTTP 代理,或使用帶有網域的 SOCKS 請求連線,代理可能已經取得網域,FakeDNS 帶來的額外效益通常有限。它更適合透明接管後只能看到目標 IP,且需要穩定套用網域規則的情況。
| 使用情境 | 建議 | 先檢查 |
|---|---|---|
| 使用 TUN 接管,主要依網域分流 | 可評估啟用 | DNS 查詢與連線能否共用對應資料 |
| 瀏覽器使用明確設定的代理 | 優先維持現況 | 代理是否已取得網域 |
| 企業內部網路、區域網路服務探索 | 先設定實際 DNS 解析例外 | 內部網域、印表機與本機裝置存取 |
| 應用程式強制使用內建加密 DNS | 先處理查詢繞過 DNS 接管的問題 | 查詢是否經過本機 DNS 模組 |
| 工具需要顯示目標的實際 IP | 為這類查詢保留一般 DNS 解析 | 診斷結果是否被虛擬 IP 取代 |
結論:先確認網域是否遺失,再決定是否啟用
如果記錄中已顯示目標網域,且網域規則正常命中,請先保留現有 DNS 設定。只有在透明接管路徑中確實遺失網域,而且能同時接管查詢與連線時,才試用 FakeDNS。
198.18.0.0/15 是供網路效能測試使用的特殊用途位址範圍,不是公網網站位址,也不等同於常見的私有網段。若本機測試網路或企業環境已使用這段位址,請先排查路由衝突。改用其他位址池時,也必須確認核心支援與路由規劃,不能隨意用公網位址範圍取代。
如何驗證:別只看 DNS 查詢結果
驗證時必須涵蓋完整處理路徑。只看到以 198.18 或 198.19 開頭的位址,只能證明某次查詢收到虛擬回應,不能證明後續連線已還原網域或正確分流。反過來說,工具回傳實際 IP,也可能是因為它繞過了預期的 DNS 入口。
- 記錄基準狀態。儲存原始設定,選擇一個原本可正常存取的網域,並記下目前使用的節點與分流模式;測試期間不要同時更換協定。
- 重新發起查詢。啟用設定後重新啟動測試應用程式。在 Windows 可執行
ipconfig /flushdns清除系統 DNS 快取,但瀏覽器自己的 DNS 與連線快取可能仍需另外清除。 - 檢查 DNS 入口。可使用
nslookup example.com輔助檢查系統解析路徑,但此工具不一定能重現瀏覽器的加密 DNS 行為,不能單獨作為驗收依據。 - 查看連線記錄。確認虛擬目標是否已還原為原始網域,以及最後命中的出口。暫時提高記錄詳細程度後,測試結束時應恢復原設定,避免長期記錄存取網域。
- 交叉測試。分別測試代理網站、直連網站、內部網域與 IPv6 情境。只測試一個網頁,很容易漏掉直連解析循環或 AAAA 查詢繞過接管的問題。
常見問題與復原步驟
啟用後所有網頁都無法開啟,該先調整哪裡?
先還原原本的 DNS 模式並重新啟動測試應用程式,確認基本連線已恢復。接著檢查前往虛擬位址範圍的連線是否進入正確的入站,以及該入站是否啟用了對應還原。請勿先更換訂閱或傳輸協定。
網頁可以開啟,但內部網域解析失敗怎麼辦?
為內部網域設定使用區域網路 DNS 的實際解析例外,並保留相應的直連路由。內部解析器通常仰賴目前的網路環境,不能將所有內部網域都交給外部解析器,再期待取得相同結果。
為什麼只有部分應用程式沒有虛擬 IP?
檢查這些應用程式是否使用內建加密 DNS、已有快取,或直接連線至固定 IP。先選擇一個使用系統 DNS 的測試應用程式,重現完整處理路徑,再逐一處理不同應用程式的差異;直接使用 IP 的連線原本就沒有 DNS 對應資料可供還原。
v2rayNG 和 v2flyNG 能直接照搬桌面設定嗎?
不能直接照搬。v2rayNG 使用 Xray 核心,v2flyNG 使用 v2fly 核心;Android VPN 接管與桌面 TUN 的設定入口也不同。請確認應用程式是否提供相關功能、目前使用的核心是否支援對應欄位,並以應用程式實際產生的設定檢查結果。
復原時請依序「還原 DNS 設定、還原原路由、重新啟動接管服務、清除應用程式快取」。保留一份可正常使用的基準設定,比同時調整 FakeDNS、IPv6、嗅探與路由策略更容易找出問題。重新啟用時每次只變更一個環節,才能釐清故障是來自查詢繞過接管、對應失效,還是出口規則。