DNS 劫持和DNS 污染

来源:互联网 发布:java html 编辑:程序博客网 时间:2024/04/29 16:30

DNS 是domain name server 的简称。

当然如果你搜索到这篇文章,那么我猜测你可能对DNS也有一定的了解了。所以对DNS的基本知识我就不在介绍了。。

DNS 劫持

举个例子,说到劫持,我们可能联想到一个坏蛋劫持了DNS服务器,拿着刀架在脖子上。

这时候你问DNS服务器,博主帅吗?(发出请求)。
DNS服务器听到了,他心里的答案是,好帅哦(返回正确ip地址)。
由于坏蛋控制了他,并且对他做了修改。所以DNS只好不情愿的说,你真丑(错误的ip地址)。

这个过程中,你和DNS服务器之间,一来一回,流程上没有任何问题,唯一的问题就是,DNS服务器告诉了你错误的ip地址。DNS也不想啊,但是有人控制了他的权限,或者修改了他的记录值等等。我们称为DNS劫持。

类似我们使用网络的时候,明明访问的是普通网站,却突然跳到什么电信什么宣传页面一样。

我们大胆分析下。其实这种情况不多见,偶尔出现一次。我猜测是因为,平时DNS 有浏览器的缓存,还有操作系统的缓存,一般不太请求到运营商的DNS服务器,而好久不上,可能缓存已经失效,在请求直接到了运营商的DNS服务器上,那可能就会被劫持一下。同时,虽说好久不上,但也不是每次都能遇到,也可能和运营商分配的ip地址有关,有可能当你的ip变动,并且符合运营商的一些规则,他们就劫持一下。

第一个我觉得还靠谱点,第二种情况属于臆测。。。这些不是重点。

DNS 污染

这招是GFW常用的,举例子说吧。
你访问google.com 因为人家服务器在国外,你的DNS过去解析,肯定要走国际带宽的出口,然后就被GFW逮住了。因为DNS 走的是UDP协议,且UDP又没有什么校验机制,只管发送。所以这时候,GFW就假装成DNS服务器回应你了,而此时真正的请求可能正在被真正的DNS服务器处理,假的已经返回给你了,浏览器就选择了最快返回的那个地址去解析了。当然是一个不可用的地址啦。

因为DNS 走的UDP协议,并且是53端口,所以这有多好发现也就不言而喻了。如果你强行让DNS走TCP协议,GFW 有办法让你连接重置,虽然污染不了你的DNS,但是你还是无法获得ip。

也就是为什么有一种FQ方式就叫修改host 文件,修改后,域名不需要去DNS服务器请求了,直接在你的操作系统里就已经解析出了ip 地址。但是,GFW还是会定期封杀这些网站的ip地址,你的host就没用了。

好了,别的不扯,DNS劫持和DNS污染这两个不同的东西,能区分开了吧