遇到需要代理的域名,使用代理服务器请求 DNS 。
---这个核心是要避免本地 DNS 解析,启用 dns 配置里的 fakeip 参数,或者路由规则对所有 ip 类规则加入 no-resolve 参数
遇到直连的域名,使用系统默认或者某个指定的服务器。
---这个使用 meta 的 DNS 某些配置选项可以实现,看下面的例子
遇到基于 IP 的规则,使用系统默认或者某个指定的服务器。
---这个使用 meta 的 DNS 某些配置选项可以实现,看下面的例子
我不需要靠 Clash 应对 DNS 污染,能不能直接关闭内置的 DNS ?
---关闭 Clash 的 DNS ,上述需求应该就没法实现了,关闭后,所有的请求都走 system 的 dns ,且无法配置策略
clash.meta 的配置例子,供参考:
dns:
enable: true
listen: 0.0.0.0:53
default-nameserver:
- 223.5.5.5
nameserver:
- tls://8.8.4.4
- tls://1.1.1.1
nameserver-policy:
"geosite:cn,private":
- https://doh.pub/dns-query
-
https://dns.alidns.com/dns-query看你说的你的规则里没有 IPCIDR ,只有域名,那就意味着,只有两种情况
1 ,交给代理的域名,默认都会去代理上进行 dns 解析,这个不需要设置
2 ,直连的域名,由你的配置文件决定,配置文件设置的 dns 策略,那就由规则决定(如上例子),如果开启 dns 开关,那就交给系统
上面的设置之后,在处理你那些要直连的域名的时候就会进入这个逻辑:
1 ,看看域名是不是 cn 或者 private 的,如果是,交给
dns.alidns.com 和 doh.pub 解析;
2 ,如果不是,那么交给 tls://8.8.4.4 和 tls://1.1.1.1 解析
3 ,解析好了后,用得到的 ip 直连出去。
结束
简单将就是你关了内置 DNS 开关,所有的请求都到了 system 的 dns ,就做不到“按需解析” ,