青青子衿, 悠悠我心, 但为君故, 沉吟至今
« 谷歌拼音输入法的重大算法更新六步实现Google BlogSpot变成日记本 »

OpenDNS不能解决DNS解析错误

  我先前曾经写了篇文章《使用OpenDNS解决DNS域名劫持》,经过我进一步的测试和使用,使用OpenDNS并不能解决所有的国外网站的域名解析错误问题,当目标域名同时被DNS(Domain Name System)劫持和关键字过滤的时候,OpenDNS解析的结果会在中途被污染,只有使用远程解析域名才能彻底解决DNS劫持的问题。

  我测试的方式是,在国内网络使用OpenDNS,然后登陆我在国外的一台服务器,同时对某一个特殊网站执行nslookup命令。(nslookup命令的功能是查询一台机器的IP地址和其对应的域名。它通常需要一台域名服务器来提供域名服务。如果用户已经设置好域名服务器,就可以用这个命令查看不同主机的IP地址对应的域名)

  我在国内使用nslookup之后显示的结果如下图所示:

国内DNS解析情况

  而使用国外的服务器执行nslookup之后得到的结果如下图所示:

国外DNS解析情况

  从上面两张图片我们可以看到,当目标域名同时被DNS劫持和关键字过滤的时候,在国内和国外使用对于同一个域名地址会解析出不同的IP地址,因此可以得出结论,在国内即使使用国外的OpenDNS,对于某些“特定”的域名,也不能解析出正确的域名IP地址,解析DNS的结果依然被电信控制。

  不过,我们可以通过手动修改本地hosts文件,或者远程解析DNS来解决这种错误的域名解析,为什么要远程解析?这就涉及到了DNS污染技术。

  DNS污染是一种让一般用户由于得到虚假目标主机IP而不能与其通信的方法,是一种DNS缓存投毒攻击(DNS cache poisoning)。其工作方式是:在UDP端口53上的DNS查询进行入侵检测,一经发现与关键词相匹配的请求则立即伪装成目标域名的解析服务器(NS,Name Server)给查询者返回虚假结果。由于通常的DNS查询没有任何认证机制,而且DNS查询通常基于的UDP是无连接不可靠的协议,查询者只能接受最先到达的格式正确结果,并丢弃之后的结果。对于不了解相关知识的网民来说也就是,由于系统默认使用的ISP提供的NS查询国外的权威服务器时被劫持,其缓存受到污染,因而默认情况下查询ISP的服务器就会获得虚假IP;而用户直接查询境外NS(比如OpenDNS)又可能被劫持,从而在没有防范机制的情况下仍然不能获得正确IP。

  在Firefox中,设置远程解析DNS很简单,只需要在在about:config 改成 network.proxy.socks_remote_dns=true 就可以了。对于IE或者其他用户来说,需要安装一个名为SocksCap的软件,选中Resolve all names remot即可。

  更新:OpenDNS之后发布了一个本地客户端工具,用于加密DNS通讯,因此使用DNSCrypt可以解决DNS污染问题



  除非注明,月光博客文章均为原创,转载请以链接形式标明本文地址

  本文地址:http://www.williamlong.info/archives/1113.html
  • 文章排行:
  • 2.Jarod
  • 唉,怎么就找不到一个干净上网的地儿呢,现在各家服务商又开始搞DNS劫持了,铁通居然强推网页游戏的广告。当打开一个错误的URL时,就这样,大家有什么办法的来分享一下呀,我是没招了。
  • 2008/8/17 19:38:05   支持(11)反对(5) 回复
  • 3.cxy152376
  • SocksCap配合加密Socks5代理(如Tor)
    设置远端域名解析 .

    这是最稳妥方法.
  • 2007/10/29 13:40:36   支持(9)反对(5) 回复
  • 4.gzdavidwong
  • 上面的結果是我使用同一本地ADSL線路測得的數據。
  • 2007/10/30 11:20:44   支持(10)反对(6) 回复
  • 5.yksoft1
  • 比如封dyndns.org的解析,就是这么做到的。
  • 2007/12/2 18:29:18   支持(9)反对(5) 回复
  • 7.难道opendns和govcn达成协议了
  • 为什么会这样捏?????
    强烈不明白!!!!
  • 2007/10/29 18:46:13   支持(8)反对(5) 回复
  • 8.Allen
  • 等下次有劫持的时候验证下吧
  • 2007/10/28 19:45:43   支持(8)反对(6) 回复
  • 9.dawnh
  • 你这个论据似乎跟你要论证的东西没有关系.
    另外,对于一些大的网站,会采用Bind的View功能,简单来说就是对于不同的dns client返回不同的结果.而存在这样一个前提:客户一般都是使用离自己无力位置比较近的DNS服务器的,因此就可以根据这个前提来做文章,利用view功能,对dns查询返回离他物理位置最近的IP.这样就达成了就近访问的目的.现在的CDN就是这个原理.

    然后再看看你的问题,你使用了opendns,从而破坏了这个前提,这样你得到的IP是离opendns较近的IP.
    然后结论就是,使用哪的DNS就得到哪得服务器IP,而与劫持毫不相干.

  • 2007/10/29 13:54:11   支持(7)反对(5) 回复
  • 10.ayanamist
  • 据我了解在大型机房的网关处一般都有设置DNS Relay的东东,这个东东不管客户机设置了什么DNS服务器,都会强制转换成某个指定的DNS。我们学校就是这样设置的,可惜我们学校的DNS太烂了,经常Server Not Found,即使用OpenDNS也没用,郁闷
  • 2007/10/30 10:22:33   支持(8)反对(6) 回复
  • 11.FQX
  • 你这个论证有问题。
    一个域名可以对应几个IP的,比如说Google。
  • 2007/10/28 13:22:14   支持(8)反对(7) 回复
  • 13.MyHou
  • 劫持劫持劫持····真的危险···
  • 2007/10/28 21:58:29   支持(6)反对(5) 回复
  • 14.仍
  • 可以用自油闩来访问YOUTUBE.超快
  • 2007/10/29 17:44:36   支持(6)反对(5) 回复
  • 15.jianshuigen
  • 你好,月光,我想问问你可以不可以提供一些国外注册域名的网站啊.谢谢
  • 2007/10/29 9:35:25   支持(8)反对(8) 回复
  • 19.kkk
  • 就算在本机用两次nslookup,也不会返回同样的结果

    反正我现在用的opendns,用了tor,没有tor的dns,上××没问题
  • 2007/10/28 13:44:46   支持(6)反对(7) 回复
  • 20.d
  • opendns这么厉害吗?
    还是担心来一招把opendns的ip给封了。趁现在还可以用大家要多用。
  • 2007/10/28 19:04:57   支持(6)反对(7) 回复
  • 21.fly
  • 只有tor才安全啊,opendns我这里很慢,而且真要封很容易啊。
  • 2007/10/29 5:42:32   支持(6)反对(7) 回复
  • 23.shinko
  • 我用OPENDNS一年多了...重来没有给垃圾电信劫持过......OPENDNS应该是可以正确解析出域名IP的....
  • 2007/10/29 20:14:45   支持(6)反对(7) 回复
  • 24.呵呵
  • “因此可以得出结论,在国内即使使用国外的OpenDNS,对于某些“特定”的域名,也不能解析出正确的域名IP地址,解析DNS的结果依然被电信控制。”

    确实是这样的。
  • 2009/12/10 11:21:22   支持(9)反对(10) 回复
  • 25.JasonNg
  • OpenDNS确实能返回正确的IP,使用wujie.net进行测试不能证明什么,因为wujie有很多IP,我每天都至少接收wujie.net四个新的IP。
  • 2007/10/28 13:32:41   支持(6)反对(8) 回复
  • 26.涛tall
  • 是不是**大后封锁又加紧了,过去常用的几个powang软件似乎都不好用了。
  • 2007/10/28 14:27:06   支持(5)反对(7) 回复
  • 27.xiaolang
  • 电信应该不会把opendns解析回来的IP改掉吧...
  • 2007/10/28 18:52:27   支持(9)反对(11) 回复
  • 29.wexml
  • 看来 我要学习的东西.还很多.
  • 2007/10/28 22:41:27   支持(5)反对(7) 回复
  • 30.carfieldily
  • 目前还是想不到办法来访问Youtube,试过很多方法,修改hosts,换国外代理,Tor,什么都用了,希望这一辈子还能再看到Youtube
  • 2007/10/29 9:11:07   支持(5)反对(7) 回复
  • 31.yksoft1
  • 理论上DNS请求百分之百是可以被中途拦截下来的。
    opendns 问题也很多,大量国内注册的域名无法解析。
    tor被封不存在太大技术问题,只是他们不去做。
  • 2007/10/30 10:01:56   支持(6)反对(8) 回复
  • 32.Cap
  • 没用的,我试过中华电信自己的DNS,都不行
    168.95.1.1(dns.hinet.net)
    168.95.192.1(hntp1.hinet.net)
    168.95.192.2(hntp3.hinet.net)
  • 2007/11/11 13:14:56   支持(5)反对(7) 回复
  • 33.zibin
  • 可是opendns的ip解析也不完整,国内一些网站都解析不了。

    得两个dns一直切换。
  • 2011/8/30 13:41:14   支持(7)反对(9) 回复
  • 34.polaris
  • 不用这个东西了。。上次试过一次
  • 2007/10/28 23:13:49   支持(5)反对(9) 回复
  • 36.ANONYMOUS
  • 难道博主先生不知道智能解析吗
  • 2007/11/4 8:41:02   支持(3)反对(7) 回复
  • 37.小米
  • 现在已经有国内的OpenDNS了——17395!17395是免费的,并且不需要下载任何插件!
    17395除了有OpenDNS的功能外,
    还可以免费注册中文寻址!这一点像中文域名或是说3721(但不需要插件)

    60.190.228.88/218.108.234.88
  • 2008/2/23 9:34:10   支持(7)反对(14) 回复
  • 38.linker
  • 月光的这篇可是不够严谨哪!
  • 2007/10/29 22:06:25   支持(4)反对(12) 回复
  • 39.在在在
  • 呵呵,本文没有技术含量,大家就不要用技术的眼光来看待了.
  • 2007/10/29 14:24:33   支持(5)反对(16) 回复

发表评论:

 请勿发送垃圾信息、广告、推广信息或链接,这样的信息将会被直接删除。

订阅博客

  • 订阅我的博客:订阅我的博客
  • 关注新浪微博:关注新浪微博
  • 关注腾讯微博:关注腾讯微博
  • 关注认证空间:关注QQ空间
  • 通过电子邮件订阅
  • 通过QQ邮件订阅

站内搜索

热文排行


月度排行

本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享. 转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议.
This site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License.