Clash DNS 配置详解:nameserver、fallback 与 DNS 劫持字段怎么填

逐字段解释 Clash 配置文件中 DNS 段落的作用与取值含义,给出家用常规与严格防泄漏两套可直接套用的配置示例。

Clash 为什么自带一套 DNS

打开任意一份 Clash 或 Clash Meta(mihomo)的配置文件,都能看到一整段以 dns 开头的字段。它不是摆设,也不是只有进阶玩家才需要碰的部分。

系统代理模式下,浏览器把域名原样交给代理,由远端服务器解析,本机 DNS 看似无关紧要。但只要有一个应用不走代理、直接向运营商 DNS 发出 UDP 53 查询,污染和泄漏就回来了:拿到的可能是投毒后的假 IP,查询记录也完整留在本地网络侧。

TUN 模式下,整机流量都进虚拟网卡,域名解析必须先有着落。Clash 的内置 DNS 模块就是干这个的:统一接管 53 端口的查询,按配置决定每个域名问谁、怎么问、信哪边的结果。

所以 dns 段落填得对不对,直接决定三件事:网页打开快不快、会不会拿到被污染的地址、查询记录落在谁手里。

dns 段落字段逐个看

开关三件套:enable / listen / ipv6

  • enable:总开关。填 false 时整段不生效,Clash 不接管任何解析,所有字段等于白写。
  • listen:内置 DNS 服务器的监听地址,常见写法 0.0.0.0:53。TUN 劫持的终点、局域网设备把 Clash 当 DNS 用时的入口,都是这个端口。只在本机使用且走 TUN 劫持时,保持默认即可。
  • ipv6:填 false 时丢弃 AAAA 查询结果。宽带没有 IPv6 时建议关掉,避免应用拿到 v6 地址后走一条不存在或更慢的路线。

enhanced-mode 与 fake-ip-filter

  • redir-host:传统模式,每个域名都做真实解析,兼容性最好,代价是多一次 DNS 往返。
  • fake-ip:命中代理规则的域名直接返回 198.18.0.x 段的假地址,省掉真实解析,连接建立更快,也能绕开应用自己发 DNS 时被污染的环节。
  • fake-ip-filter:例外名单,名单里的域名必须拿到真实 IP。典型条目包括局域网域 *.lan、时间服务器、STUN 服务、部分厂商的登录域。某个应用在 fake-ip 下行为异常,第一动作就是把它的域名加进这个名单。

default-nameserver:引导 DNS

它只干一件事:把配置里写成域名形式的 DNS 服务器(例如 dns.alidns.com)解析成 IP;在没有单独配置 proxy-server-nameserver 时,也负责解析代理节点的域名。

这里必须填纯 IP 的 UDP DNS,例如 223.5.5.5119.29.29.29。填 DoH 地址会形成「先解析才能解析」的死循环,整个 dns 段直接瘫痪。

nameserver:主力解析列表

默认的域名解析服务器,多台并发查询,取最快的应答。取值写法有四种:纯 IP 即 UDP 53;tls:// 开头是 DoT;https:// 开头是 DoH;写 system 表示沿用系统 DNS。

家用场景填国内 DoH 即可:https://dns.alidns.com/dns-queryhttps://doh.pub/dns-query,延迟低,返回结果贴近本地 CDN 调度。

fallback 与 fallback-filter

fallback 与 nameserver 同时发起查询,服务于「可能被污染、或本就应走代理」的域名,一般填境外可信 DNS,例如 https://dns.cloudflare.com/dns-querytls://8.8.4.4:853

fallback-filter 决定信哪边的结果,四个子字段各司其职:

  • geoipgeoip-code:nameserver 返回的 IP 不属于指定地区(如 CN)时判为污染,采用 fallback 的应答。
  • geosite:域名命中 gfw 等分类时,直接采用 fallback 的结果。
  • ipcidr:返回 IP 落在 240.0.0.0/4 这类保留段时判为污染。
  • domain:名单内的域名无条件走 fallback。

补充一句:mihomo 后续版本更推崇 nameserver-policy 加分流向的写法,fallback 依旧兼容,老配置不必急着改。

nameserver-policy:按域名指派(进阶)

按域名或分类指定专用解析服务器,优先级高于 nameserver 与 fallback。典型写法:'geosite:cn' 指向国内 DoH,'+.internal.example.com' 指向公司内网 DNS。分流颗粒度比 fallback-filter 更细,适合对解析路径有明确要求的场景。

「DNS 劫持」到底劫持什么

配置里的劫持指的是 Clash 主动接管本机发出的 53 端口查询,交给内置 DNS 按上面的规则应答,而不是拦截别人的流量。

TUN 模式下,配置 tun.enabledns-hijack 后,所有进入虚拟网卡的 DNS 请求都会被收编,这是覆盖最彻底的方式,任何应用都绕不开。

系统代理模式不劫持 DNS。浏览器把域名交给代理远端解析没有问题,但本机直连的应用仍走系统 DNS。想堵住这条缝,要么开 TUN,要么手动把系统 DNS 改成 listen 填的地址。

注意

listen 保持本机或内网可达即可,不要把内置 DNS 暴露到公网。开放递归 DNS 会被扫描器发现并利用于放大攻击。

两套可直接套用的配置

方案一:家用常规

fake-ip 提速,国内域名走阿里与腾讯的 DoH,命中 gfw 分类或返回非 CN 结果的域名自动改用 fallback。适合绝大多数家庭宽带:网页秒开,国内 CDN 不绕路。

dns:
  enable: true
  listen: 0.0.0.0:53
  ipv6: false
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter:
    - "*.lan"
    - "*.local"
    - "*.msftconnecttest.com"
    - "time.*.com"
    - "localhost.ptlogin2.qq.com"
  default-nameserver:
    - 223.5.5.5
    - 119.29.29.29
  nameserver:
    - https://dns.alidns.com/dns-query
    - https://doh.pub/dns-query
  fallback:
    - https://dns.cloudflare.com/dns-query
    - tls://8.8.4.4:853
  fallback-filter:
    geoip: true
    geoip-code: CN
    geosite:
      - gfw
    ipcidr:
      - 240.0.0.0/4

方案二:严格防泄漏

respect-rules: true 让发往 nameserver 的查询本身按规则走代理,查询内容不落地到本地运营商;direct-nameserver 负责直连域名,proxy-server-nameserver 负责节点域名,三者职责分开。

dns:
  enable: true
  listen: 0.0.0.0:53
  ipv6: false
  respect-rules: true
  enhanced-mode: fake-ip
  fake-ip-filter:
    - "*.lan"
    - "*.local"
  default-nameserver:
    - 223.5.5.5
    - 119.29.29.29
  proxy-server-nameserver:
    - https://dns.alidns.com/dns-query
  direct-nameserver:
    - https://dns.alidns.com/dns-query
    - https://doh.pub/dns-query
  nameserver:
    - https://dns.cloudflare.com/dns-query
    - https://dns.google/dns-query

再叠加 TUN 把整机 53 端口收编,不留旁路:

tun:
  enable: true
  stack: mixed
  auto-route: true
  auto-detect-interface: true
  dns-hijack:
    - any:53

代价也要说清楚:境外 DoH 走代理,首次解析略慢;代理不可用时解析会整体失败,需要接受这层耦合。

改完配置,三步验证

  1. 看日志:客户端日志里的 [DNS] 行会打印每个域名用了哪台服务器、命中了哪条策略,先确认分流符合预期。
  2. 开检测页:浏览器访问 DNS 泄漏检测站点,看到的出口服务器应当是配置里的 DoH 提供方或代理出口,而不是本地运营商。
  3. 命令行抽查:执行 nslookup example.com 127.0.0.1 直接向内置 DNS 提问;fake-ip 模式下代理域名返回 198.18.x.x 是正常现象,不是故障。
提示

YAML 缩进错误是 dns 段不生效的头号原因。字段前统一两个空格,改完重载配置或重启内核再测。

三个高频问题

  • 国内网站打开慢:fallback 填了境外 DNS 却没有配 geosite 分流,国内域名被境外服务器解析,CDN 调度跑偏。
  • 某个应用联网异常:多半需要真实 IP,把它的域名加进 fake-ip-filter。
  • 配置看起来没生效:确认 enable: true、缩进正确,并确认所用客户端没有在图形界面上覆写 dns 段。

下载 Clash 最新版

Windows、macOS、Android 全平台客户端,每日核对官方发布。

Clash最新版下载