首页/博客/DNS 配置指南
进阶

Clash DNS 配置指南:解决污染、防止泄露与加速解析

发布于 2026-04-11 · 阅读约 10 分钟 · 适用于 Clash / mihomo 内核用户

很多人排查"规则明明写对了,网站却还是打不开"的问题时,最后发现根源出在 DNS 上——规则再准确,如果域名解析出的 IP 本身就是错的,后面的分流逻辑就无从谈起。这篇文章讲清楚 DNS 污染、DNS 泄露分别是什么问题,以及 Clash 里对应的解决方式。

01DNS 污染是什么

DNS 污染指的是:你查询一个域名的 IP 地址时,网络中间设备"抢答"返回了一个错误或者被屏蔽的 IP,而不是该域名真实指向的服务器地址。结果就是即使代理规则判断正确该走代理,但因为拿到的 IP 本身是错的,连接依然会失败或者被跳转到错误的页面。

解决方式:使用可信的上游 DNS

config.yaml 中配置使用境外或经过加密的 DNS 服务器(DoH/DoT),可以绕开中间网络设备对普通 UDP DNS 查询的干扰:

dns:
  enable: true
  nameserver:
    - https://1.1.1.1/dns-query
    - https://8.8.8.8/dns-query

02DNS 泄露是什么

DNS 泄露指的是:代理连接本身走了代理节点,但发出 DNS 查询请求时却绕过了代理、直接用本机网络环境去查询,导致你的真实网络运营商仍然能看到你访问了哪些域名,代理只保护了后续的数据传输,没有保护"你访问过什么"这个信息本身。

解决方式:开启 fake-ip 模式

fake-ip 模式让 Clash 内核接管 DNS 解析过程:应用查询域名时,Clash 先返回一个虚构的本地 IP,等实际发起连接时再根据规则决定真正的解析方式和出口,这样 DNS 查询本身也被纳入了 Clash 的统一处理流程,不会绕过代理直接泄露给本地网络。

dns:
  enable: true
  mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter:
    - "*.lan"
    - "localhost.ptlogin2.qq.com"
提示:fake-ip-filter 用于排除不适合走 fake-ip 的域名(比如局域网设备、部分需要真实 IP 才能正常工作的服务),这些域名会退回正常解析,不使用虚构 IP。

03nameserver-policy:按域名分流 DNS 查询

有些域名你希望强制使用特定的 DNS 服务器解析(比如国内域名用国内 DNS 换取更快的 CDN 节点,境外域名用境外 DNS 避免污染),这时可以用 nameserver-policy 按域名规则分别指定:

dns:
  enable: true
  nameserver-policy:
    "geosite:cn": ["223.5.5.5", "119.29.29.29"]
  nameserver:
    - https://1.1.1.1/dns-query

上面的写法表示:命中 geosite:cn(国内域名分类规则)的查询走国内 DNS,其余域名走默认的 nameserver 列表。

04常见字段速查

字段作用
enable是否启用 Clash 内置 DNS 服务器接管解析过程,通常应设为 true。
mode解析模式:fake-ip(推荐,防泄露)或 redir-host(兼容性更好但防泄露效果较弱)。
nameserver默认使用的上游 DNS 服务器列表,建议使用 DoH/DoT 加密查询。
nameserver-policy按域名规则指定专属 DNS 服务器,优先级高于默认 nameserver。
fake-ip-filter排除不适合使用虚构 IP 的域名列表。

05如何验证 DNS 配置是否生效

改完配置后,不要凭感觉判断,用几个简单的办法就能确认 DNS 是否按预期工作:

  • 看客户端的连接日志:大多数客户端在"日志"或"连接"面板里会显示每次请求实际解析到的目标地址,如果开启 fake-ip,能看到域名被解析成 198.18.x.x 段的虚构地址,说明 fake-ip 已生效。
  • 用在线工具检测 DNS 泄露:在开启代理的状态下访问 DNS 泄露检测类网站,如果显示的 DNS 服务器归属地和你实际所在地区、运营商一致,说明查询请求没有走代理出去,存在泄露风险,需要重新检查 fake-ipnameserver-policy 配置。
  • 对比国内外域名的解析结果:访问一个国内网站和一个境外网站,分别查看实际连接使用的出口节点是否符合预期(国内直连、境外走代理),如果出口不对,通常是 nameserver-policy 里的域名分类规则没有覆盖到,需要补充对应的 geosite 规则。
提示:如果排查后发现问题依旧,也可以先确认系统本身的网络代理或 TUN 模式是否正确开启——DNS 配置只是分流链路的一环,前置的代理开关没打开,后面的设置再对也不会生效。

大多数订阅生成的配置已经包含一份可用的 DNS 设置,普通用户不需要从零手写;但如果你遇到"规则正确却连不上"或者"担心 DNS 层面暴露隐私"的情况,回头检查这部分配置往往能定位到问题所在。