2

DNS分流与泄露分析

 1 year ago
source link: https://apad.pro/dns-leak/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

DNS分流与泄露分析

相信“DNS分流”与“DNS泄露”这两个关键词,是爱折腾用户群体经常会听到的,几乎每次都会围绕“是否有必要”这个观点出现争论,几乎看不到从技术原理上做分析的。

虽说是技术原理分析,但本文更多讲的是逻辑,身为DNS分流策略的作者之一,希望这篇文章能够终止那些毫无意义的争论。


【分流器】

首先讲解的是分流器,因为只有先搞懂分流问题,才能理清争论的问题所在。

分流器主要有两种用途:分流哪些网站需要通过透明代理访问、分流DNS解决结果污染问题。

很多人会将这两种用途混为一谈,因为主流的代理工具,默认都会使用代理服务器的DNS远程解析走代理的域名,所以只要这个域名是通过代理访问的,就不存在DNS分流的问题,这也是“DNS分流无用论”的由来。

但实际上,这只对IP分流有效,也就是常说的”绕过大陆IP白名单”分流模式。

因为如果代理使用“域名黑名单”分流模式,黑名单只是记录了被阻断的域名,被污染的域名有一定概率不在黑名单中,此时就需要使用DNS分流来解决污染问题了。


那么IP分流是不是可以解决一切问题呢?

答案是可以解决问题,但可能会因DNS泄露而不安全。

需要说明的是,这里讲的DNS泄露,并不是打开某些DNS检测网站查看节点那么简单,文章后面会讲解DNS泄露的安全问题。因为只有先了解IP分流的过程,才能搞清楚安全问题究竟在哪。


【IP分流】

IP分流的用途是什么?并不是单纯用于区分哪些IP走代理,因为我们平时更多是通过域名访问互联网的,如果想用IP分流去判断哪些域名通过代理访问,那就必须要对域名先进行一次解析,获取IP后再分流。

此时出现两种选择:

方案一、IP分流时首次使用国内DNS解析

这种方式的原理,是利用“DNS污染结果不会出现大陆IP”这一特征,将所有返回非大陆IP的域名,全部使用代理或加密请求国外DNS,最终返回无污染的结果。如果仅使用IP分流,国内运营商会有用户访问已阻断网站的解析记录,当然可以通过补充“域名分流名单”来尽可能规避这一问题,但这个名单真的够全么,如果某个已阻断的域名不在名单里,意味着访问某个被屏蔽网站的行为已被国内运营商记录,这才是DNS泄露真正的问题所在。

方案二、IP分流时首次使用海外DNS解析

这种方式可以解决上述DNS泄露的问题,但依赖国内域名与CDN名单是否够全,不然会导致很多国内域名解析缓慢,另外请求海外DNS一般会通过代理,这将造成部分国内有CDN的域名解析到海外减速,再加上请求海外DNS延迟很高,所以基本上常见分流规则不会采用这个方案。


【DNS泄露】

此时DNS泄露的原因找到了,正是因为采用了上述的方案一,DNS检测站点绝大部分在海外,所以会先请求一次国内DNS解析域名,判断返回海外IP后再请求海外DNS,检测网站上也就会同时显示国内与海外的DNS了。

上述分流方案总结:

方案一 -> 速度快,不安全,有概率会被运营商掌握海外站点的访问记录

方案二 -> 速度慢,但安全,即使海外DNS也只能获取代理IP的访问记录


【DNS分流】

那么有没有更好的方案呢?这时DNS分流的价值就体现出来了。

DNS分流器与代理分流器有所不同,DNS结果是可以缓存的,还可以通过ECS获取域名较近的CDN节点IP,所以可以改进方案二,本地自建DNS服务,优先使用域名分流,未知域名再使用IP分流。

DNS的IP分流,使用海外DNS进行首次查询并传输本地客户端的ECS,返回离本地客户端最近的结果,同时走代理的域名依旧会在代理服务器上解析,返回离代理服务器最近的结果,最后开启本地DNS的乐观缓存功能。

此时,当使用代理工具时,出现某个已阻断又不在名单里的域名,代理工具的IP分流就会去调用本地自建的DNS,而本地自建的DNS则会去调用海外DNS并缓存结果。

当然,本地自建的DNS也可以去调用一些延迟低的无污染小众DNS,这样既保证了响应速度,又不会被本地运营商记录,问题最终得到了解决。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK