浅谈dns泄露,一分钟配置openclash,杜绝dns泄露

一、前言

本视频会介绍关于避免dns泄露的一些基本概念,讲解怎样利用openclash的分流规则避免dns泄露,怎样利用配置文件和yaml文件对openclash快速完成避免dns泄露配置。

本篇博客的链接我会放在视频的说明栏和评论区,大家随时可以打开参考。 

dns泄露是一个颇有争议的话题,我看到网上的一些朋友在讨论的时候对一些基础概念并不是很清楚。视频前面我会利用一点时间讲一些关于dns泄露的基本概念和利用openclash的分流规则避免dns泄露网上讨论比较多的问题。我不是什么专家,也不是什么大佬或大神,我下面的答案是我个人的理解,不是什么权威解释或者标准答案,如有谬误,敬请谅解,也欢迎指正!如果有的朋友不想听这部分内容,可以直接跳到后面对openclash进行配置部分,只需要上传两个文件,一分钟之内肯定可以搞定。

二、 关于dns泄露的一些基本概念。

1、避免dns泄露是不是伪命题?

对这个问题每个人都会有不同的看法,我的个人建议是:在当前的大环境下,尽早抛弃法不责众等等侥幸心理,在自己力所能及的范围内做好保护至少没什么坏处。 

2、什么是dns污染,什么是dns泄露,dns污染和dns泄露是什么关系?

a、很多朋友会混淆这两个概念,实际上这是两个完全不同的概念,而且他们之间没有什么必然的联系。 

b、dns污染简单的讲就是我们向dns服务器发出了将某个域名解析为ip地址的请求以后给我们返回了错误的ip地址。有很多原因可以造成dns污染,比如我们发出的请求在某个中转设备上被劫持,或者某一级dns服务器数据库被篡改等等。在很久很久以前,或者说在互联网形成初期,dns污染主要是由一些黑客个人或者组织为了利益造成的,比如引导我们观看一些广告等等。但是随着网络安全技术的发展,试图通过dns污染获取利益早就得不偿失了,因为无论是劫持dns请求,还是黑进dns服务器都越来越难了,需要耗费大量的时间和金钱还不一定能成功,即使成功了,被抓到的概率也是极高,后果可想而知。这种赔本的买卖早已经没人愿意干了。在一个众所周知的时间点,dns污染成为了我们防火长城的一部分,被用来阻止我们访问一些网址,比如谷歌。我们通过国内dns服务器查询www.google.com的ip地址会得到一个错误的ip地址,从而不能正常访问。

c、dns泄露指的是我们在访问一个国外网站的时候使用了国内的dns服务器去解析,不但得不到正确的ip地址,还暴露了我们的个人资料和想访问国外网站的企图。

3、怎样避免dns泄露?

a、开启全局代理。这种方式存在明显的缺陷,访问国内网站的时候速度慢,浪费流量也就是金钱不说,有些国内网站使用代理根本打不开,比如国内的一些流媒体网站。另外,像淘宝,京东之类的网站使用代理打开是海外版,里面的内容和大陆版是不一样的。

b、最好的避免dns泄露的方法是做好分流,国内网站用国内dns,国外网站用国外dns。

4、使用国内加密dns服务器是否能够避免dns泄露?

使用国内加密dns服务器只是将域名解析为ip的请求在传输过程中被加密了,在dns服务器上面不管是加密的还是不加密的同样都会存储你的请求记录的,这些记录随时可以被调用。关于谁会调用这些记录和用来做什么,我想大家都懂的。

三、利用openclash的分流规则避免dns泄露网上讨论比较多的问题。

1、使用redir host模式是否可以利用分流规则避免dns泄露?

关于这个问题我查阅过openclash官方文档,官方文档内明确注明redir host模式下是并发查询,在匹配分流规则之前就已经开始dns查询了,而且是首先使用国内dns查询,也就是说,分流规则还没有起作用就已经dns泄露了。

2、是否存在所谓的openclash完美配置,能够实现完全避免dns泄露,同时国内网站访问和软件使用比如打游戏、bt下载等都不受任何影响?

答案是不存在的,我知道这个答案会让很多朋友失望,但这是残酷的现实。我的结论主要基于下面两个理由:

a、openclash的fakeip模式并不完美。只有在fakeip模式下,openclash才会先匹配规则,然后根据规则国内走直连,国外走节点等等,从而实现避免dns泄露,但是有些网站根本不支持fakeip模式,必须使用真实的ip才能访问,比如一些银行、金融网站等等。如果有的朋友经常访问此类网站,就不能使用openclash来避免dns泄露。

b、openclash的分流规则并不完美。这一点我在后面还会讲到,这里先简单说一下,openclash在处理ip地址数据库的时候需要dns查询才能得到我们访问的域名的ip地址,然后才能匹配分流规则,这里的dns查询依然会首选使用国内dns服务器,造成dns泄露。为了避免dns泄露,我们只能使用域名数据库来区分国内外网站,但是全世界每天都会有成千上万的域名发生变化,域名数据库不可能完全实时同步,所以不管我们的分流规则做的有多严谨,总会有些漏网之鱼我们没办法判断归属。后面我会给出两个版本并讲解他们的区别,一个是完全避免dns泄露版本,一个是偏重效率但是会存在dns泄露的可能的版本。大家会看到,无论是openclash配置还是分流规则的设定,效率和完全避免dns泄露是存在冲突的。

3、在openclash前端和后端各加入一个adguardhome是否是避免dns泄露的最优解?

前面提到过,避免dns泄露的关键是分流,adguardhome并没有什么分流能力,所以对避免dns泄露不会起到任何作用。前端的adguardhome是主要是用来去广告的,后端的adguardhome是用来加快国内dns查询速度的。

四、openclash安装及快速配置。

1、本视频更侧重使用openclash来避免dns泄露部分,openclash的基础使用非常简单,这里不会做过于详细的讲解。我下面使用immortalwrt进行演示,如果有的朋友不会安装配置openwrt/immortalwrt,请参考我之前的视频。

openwrt基础篇 

openwrt进阶篇 

2、安装openclash:配置好网络环境,更新软件仓库,搜索openclash,安装即可。

3、安装sftp插件,方便上传文件。 

软件包名:openssh-sftp-server

为了不耽误大家时间,前面的步骤我已经做过了。

4、安装meta内核。

a、通常情况下,使用内置cdn可以自动下载安装。

b、开启其它科学上网插件,或者将路由器指向其它科学网关。

c、手动下载内核,并上传。我演示一下这个极端情况。

5、下载配置文件和yaml文件,下面的链接是一个压缩包,里面包含两套版本分别是完全避免dns泄露的版本和偏重效率但有可能存在dns泄露的版本,大家根据自己的需要选择其中一个版本就可以。

两个版本配置文件和yaml文件

6、上传配置文件。

目录:/etc/config 

7、上传yaml文件。

注意:上传yaml文件之前,需要修改yaml文件,把自己的机场订阅链接添加进去。 

8、更新openclash插件。

9、更新geo数据库、大陆白名单。

10、修改dns服务器。

11、将namesever改为自己宽带运营商的dns服务器,自己宽带运营商的dns服务器可以到主路由器的wan口信息里面查询。我给的配置里面使用的是公共dns服务器。

12、下面是测试dns泄露的网站,大家可以自行测试。

测试dns泄露的网站 

五、openclah配置讲解。

两个版本主要区别:

1、使用大陆白名单绕过大陆功能

2、嗅探功能

六、yaml文件讲解。 

1、yaml文件里面的常用网站域名和ip地址列表来源于下面的github开源项目。 

规则集来源

2、两个版本主要区别: 

a、大陆ip数据库

b、漏网之鱼

3、规则匹配是按顺序从前到后逐条执行的,所以顺序非常重要。主要原则如下:

a、从列表数量少的到多的

b、经常访问的网站放在前面。我用的yaml文件和我的上网习惯相关,每个人的上网习惯不同,所以没有适合所有人的配置,建议大家根据自己的上网习惯自行修改顺序或增减条目。

评论