Clash Fake-IP 模式原理與設定:虛擬 IP 池如何減少 DNS 等待及適用情境

解析 Clash Fake-IP 如何使用 198.18.0.0/16 虛擬 IP 池、與 redir-host 的差異,以及哪些應用需要加入 fake-ip-filter 例外。

Fake-IP 的運作方式:先回傳映射 IP,再處理連線

啟用 Clash 的 Fake-IP 模式後,DNS 查詢可能會取得 198.18.0.2 這類 IP。它不是目標網站的公網 IP,也不是代理節點 IP,而是核心為網域配置的暫時映射位址。應用程式接著連線至這個位址,流量由同一個核心接管,再透過映射找回網域,進行規則比對並建立對外連線。

這套機制將「提供應用程式可連線的位址」和「確認伺服器的實際位址」分開處理。若代理出站支援將網域交由遠端解析,用戶端就不必先在本機完成目標網域的實際解析,應用程式即可開始連線。它主要減少連線前的 DNS 等待時間,不會直接增加線路頻寬,也無法保證所有網頁都載入得更快。

為什麼 198.18.0.0/16 不是公網 IP?

198.18.0.0/15 是保留給網路設備效能測試使用的 IPv4 網段,不是一般公網服務位址。Clash 設定常從中使用 198.18.0.0/16,常見寫法為 fake-ip-range: 198.18.0.1/16。這個前綴涵蓋 65,536 個 IPv4 位址,但不能直接將此數字視為核心保證可同時維護的映射數量。

核心會分配、記錄並回收 IP 池中的位址。同一個網域今天可能對應 198.18.0.2,但下次重新啟動或映射變更後,位址未必相同,因此不應將虛擬 IP 寫入長期靜態路由、伺服器允許清單或應用程式固定設定。如果企業網路、測試環境或其他 VPN 已使用這個網段,請先檢查是否有路由衝突,再決定要不要調整 IP 池。

Fake-IP 與 redir-host:DNS 等待發生在哪個階段?

兩種模式的主要差異在於「回傳給應用程式的位址」,而非「是否使用代理」。規則模式和全域模式決定連線使用哪個出站;enhanced-mode 則決定 DNS 增強處理方式,兩者屬於不同層級。

比較項目 Fake-IP redir-host
應用程式取得的位址 通常是 IP 池中的虛擬 IPv4 位址 上游 DNS 回傳的實際 IP 位址
首次 DNS 回應 符合映射條件時,可先配置位址並回覆 通常須等待實際解析,命中快取時除外
網域資訊來源 從虛擬 IP 映射還原網域 可利用 DNS 快取關聯,其他情況可能需要嗅探
相容性重點 連線必須回到核心,且應用程式須能接受虛擬 IP 應用程式取得實際 IP,但流量仍須正確接管

代理連線流程比較

  1. redir-host:應用程式查詢網域,Clash 向上游 DNS 查詢實際 IP,收到結果後回覆應用程式;應用程式再連線至該位址,並由規則選擇出站。
  2. Fake-IP:應用程式查詢網域,Clash 儲存「網域-虛擬 IP」映射並回覆;連線進入核心後,核心還原網域,再依規則選擇出站。
  3. 代理支援以網域作為目標時:實際解析可在遠端進行;若最後選擇直連,或規則需要判斷目標 IP,仍可能觸發本機實際解析。

例如,假設某次未命中快取的上游 DNS 查詢耗時 120 毫秒,Fake-IP 可能讓應用程式在開始連線前不必等待這段時間。這裡的 120 毫秒僅為流程示意,不代表實測加速效果。實際耗時還會受到規則、節點交握、遠端解析和伺服器回應影響,不能直接推論整個網頁載入時間會縮短相同幅度。

同樣地,Fake-IP 不代表「完全不需要 DNS」。節點伺服器本身可能需要解析,直連網域需要實際 IP,某些 IP 規則也需要解析結果。若應用程式已透過 HTTP 或 SOCKS 代理直接提交網域,連線路徑也未必會經過上述虛擬 IP 配置流程。

基本設定:啟用映射並保留區域網路解析

以下範例用來說明 Clash Meta(現稱 mihomo)常見欄位之間的關係,並非可直接取代訂閱的完整設定。操作前請先備份目前設定,保留原有節點、策略群組與規則,再將 DNS 欄位合併至用戶端支援的覆寫設定。請勿在同一個 YAML 檔案中重複建立兩個頂層 dns 鍵。

dns:
  enable: true
  listen: 127.0.0.1:1053
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  nameserver:
    - 223.5.5.5
    - 1.1.1.1
  fake-ip-filter:
    - localhost
    - '+.lan'
    - '+.local'
    - '+.home.arpa'
  • enable:啟用核心 DNS;只修改模式而未啟用 DNS,無法建立預期的查詢流程。
  • listen:範例監聽本機 UDP/TCP 1053 連接埠,方便單獨測試;系統預設 DNS 使用 53 連接埠,不會自動改為連線至 1053。
  • enhanced-mode:選擇 fake-ip;進行對照測試時可改用 redir-host,其餘條件維持一致。
  • nameserver:設定需要實際解析時使用的上游 DNS。範例使用一般 DNS,沒有加密傳輸;請依網路可連線性及隱私需求選擇。
  • fake-ip-filter:依一般的排除模式設定,符合條件的網域會回傳實際解析結果,而非由 IP 池配置位址。

部分 mihomo 版本提供 fake-ip-filter-mode,可變更過濾清單的用途。本文依排除模式說明;若目前設定明確使用 whitelist 模式,就不能將清單解讀為「這些網域不使用 Fake-IP」。不同用戶端所附的核心版本和預設過濾項目也可能不同,請以實際生效的設定為準。

fake-ip-filter 例外清單:依故障網域新增例外

一般所說的「Fake-IP 白名單」,通常是指「不配置虛擬 IP 的例外清單」。加入清單不代表自動直連,也不代表自動使用路由器 DNS。網域是否直連由規則決定,實際 IP 要向哪個 DNS 查詢則由 DNS 策略決定,這三項設定需要分別確認。

區域網路裝置與私人網域

印表機、NAS、路由器管理頁面和企業內部服務,經常仰賴區域網路 DNS。對於 home.arpa 或組織內部網域,可新增精確的後綴例外,並將該網域交由正確的本機 DNS 解析。公共 DNS 通常不知道內部主機的 IP,只新增過濾項目仍可能收到找不到網域的回應。

.local 通常透過 mDNS 解析,其裝置探索機制與一般單播 DNS 不同。將它加入過濾清單只能避免配置 Fake-IP;若仍無法探索裝置,請進一步檢查區域網路存取權限、多播和 TUN 路由,而不是一再新增公共上游 DNS。

會驗證解析結果或將 IP 傳給其他裝置的應用程式

部分遊戲、語音、時間同步和裝置探索程式會檢查 DNS 解析結果,或將解析出的 IP 傳給另一台裝置。另一台裝置沒有本機核心維護的映射,就無法透過這個虛擬 IP 連線至目標。此時請從連線記錄找出實際網域,先新增單一例外,再重新測試完整功能。

  • 優先使用精確比對:只有單一服務異常時,先加入它實際查詢的網域,不要直接排除整個大型網域後綴。
  • 依故障情況驗證:網頁能開啟不代表語音、連線遊戲或裝置探索也正常;測試時應重現先前失敗的操作。
  • 不要按應用程式類別一律排除:遊戲、NTP 或 STUN 並非天生就與 Fake-IP 衝突,是否需要例外取決於程式實作及流量接管方式。

mihomo 常見的網域比對語法中,+.home.arpa 可比對該網域及其子網域。若使用較舊的 Clash 核心,請先確認是否支援相應語法。變更過濾項目後,也要清除應用程式和系統快取,否則應用程式可能繼續使用先前取得的虛擬 IP。

TUN 與系統代理:讓虛擬 IP 連線回到核心

Fake-IP 是 DNS 處理方式,TUN 則是流量接管機制,兩者可以搭配使用,但不是同一個開關。TUN 通常較適合接管不遵循系統代理設定的應用程式;系統代理主要影響主動採用系統 HTTP、HTTPS 或 SOCKS 設定的程式,無法保證接管任意應用程式對虛擬 IP 發起的連線。

先測試 DNS,再確認連線路徑

  1. 確認設定已載入,且 DNS 監聽連接埠確實為 127.0.0.1:1053。若出現連接埠已被使用的訊息,請先排查其他 DNS 服務或重複執行的核心。
  2. 直接查詢該連接埠,確認不在過濾清單中的網域是否取得 IP 池內的 A 記錄。
  3. 檢查系統或應用程式實際使用的 DNS。直接查詢測試成功,不代表系統預設查詢已送進 Clash。
  4. 連線至目標並查看連線記錄,確認核心能還原目標網域,且命中的規則與出站符合預期。
# macOS / Linux:使用系統已提供或已安裝的 dig
dig @127.0.0.1 -p 1053 example.com A

# 對照預設解析流程
dig example.com A

第一個指令可能會回傳 198.18.0.2 等 IP 池內位址,實際配置值不固定。若第一個指令取得虛擬 IP、第二個仍取得公網 IP,應優先檢查 DNS 入口,而非認定 Fake-IP 設定未載入。瀏覽器使用的加密 DNS、應用程式內建解析器和快取,也可能使實際連線改走其他路徑。

TUN 設定中的 dns-hijack 可用來接管符合條件的 DNS 流量,常見目標寫法包括 any:53,但實際支援方式和涵蓋範圍會依核心、平台與通訊協定而異。它不是所有 DNS 的總開關:透過 HTTPS 443 連接埠傳送的 DoH,不會因為接管傳統 DNS 53 連接埠就自動進入核心 DNS。

常見故障排查:逐項檢查 IP 池、快取與規則

取得 198.18 IP 後網頁無法開啟

先確認該連線是否出現在核心記錄中。如果完全看不到,通常要排查應用程式是否繞過代理、TUN 路由是否生效,或是否有其他 VPN 搶用路由。如果看得到網域和策略,再檢查節點狀態、直連 DNS 與規則,不要一開始就切換整套 DNS 模式。

重新啟動核心後,少數應用程式暫時無法使用

應用程式可能快取了舊的虛擬 IP,但核心已重新建立映射。請先結束並重新開啟故障應用程式,再依系統要求清除 DNS 快取。Windows 可在終端機執行 ipconfig /flushdns;使用 systemd-resolved 的 Linux 可執行 resolvectl flush-caches。這些指令不保證會清除瀏覽器或應用程式本身的快取。

部分核心提供 profile.store-fake-ip 來保存映射,減少重新啟動前後不一致的情況,但無法修復 DNS 被繞過、多個核心分別維護 IP 池或路由衝突等問題。未確認支援情況前,請勿直接將此欄位加入舊版核心設定。

加入過濾清單後仍無法開啟

先重新查詢,確認結果是否已從虛擬 IP 變成實際 IP。如果仍是 IP 池內的位址,請檢查過濾語法、模式和快取;如果已是實際 IP,則要確認該內部網域是否由正確的 DNS 解析,以及連線是否走對出站。過濾項目只會改變位址的產生方式,不會取代分流規則。

何時保留 Fake-IP,何時改用 redir-host 比較

  • 優先保留 Fake-IP:DNS 與連線都由同一個核心處理,主要依網域分流,且希望減少代理連線前的本機解析等待。
  • 先新增精確例外:只有少數內部服務、裝置探索或特定應用程式異常,其他連線都正常。
  • 對照測試 redir-host:許多程式仰賴實際 IP,或目前環境無法穩定接管虛擬 IP 連線時,可比較兩種模式的實際相容性。

每次只調整一個變數,並記錄網域、DNS 回應、命中規則和錯誤訊息。先確認查詢進入正確的 DNS,再確認連線回到正確的核心,最後檢查上游解析與出站品質。比起同時修改 IP 池、節點和所有規則,這樣更容易找出問題,也能保留可還原的設定。

下載Clash選擇裝置平台