Clash DNS 设置详解:fake-ip 与 redir-host 怎么选

先说结论

fake-ip 先给程序一个虚拟地址,把域名交给节点远端解析,不受本地解析结果影响,但部分程序会看到虚拟地址;redir-host 返回真实地址,兼容性更接近原样,却更依赖上游解析结果。两者差别在 TUN 下最明显。

Clash DNS 设置,本质上是在回答一个问题:把域名变成 IP 的这一步,由谁来做,什么时候做。fake-ip 和 redir-host 给出了两种不同的回答,选哪个、怎么配,决定了某些程序是否异常、解析结果是否可信。本文先对照两种模式的完整流程,再拆 dns 段里容易搞混的字段,最后给出确认没有泄露的检查办法。

先把 DNS 在代理里的位置说清楚

普通上网时,程序先问系统的 DNS“这个域名对应哪个 IP”,拿到答案再去连接。接入代理之后,多了一个选择:这一步是继续在本机完成,还是交给代理出口那一端去做。DNS 的基本概念 可以先看一眼,关键点是:解析请求本身也会暴露你想访问的域名。

Clash 内核自带一个 DNS 模块,配置里 dns 段就是它的设置。它要处理的有三类事:给程序返回什么,向谁去问,以及遇到代理节点自己的域名怎么办。后面的内容围绕这三件事展开。

fake-ip 与 redir-host:一次访问的旅程对照

以访问 example.org 为例,假设这个请求最终要走代理:

步骤 fake-ip redir-host
1. 程序发起解析 内核收到查询 内核收到查询
2. 内核回答 立刻返回虚拟地址,不必等上游 向上游解析器询问,等待真实结果
3. 内核记录 虚拟地址对应哪个域名 真实地址对应哪个域名
4. 程序连接 连到虚拟地址,内核反查出域名 连到真实地址,内核按记录反查域名
5. 解析发生在哪里 走代理的域名交给节点,由远端解析,本机不查;只有直连的域名才在本机查 不论最终去向,查询都已在本机经上游解析器完成

两者的取舍可以概括为:

维度 fake-ip redir-host
程序拿到的地址 虚拟地址 真实地址
对本地解析结果的依赖 低,走代理的域名不靠本地解析 高,上游返回错了就会跟着错
兼容性风险 需要真实地址的程序可能异常 较少
适合关注什么 解析可靠、减少等待 兼容性、程序行为接近未接入代理时

表里 fake-ip 一列有个前提:后面没有未加 no-resolve 的 IP 类规则逼内核先查一次,否则本机照样会发起解析,规则细节见 Clash 规则怎么写。另外在 redir-host 下,同一个真实地址可能对应多个域名,反查记录有时会指向最近一次的那个,共用地址的网站出现个别误判时,要想到这一层。具体行为以内核文档的说明为准。

DNS 模式什么时候才真正有差别

这是最容易被忽略的一点。通过系统代理(HTTP 或 SOCKS)接入时,浏览器之类的程序通常会把域名直接交给内核,内核本来就知道对方要访问谁,DNS 模式的影响相对小。

开启 TUN 之后情况不同:程序依旧先向系统 DNS 发起查询,再用得到的地址去连接,内核只能在网络层看到地址。这时 DNS 模式、以及 TUN 配置里把 53 端口查询接给内核的 dns-hijack 选项,才真正决定了结果。所以如果你从未开过 TUN,不必对两种模式纠结太久;要开 TUN,则按 Clash TUN 模式是什么 的步骤一起考虑。系统代理与 TUN 的差异见 Clash 系统代理是什么。

fake-ip 带来的现象,以及 fake-ip-filter 怎么用

你看到的现象 原因 处理思路
ping 或 nslookup 得到 198.18 开头的地址 这是内核分配的虚拟地址 属于正常现象,不要当作网站的真实 IP
局域网里的设备找不到 本地域名也被分配了虚拟地址 把本地域名加入 fake-ip-filter
时间同步、联机类程序异常 程序需要真实地址去校验或直连 把相关域名加入 fake-ip-filter
个别程序缓存了虚拟地址,重启后连不上 虚拟地址与域名的对应关系可能在内核重启后失效 重启这些程序,或者让它们拿真实地址

fake-ip-filter 里的域名会被排除在虚拟地址之外,改而返回真实地址。示例:

dns:
  enable: true
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter:
    - "+.lan"      # 本地域名不要虚拟地址
    - "+.local"
  default-nameserver:
    - 203.0.113.53   # 占位示例,用来解析下面域名的地址
  nameserver:
    - https://dns.example.com/dns-query

虚拟地址段通常用不着改,只有和你局域网的网段冲突时才考虑。过滤规则的匹配写法和上限,以文档为准。

dns 段里几个最容易搞混的字段

字段 负责什么 搞混的后果
nameserver 主要的上游解析器,可以是普通地址,也可以是加密形式 填成不可达的地址,所有解析失败
default-nameserver 只用来解析 nameserver 里那些域名的地址,必须是普通 IP 形式 缺失时,加密解析器的域名无处可解析
fallback 与 fallback-filter 备用解析器,以及何时采用备用结果的判断条件 用了不合适的过滤条件,结果来回跳变
nameserver-policy 为特定域名指定专用解析器 范围写得过宽,会把本该走默认的域名带偏
proxy-server-nameserver 解析代理节点自己的域名 缺失时,节点域名可能被错误地解析,连不上节点

较新的 Mihomo 还有让 DNS 查询遵守分流规则的选项,具体名称和行为请翻 官方文档导航 里的 Mihomo 文档。DNS 里涉及按地区判断的部分,依赖内核里的 GeoIP 数据,数据过旧也会影响结果。

怎么确认 Clash DNS 设置没有泄露

“泄露”指你以为交给代理去查的域名,实际被本地运营商的解析器看到了。检查之前先定好预期:你配置的 nameserver 是谁,哪些域名本来就打算直连解析。

  1. 留一个基准:不开代理,打开 IP 与 DNS 检测导航 里的 DNS 检测页,记下它显示的解析器。
  2. 开启后复测:开启代理,用同一个检测页再测一次。
  3. 对照预期:看到的解析器如果是你配置的那个,或者是节点远端的,通常符合预期;如果仍是基准里本地运营商的解析器,说明查询绕过了内核,要检查系统 DNS 有没有被接管,TUN 下尤其要看 dns-hijack。
  4. 查看虚拟地址:在命令行用 nslookup 查一个域名。TUN 开启并接管了 DNS 时,通常能看到虚拟地址;只用系统代理时,这条命令走的是系统自己的 DNS,看到真实地址并不奇怪。
  5. 别忘了浏览器:WebRTC 泄露是什么 是另一条路径,和 DNS 无关,需要单独检查。

出现泄露的处理思路,看 DNS 泄露怎么解决;术语对照见词典里的 DNS 泄露。

下一步:先稳住默认,再逐项收紧

  1. 先确认自己是否用 TUN:只用系统代理,就把 Clash DNS 设置保持在客户端或订阅给的默认写法上,不必频繁改。
  2. 用 TUN 的话,先留意 Fake-IP 带来的现象,遇到异常程序再往 fake-ip-filter 里加域名,一次只加一类。
  3. 想对照 redir-host 的说法,看词典里的 redir-host。
  4. 再回头检查整份配置,配合 Clash 配置文件怎么看 确认没有别的字段在干扰解析。

这篇没有覆盖的

  • 字段名和取值依据 Mihomo 文档,其他内核或旧版本的写法可能不同,请以所用内核文档为准。
  • 本文不推荐具体的上游解析服务,也没有任何解析速度的数据。
  • DNS 泄露的判定与你的分流目标有关,这里只教检查方法,结论要你自己下。

本文引用的官方来源

  1. Mihomo(Clash Meta)文档(wiki.metacubex.one)
  2. Cloudflare:What is DNS(www.cloudflare.com)

以上链接均为官方页面,梯子岛在 2026-10-09 核对过;个别网站会拦截自动化访问,用浏览器直接打开即可。平台规则可能随时调整,以官方页面当前内容为准。

Clash DNS 设置常见问题

新手应该选 fake-ip 还是 redir-host?

没有对所有人都成立的答案。主要走系统代理的日常浏览,两种模式差别不大;开启 TUN 后更值得关注。先用客户端或订阅给出的默认设置跑通,遇到个别程序异常再针对性调整,比一开始就换模式更容易定位问题。

为什么 ping 一个域名得到的是 198.18 开头的地址?

这是 fake-ip 在起作用:查询被内核接管后,返回的是它分配的虚拟地址,而不是网站的真实地址。这个地址只在你的电脑和内核之间有意义,不要把它当成网站的 IP 去记录、封禁或排错。

开了 fake-ip 之后,某个程序连不上了怎么办?

先怀疑这个程序需要真实地址,比如局域网设备发现、时间同步或联机类程序。可以把相关域名加入 fake-ip-filter,让它们拿到真实地址,改完重载配置再试。一次只加一类域名,方便确认是哪一条起了作用。

nameserver 里能只写一个域名形式的 DoH 地址吗?

可以,但需要有办法解析这个域名本身,这就是 default-nameserver 的用途:它用普通 IP 形式的服务器,负责解析 nameserver 里那些域名的地址。两项配合着写,才不会出现先有鸡还是先有蛋的死结。

改了 DNS 设置后怎么知道有没有泄露?

分三步:先在不开代理时记下检测页显示的解析器,再在开启后复测,最后对照你配置的 nameserver 判断。看到的解析器不是你预期的那一个,才需要继续排查。检测入口见梯子岛的 IP 与 DNS 检测导航。

接着读

文中出现的术语

相关专题

接下来去哪儿?

找官方入口去网址导航,想核对仓库和版本看GitHub 项目导航;需要现成的机场,机场目录收了 28 家的价格与线路资料,性价比机场、便宜机场、VPN 机场分别有专项页。