Clash DNS 配置详解:nameserver、fallback 与 DNS 劫持怎么填
Clash 配置文件里的 dns 段决定域名解析走哪条路。本文逐项拆解 nameserver 与 fallback 的分工、fake-ip 与 redir-host 两种模式的差异、DNS 劫持判断的适用场景,并附可直接套用的配置示例。
Clash 配置文件里的 dns 段决定域名解析走哪条路。本文逐项拆解 nameserver 与 fallback 的分工、fake-ip 与 redir-host 两种模式的差异、DNS 劫持判断的适用场景,并附可直接套用的配置示例。
Clash 的配置文件里,dns 段是一个独立于 proxies 与 rules 的模块。它不管流量走哪个代理节点,只管一件事:域名怎么解析成 IP 地址。这一步发生在规则匹配之前——Clash 拿到域名后先要知道它对应的 IP,才能根据 GEOIP、IP-CIDR 一类规则判断走向。如果 dns 段配置不当,规则分流的准确性会直接受影响,典型症状是明明写了直连规则,却仍然走了代理,或者反过来。
dns 段的核心字段包括 enable(是否启用 Clash 自身的 DNS 处理)、listen(监听地址,通常配合 TUN 模式使用)、enhanced-mode(fake-ip 或 redir-host)、nameserver(主用解析服务器列表)、fallback(备用解析服务器列表)、fallback-filter(判断何时启用 fallback 的规则)。这几项互相配合,构成完整的解析链路。
不启用 dns 段(enable: false)时,Clash 会把 DNS 解析交给操作系统处理,自身只做流量转发。多数场景建议启用,以获得更精确的分流控制。
nameserver 是主用解析服务器列表,Clash 优先用这些服务器解析域名。fallback 是备用解析服务器列表,只在特定条件触发时才会被采用,并不是简单的"nameserver 失败就切换 fallback"。
建议填入运营商解析速度快、地理位置就近的服务器,常见组合是国内公共 DNS 与本地运营商 DNS 混用:
nameserver:
- 223.5.5.5
- 119.29.29.29
- 114.114.114.114
fallback 通常填入境外或跨网络的解析服务器,例如 1.1.1.1、8.8.8.8。它不是无条件的备用,而是配合 fallback-filter 使用——只有当 nameserver 解析出的结果被判定为"不可信"(例如落入 geoip 之外的地址段,或匹配特定规则)时,Clash 才会改用 fallback 重新解析。这个机制的意义在于:国内域名走国内 DNS 能获得就近的 CDN 节点,减少访问延迟;而被污染或需要代理访问的域名,则改用干净的境外 DNS,避免拿到错误的解析结果。
fallback:
- tls://1.1.1.1:853
- tls://8.8.8.8:853
fallback-filter:
geoip: true
geoip-code: CN
ipcidr:
- 240.0.0.0/4
domain:
- +.google.com
- +.facebook.com
上面这段配置的含义是:如果用 nameserver 解析出来的 IP 不属于中国大陆(geoip-code: CN 之外),或者命中 domain 列表里的域名,就认为这次解析结果不可信,转而用 fallback 里的服务器重新查询。这样一来,访问被污染域名时能拿到正确的境外解析结果,而访问国内站点时依然走最快的本地 DNS。
enhanced-mode 字段决定 Clash 用哪种方式处理 DNS 解析结果,可选值是 fake-ip 和 redir-host。这两种模式的设计目标不同,适用场景也不一样。
fake-ip 模式下,Clash 拦截 DNS 查询请求,不返回域名真实对应的 IP,而是返回一个预留地址段(默认 198.18.0.0/16)里的虚拟 IP。应用程序拿到这个虚拟 IP 后发起连接,Clash 在流量经过时再把虚拟 IP 还原成真实域名,交给规则引擎判断走向,最后再解析出真实 IP 进行转发。
这种模式的优点是解析速度快(不需要每次都等真实 DNS 查询返回),规则匹配可以直接用域名而不依赖 IP,准确性更高。配合 TUN 模式使用时,fake-ip 几乎是标配选择。缺点是部分对 IP 地址有强依赖的软件(例如某些游戏联机、局域网发现协议)可能因为拿到虚拟 IP 而工作异常,需要在 fake-ip-filter 里为这些域名单独排除。
dns:
enable: true
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.0/16
fake-ip-filter:
- "*.lan"
- "*.local"
- "+.stun.*.*"
- "time.*.com"
redir-host 模式下,Clash 直接向 nameserver/fallback 查询真实 IP 并返回给应用程序,不做虚拟地址替换。规则匹配阶段依赖的是这个真实 IP,或是在查询阶段记录下的域名对应关系。这种模式兼容性更好,几乎不会出现应用程序因为拿到"假"地址而工作异常的情况,但解析开销更大,规则匹配在某些复杂场景下不如 fake-ip 精确。
没有特殊兼容性问题的前提下,建议优先使用 fake-ip。只有在遇到局域网设备发现失败、特定客户端连接异常等问题,且确认与 DNS 模式相关时,才考虑切换到 redir-host 或者针对性地在 fake-ip-filter 里加排除项。
DNS 劫持指的是解析请求在传输过程中被中间节点篡改,返回错误的 IP 地址,导致访问被重定向到广告页面、错误页面,或者干脆无法连通。判断是否发生了 DNS 劫持,常见方法是用不同的 DNS 服务器分别解析同一个域名,对比返回结果是否一致——如果本地运营商 DNS 返回的 IP 与已知的公共 DNS 返回结果差异明显,且访问异常,基本可以确认存在劫持或污染。
在 Clash 的场景里,fallback-filter 机制本身就是应对 DNS 劫持的手段之一:通过 geoip 与域名列表判断解析结果是否可信,不可信就换用另一组服务器重新查询。除此之外,还可以考虑以下几点:
https://dns.server/dns-query 或 tls://dns.server:853。dns:
enable: true
use-hosts: true
nameserver:
- https://223.5.5.5/dns-query
- https://120.53.53.53/dns-query
fallback:
- tls://1.1.1.1:853
- tls://8.8.4.4:853
fallback-filter:
geoip: true
geoip-code: CN
hosts:
example.local.test: 127.0.0.1
需要注意的是,DNS 劫持与代理规则分流是两个不同层面的问题。如果代理节点本身可用,但访问某个网站始终异常,先排查是不是 DNS 解析环节出的问题,而不要一开始就怀疑节点或规则写错了。反过来,如果换了几个 DNS 服务器解析结果都一致且正确,但访问依然失败,问题更可能出在代理节点或规则匹配上。
DNS 泄漏指的是本该经过代理处理的域名解析请求,实际绕过了 Clash 直接发到了系统默认的 DNS 服务器,暴露了真实访问意图。避免泄漏,需要注意以下几个环节:
0.0.0.0:1053,并确认操作系统或路由层面的 DNS 请求被正确转发到这个监听端口,而不是绕道系统自带的 DNS 客户端。下面给出一份整合了本文各要点的完整 dns 段示例,可以直接套用到配置文件中,再按实际节点情况调整 nameserver 与 fallback 的具体地址:
dns:
enable: true
listen: 0.0.0.0:1053
ipv6: false
use-hosts: true
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.0/16
fake-ip-filter:
- "*.lan"
- "*.local"
- "+.stun.*.*"
default-nameserver:
- 223.5.5.5
- 119.29.29.29
nameserver:
- https://223.5.5.5/dns-query
- https://120.53.53.53/dns-query
fallback:
- tls://1.1.1.1:853
- tls://8.8.4.4:853
fallback-filter:
geoip: true
geoip-code: CN
ipcidr:
- 240.0.0.0/4
domain:
- +.google.com
- +.github.io
其中 default-nameserver 字段值得单独说明:它专门用来解析 nameserver 与 fallback 里那些以域名形式写出的 DoH 服务器地址(例如上例中的 223.5.5.5/dns-query 本身是 IP,但如果换成域名形式的 DoH 地址,就需要 default-nameserver 先解析出这个 DoH 服务器本身的 IP,再用它去查询实际的用户域名)。这是一个容易被忽略但影响解析链路能否跑通的细节。
配置修改完成后,建议重启客户端或重新加载配置,再用不同域名分别测试国内站点与境外站点的访问速度与连通性,确认 fallback-filter 的判断逻辑符合预期,再投入日常使用。
配置好 DNS 段之后,还需要匹配的客户端与订阅规则才能生效。前往下载页获取对应平台的安装包,或查看教程了解完整配置流程。