跳到主要内容

首页 / 博客 / 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 底层原理分流实战


相关文档