跳到主要內容

首頁 / 部落格 / DNS 與網路

Clash DNS 設定詳解:fake-ip 與 redir-host 到底選哪個

DNS 與網路2026-07-132019 字約 5 分鐘
Clash DNS 設定詳解:fake-ip 與 redir-host 到底選哪個

DNS 是 Clash 設定裡最容易出玄學問題的一段。分流不准、串流媒體不解鎖、內網訪問不了,八成能追到這裡。

先理解一個前提:為什麼代理用戶端要管 DNS

正常上網時,網域解析由系統完成,然後程式拿著 IP 去連接。

但在代理場景下有個矛盾:規則是按網域寫的,而流量到達核心時可能只剩 IP 了。

沒有 DNS 接管時的問題應用查 DNS系統 DNS 回傳真實 IP應用發起連接核心只看到 IP規則匹配DOMAIN-SUFFIX 規則全都用不上只能靠 GEOIP 判斷分流粒度大幅下降
而且系統 DNS 走的是本地網路,境外網域很可能拿到被污染的結果

所以核心需要自己接管 DNS。接管方式有兩種。

redir-host:老實解析

核心收到 DNS 請求後,真的去解析這個網域,把真實 IP 回傳給應用,同時在內部記下「這個 IP 對應哪個網域」。

redir-host 的流程應用查詢網域example.com核心真實解析向上游 DNS 發查詢回傳真實 IP93.184.x.x連接時按網域匹配規則核心記住了映射關係
邏輯直觀,但每次都要等一次真實解析

優點:回傳真實 IP,相容性最好,內網服務、區域網路設備都正常。

缺點

  • 每次解析都要等上游回傳,慢
  • 境外網域如果解析被污染,會拿到錯誤 IP
  • 解析結果可能是国內 CDN 的 IP,導致規則判斷偏差

fake-ip:先給個假的

核心收到 DNS 請求後,不去真的解析,直接從 198.18.0.0/16 這類保留網段裡分一個假 IP 回傳,同時記下「這個假 IP = 這個網域」。

應用拿著假 IP 發起連接,核心一看是假 IP,立刻反查出原網域,按網域匹配規則,然後由出口節點去做真正的解析

fake-ip 的流程應用查詢網域example.com核心回傳假 IP198.18.0.7 立即回傳應用連接假 IP核心反查出網域按網域匹配規則精確分流節點側解析真實 IP遠端完成解析
本地完全不做真實解析,所以既快又不會被污染

優點

  • DNS 回應幾乎零延遲(不用等上游)
  • 從根本上避免解析污染
  • 網域資訊完整保留,規則匹配最准
  • 由落地節點解析,串流媒體解鎖判定更準確

缺點

  • 回傳的是假 IP,某些依賴真實 IP 的場景會失敗
  • ping 域名 顯示的是 198.18.x.x,看起來奇怪(但不影響使用)
  • 內網網域必須加進 fake-ip-filter,否則解析不到

結論:絕大多數情況用 fake-ip

怎麼選fake-ip速度快、抗污染、分流准需要維護 fake-ip-filter預設推薦redir-host相容性最好慢,且可能被污染只在 fake-ip 反複出問題時用
Mihomo 預設就是 fake-ip,沒有特殊理由不要改

一份可用的 DNS 設定

dns:
  enable: true
  listen: 0.0.0.0:1053
  ipv6: false
  prefer-h3: false
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16

  fake-ip-filter:
    - "*.lan"
    - "*.local"
    - "*.localdomain"
    - "+.internal"
    - "+.home.arpa"
    - "+.pool.ntp.org"
    - "time.*.com"
    - "ntp.*.com"
    - "+.market.xiaomi.com"
    - "localhost.ptlogin2.qq.com"
    - "+.msftconnecttest.com"
    - "+.msftncsi.com"

  # 用於解析下面那些 DoH/DoT 伺服器自己的網域
  default-nameserver:
    - 223.5.5.5
    - 119.29.29.29

  # 主 DNS:解析国內網域
  nameserver:
    - https://doh.pub/dns-query
    - https://dns.alidns.com/dns-query

  # 備用 DNS:解析境外網域
  fallback:
    - https://1.1.1.1/dns-query
    - tls://8.8.4.4:853

  # 什麼情況下采用 fallback 的結果
  fallback-filter:
    geoip: true
    geoip-code: CN
    ipcidr:
      - 240.0.0.0/4
      - 0.0.0.0/32

  # 指定網域用指定 DNS
  nameserver-policy:
    "geosite:cn": [223.5.5.5, 119.29.29.29]
    "+.mycompany.com": "10.10.0.53"

四個欄位的分工

nameserver / fallback / default-nameserver / nameserver-policy1default-nameserver只干一件事:解析 DoH2nameserver主力 DNS,所有查詢先走它3fallback境外網域的備用 DNS,結果被 fallback-filter 判定後決定采用哪個4nameserver-policy優先級最高,指定某些網域固定用某個 DNS
優先級:nameserver-policy > nameserver / fallback

fallback-filter 的判定邏輯

同時向 nameserverfallback 發查詢,然後:

  • nameserver 回傳的 IP 在中国大陆 → 采用它(說明是国內網域)
  • nameserver 回傳的 IP 不在中国大陆 → 采用 fallback 的結果(說明是境外網域,国內 DNS 可能被污染)

這套機制讓国內網域走国內 DNS(快、CDN 就近),境外網域走境外 DNS(准、不污染)。

DNS 泄漏是怎麼回事

「DNS 泄漏」指的是:你以為流量走了代理,但網域解析請求走的還是本地 ISP 的 DNS。後果是 ISP 能看到你訪問了哪些網域。

防泄漏檢查dns.enable 設為 true —— 讓核心接管解析nameserver TUN 模式下 dns-hijack 設為 any:53 —— 攔截繞過核心的解析請求系統網路卡的 DNS 不要手動指向 ISP 的伺服器瀏覽器裡關掉「安全 DNS 用在線偵測站驗證結果裡沒有你的 ISP

瀏覽器的內置 DoH 是最常被忽略的泄漏源:Chrome 和 Firefox 預設可能啟用自己的加密 DNS,完全繞過系統和核心。

  • Chrome/Edge:設定 → 隱私和安全 → 安全 → 關閉「使用安全 DNS」
  • Firefox:設定 → 隱私與安全 → 最底部「通過 HTTPS 的 DNS」→ 關閉

常見故障對照

現象原因處理
內網網域解析失敗fake-ip 攔截了加進 fake-ip-filter
ping 域名 顯示 198.18.x.x正常現象fake-ip 就是這樣,不影響使用
區域網路設備名(NAS)訪問不了.local / .lan 被 fake-ip"*.lan""*.local"
某些 App 一直轉圈它自帶 DNS 且被劫持了TUN 下檢查 dns-hijack
国內網站變慢用了境外 DNS,CDN 調度到了遠處nameserver-policy 讓国內網域走国內 DNS
串流媒體判定地區錯誤解析在本地完成用 fake-ip,讓落地節點解析
時間同步失敗NTP 網域被 fake-ip"+.pool.ntp.org""time.*.com"
微信/QQ 登入異常特定網域需要真實 IP"localhost.ptlogin2.qq.com"

fake-ip-filter 應該放哪些

原則:任何需要拿到真實 IP 才能工作的網域,都要加進來。

四類必須過濾的網域本地與內網*.lan、*.local、+.internal、公司內網網域時間同步+.pool.ntp.org、time.*.com、ntp.*.com網路連通性偵測+.msftconnecttest.com、captive.apple.com —— 否則系統一直提示「無網路」設備發現類DLNA、AirPlay、列印機、NAS 的服務發現網域

驗證 DNS 設定是否生效

看是不是 fake-ip 在工作:

nslookup google.com 127.0.0.1

回傳 198.18.x.x 說明 fake-ip 正常。

看內網網域是否走了正確的 DNS:

nslookup gitlab.mycompany.com 127.0.0.1

應該回傳真實的內網 IP,不是 198.18.x.x。如果回傳假 IP,說明 fake-ip-filter 沒寫對。

看解析耗時:

日誌級別切 debug,能看到每次 DNS 查詢的耗時和使用的伺服器。大量查詢耗時超過 200ms 說明上游 DNS 選得不好。

小結

  • 預設用 fake-ip,它更快、更准、抗污染
  • fake-ip-filter 是必須維護的:內網、NTP、連通性偵測三類一個都不能少
  • nameserver-policy 優先級最高,用它做精確的 DNS 分流
  • 瀏覽器的內置 DoH 要關,否則前面配的全白費
  • default-nameserver 只能填純 IP

相關:TUN 底層原理分流實戰


相關文件