柴柴's TIL

Clash fake-ip 模式使用内置 DNS,不走系统 DNS

· 3 views ·

Clash Verge 开启 fake-ip 模式后,DNS 解析由 Clash 内核接管,使用配置文件中 nameserver 指定的 DNS 服务器,而不是系统设置的 DNS。

这会导致一个常见问题:公司内网域名(如 *.sankuai.com)在关闭 Clash 时可以正常解析,开启后却报 dns resolve failed: couldn't find ip

原因是机场(代理服务商)通常会在订阅配置中替换 nameserver 为自己的加密 DNS(DoH),这些 DNS 服务器不知道公司内网域名的存在。

解决方案

在 Clash 配置的 dns: 部分添加 nameserver-policy,为指定域名单独配置 DNS 服务器:

dns:
  nameserver-policy:
    +.example-internal.com: 114.114.114.114

注意:必须使用 +. 前缀(匹配域名本身及所有子域名),而不是 *.(只匹配子域名)。

排查方法

查看 Clash 日志页面,搜索目标域名,若出现以下错误即可确认是 DNS 问题:

[TCP] dial DIRECT ... error: dns resolve failed: couldn't find ip