先认识一下什么是DNS
DNS 是域名系统 (Domain Name System) 的缩写。在Internet上域名与IP地址之间是一对一(或者多对一)的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作 称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。 当用户在应用程序中输入DNS 名称时,DNS 服务可以将此名称解析为与之相关的其他信息,如 IP 地址。因为,你在上网时输入的网址,是通过域名解析系统解析找到了相对应的IP地址,这样才能上网。
因此DNS是网络上非常重要的一个网络 服务,如果DNS出现故障往往会造成网络的大面积瘫痪,可以参考[中资源 DNS故障,数十万域名无法解析] [上 海电信DNS故障] 着两篇文章。曾经轰动一时的"暴风事件"就是因为DNS故障造成了多省的网络瘫痪,不过这不属于DNS污染与DNS劫持范围。
大家都知道, 当我们在上网的时候,通常输入的是如网址,其实这就是一个域名,而我们计算机网络上的计算机彼此之间只能用IP地址才能相互识别。例如我们要上醉生梦死的博客,我们可以在IE的地址栏中 输入网址"www.liusuping.com",也可输入IP地址,但是这样子的IP地址我们记不住或说是很难记住,所以有了域名的说法,这样的域名会 让我们容易的记住。
通过上面的原理图可以大致了解DNS的工作原理:
1,用户需要访问www.liusuping.com这 个网站,向DNS服务器提出解析请求。
2,DNS服务器通过检查发现www.liusuping.com域名的IP地址是127.0.0.1, 将结果返回给用户。
3,用户知道www.liusuping.com这个域名的真实地址之后就可以正常访问www.liusuping.com网站了。
什 么是DNS劫持
DNS劫持就是通过劫持了DNS服务器,通过某些手段取得某域名的解析记录控制权,进而修改此域名的解析 结果,导致对该域名的访问由原IP地址转入到修改后的指定IP,其结果就是对特定的网址不能访问或访问的是假网址,从而实现窃取资料或者破坏原有正常服务 的目的。
从上面的原理图上来看,DNS劫持是出现在第2步,通过篡改DNS服务器上的数据返回给用户一个错误的查询结果来实现DNS劫持 的。
DNS劫持症状:在某些地区的用户在成功连接宽带后,首次打开任何页面都指向ISP提供的"电信互联星空"、"网通黄页广告"等内容页 面。还有就是曾经出现过用户访问Google域名的时候出现了百度的网站。这些都属于DNS劫持。
再说简单点,当你输入 liusuping.com这个网址的时候,你看到的网站却是百度的首页。
什么是DNS污染
DNS 污染是一种让一般用户由于得到虚假目标主机IP而不能与其通信的方法,是一种DNS缓存投毒攻击(DNS cache poisoning)。其工作方式是:由于通常的DNS查询没有任何认证机制,而且DNS查询通常基于的UDP是无连接不可靠的协议,因此DNS的查询非 常容易被篡改,通过对UDP端口53上的DNS查询进行入侵检测,一经发现与关键词相匹配的请求则立即伪装成目标域名的解析服务器(NS,Name Server)给查询者返回虚假结果。
而DNS污染则是发生在用户请求的第一步上,直接从协议上对用户的DNS请求进行干扰。
DNS 污染症状:目前一些被禁止访问的网站很多就是通过DNS污染来实现的,例如YouTube。
解决办法:
修 改Hosts文件,Windows中Hosts文件的优先级高于DNS服务器,操作系统在访问某个域名时,会先检测HOSTS文件,然后再查询DNS服务 器。可以在hosts添加受到污染的DNS地址来解决DNS污染和DNS劫持,如 "www.liusuping.com 127.0.0.1(正确的域名IP地址)"
使用安全的DNS服务器,大多数用户都是使用ISP默认的DNS,如果发现存在DNS劫持现象 可以通过更换DNS服务器来实现避免DNS劫持,例如可以更换为第三方的DNS服务Opendns或者得Google的DNS服务器,可以参考:[又多了一个不作恶的 DNS选择:google公共DNS] ,不过使用第三方DNS服务器虽然可以解决DNS劫持情况,但是还是不能解决DNS污染问题的。