防止dns泄露的方法

dns泄露会让你的本地isp知道你访问的网站,这似乎是不太私密的

防止dns泄露的方法
以window举例:
右键右下角图标->打开目录->应用目录->打开config.yaml文件;在文件中配置dns,例如

dns:
default-nameserver:
- 223.5.5.5
- 119.29.29.29
nameserver:
- 1.1.1.1
- 1.0.0.1

配置完后重启应用,打开系统代理,随便去一个测试网址:www.browserscan.net
可以发现dns泄露消失了。
至于原因,可能是订阅中的nameserver是无效的,所以会重定向到本地的isp上,所以需要手动覆写nameserver。至于为什么需要打开系统代理,而tun下不起作用,我认为是tun下不能使用dns的配置,真实原因就不是我这种小白能想明白的了。

对于移动端,例如Clash Meta For Android 只要找到能够覆写的地方,将nameserver覆写上去就能避免dns泄露了。

另外,DNS是对nameserver并发请求的,所以只要nameserver的配置中有一个不可用,那么就有可能会重定向到本地isp的DNS上。

如果以上方法没有用那么你可能需要考虑的地方是:
ipv6是否能够走代理路线,是否使用的https加密协议而不是http,配置文件中是否已经正确导入了dns配置。

以上并未包含相关专业知识,仅是一个小白的试错经验,若有错误请各位佬指正,也欢迎补充。

18 个赞

感谢分享

2 个赞

估计设置一下dot或者doh应该也行吧?

1 个赞

安卓有doh,windows不知道

1 个赞

内网整个AdGuard Home

1 个赞

也是一种方法

1 个赞

感谢

1 个赞

理解的并不对,只能说刚巧配置中没有泄露DNS请求。
正确的防止DNS泄露的方法只有一个,那就是需要代理的域名请求,不要通过本地进行DNS请求,而是通过节点封装发送到服务器,直接在远程服务器进行DNS请求访问。clash的dns功能比较弱,没有办法通过域名规则分流进行国内国外域名分开请求,一般情况下,建议dns地址直接写路由器IP就可以了,速度最快,最精确,当然偶尔也会出现DNS污染情况,可以手动把被污染的域名添加到代理中。clash请求不出现dns的泄露关键在于分流规则,遇到IP请求,一定不要进行dns解析,否则理论上肯定会出现泄露,IP规则后面加上no-resolve

3 个赞

路由器IP的dns不还是运营商dns吗

1 个赞

对的,运营商的请求正常情况下就是最准确和快速的,同时也可以获得cdn的加速。当然很多地区运营商比较坑,会污染,会劫持等等操作。这个还是要看自身的地区情况进行判断,还有就是第三方的dns解析服务,比如阿里,腾讯,百度等等,这些服务商也有骚操作,会劣化对手的服务质量,所以软件可以自定义dns请求的话,阿里服务就用阿里dns,腾讯服务就腾讯dns,百度就百度。

1 个赞

无所谓的,我就下点东西

1 个赞

那么上外网啥的用什么 dns 比较好?用 google 的 8.8.8.8 或者 cloudflare 的 1.1.1.1 就行了吗?

我不太明白的是为什么我需要系统代理才不会dns泄露,只是tun模式下无论怎么配置dns都会有dns泄露的情况,我指的泄露是有国内的ip

或者说为什么tun模式下还是经过了本地dns请求,我已经配置了nameserver是cloudflare的了

上面两个问题统一回复了,clash配置中的dns请求不是给外网访问使用的,而是为了本地访问使用,同时为了解决dns污染,dns劫持等问题,上外网的话有且只能在远程服务器上进行,不管是系统代理还是tun模式,解决dns泄露只能从规则分流上解决,dns模块无法解决这个问题。

1 个赞

这里给大家一个模板吧,按照这个设置你的检测中就不会出现问题了,两个类别,一个clash系列,一个v2ray系列,这里是电脑端的。
v2rayN最简单,把域名解决策略选择为IPIfNonMatch即可。
clash系列,首先 Window设置,组策略-管理模板-网络-DNS客户端-禁用智能多宿主名称解析-已启用。

rules:
# 自用配置  no-resolve 选项是可选的, 它用于跳过规则的 DNS 解析. 当您想要使用 GEOIP、IP-CIDR、IP-CIDR6、SCRIPT、RULE-SET、IPSET IP(仅在 Linux 上), 但又不想立即将域名解析为 IP 地址时, 这个选项就很有用了
# 防止dns泄露关键就在于是否使用 no-resolve,当遇到IP类规则进行路由判断前,必须要首先获取域名的IP才能进行IP规则对比,这个时候就需要dns解析。如果这个时候访问的域名是国外的,就会通过dns模块,比如233.233..解析,这个时候就是dns泄露了。所以为了避免dns泄露,在遇到GEOIP、IP-CIDR、IP-CIDR6、SCRIPT、RULE-SET、IPSET IP时候,在后面加上 no-resolve ,就不会进行DNS解析了。哦对了,mihomo最近更新支持了ans规则,也需要加上。
  - IP-CIDR,224.0.0.0/4,DIRECT,no-resolve
  - IP-CIDR,fe80::/10,DIRECT,no-resolve
  - GEOIP,CN,🇨🇳 国内网站,no-resolve
  - MATCH,🐟 漏网之鱼

上面就是比较简单的规则分流,注意,注意,如果不是使用订阅转换的,我们一般会使用rule-providers规则集,这个时候需要把域名规则集和IP类规则集分开订阅,不要混合了,clash不支持混合no-resolve。

2 个赞

如果想要知其然知其所以然的话,建议去油管看一下不良林的教程,有很具体详细的讲解,适合新手入门,还有可以搜索一下( 浅谈在代理环境中的 DNS 解析行为),比较详细介绍了不同模式下,dns请求的具体过程。
最后申明一下,dns泄露目前是比较有争议的,究竟问题大不大,现在没有定论。唯一的安全方式就是注意自己的言行,还有运气不要太差即可。

1 个赞
1 个赞

DNS分流确实是正解!

AdGuard Home