我为什么不建议使用OpenDNS和Google Public DNS
看到标题肯定很多人就开骂了。为什么不用?用了解析速度快,能防ISP劫持,能翻墙,能这能那。真的是这样吗?其实在我眼中,OpenDNS和Google Public DNS并不符合中国的国情,他们所作为买点的那些功能其实在国内一点用处都没有。
1.大家最关注的,翻墙,防止DNS被劫持。
资深不资深的玩家肯定都知道某墙的事情。用了OpenDNS之类后,真的能防止被某墙劫持域名吗?恐怕太小看某墙了吧。只要是DNS的UDP包经过旁路设备,直接就会被篡改。不信?看看结果
正常请求一个被劫持的域名,当然是劫持没商量了
Sam@Bra:~$ dig hen.bao.li ; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50859 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;hen.bao.li. IN A ;; ANSWER SECTION: hen.bao.li. 85697 IN A 78.16.49.15 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Mon Dec 7 23:18:48 2009 ;; MSG SIZE rcvd: 44
Sam@Bra:~$ dig hen.bao.li
; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li;; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50859;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0;; QUESTION SECTION:;hen.bao.li. IN A;; ANSWER SECTION:hen.bao.li. 85697 IN A 78.16.49.15;; Query time: 0 msec;; SERVER: 127.0.0.1#53(127.0.0.1);; WHEN: Mon Dec 7 23:18:48 2009;; MSG SIZE rcvd: 44
然后再看用了Google Public DNS后,照样劫持你没商量
Sam@Bra:~$ dig @8.8.8.8 hen.bao.li ; <<>> DiG 9.6.0-APPLE-P2 <<>> @8.8.8.8 hen.bao.li ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15485 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;hen.bao.li. IN A ;; ANSWER SECTION: hen.bao.li. 86400 IN A 78.16.49.15 ;; Query time: 75 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; WHEN: Mon Dec 7 23:20:58 2009 ;; MSG SIZE rcvd: 54
我们看看国外机器得出的真实结果
[root@WS-10267 ~]# dig @8.8.8.8 hen.bao.li ; <<>> DiG 9.3.4-P1 <<>> @8.8.8.8 hen.bao.li ; (1 server found) ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20845 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;hen.bao.li. IN A ;; ANSWER SECTION: hen.bao.li. 14400 IN A 69.163.142.44 ;; Query time: 252 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; WHEN: Mon Dec 7 23:25:12 2009 ;; MSG SIZE rcvd: 44
可以看到,此路不通。想靠换国外DNS来翻墙的可以醒醒了。
2.解析速度快
Google Public DNS解析速度是挺快的,但OpenDNS就未必了
Sam@Bra:~$ dig @208.67.222.222 http://www.dnspod.com ; <<>> DiG 9.6.0-APPLE-P2 <<>> @208.67.222.222 http://www.dnspod.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17404 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.dnspod.com. IN A ;; ANSWER SECTION: http://www.dnspod.com. 600 IN CNAME http://www.dnspod.com.cdnudns.com. http://www.dnspod.com.cdnudns.com. 300 IN A 61.172.249.96 http://www.dnspod.com.cdnudns.com. 300 IN A 218.244.147.137 ;; Query time: 608 msec ;; SERVER: 208.67.222.222#53(208.67.222.222) ;; WHEN: Mon Dec 7 23:29:01 2009 ;; MSG SIZE rcvd: 101
3.最重要的问题,访问网站真的快吗?
相信不少人一定记得之前QQ用户出现过一次“免费出国”,当然,现在这个情况也会出现在用了OpenDNS和Google Public DNS用户的身上。
大家都知道中国特色的互联网,南北分家,互访速度巨慢无比,网站的维护人员绞尽脑汁的想办法解决互联互通的问题,加速大家的网站访问速度。
网站加速访问有好几种办法,有钱的大公司就用BGP AnyCast,但并不是人人都做得起(有自己的IP段,做一次BGP广播X-XX万,要达到最佳访问效果必须要做N次BGP广播,最后费用有可能达到XXX万)。没钱的公司就只能用智能DNS了,包括自建的DNS,或者直接用DNSPod这样的现成方案,其实原理都一样。
智能DNS其实并不是太智能,它靠的预先分配好几个区域,然后根据用户请求的IP来判断用户属于哪个区域,之后返回对应区域的服务器IP。正常情况下,用户在国内上网,用的是ISP自动分配的DNS,用户域名解析请求发给ISP的DNS,ISP的DNS又发给DNSPod这样的域名授权DNS。DNSPod这时候拿到的IP地址基本是ISP的DNS地址,所以很方便的就能判断出用户所在的区域,并把结果返回给用户。
但如果这个时候,用户用的是OpenDNS或者Google Public DNS,因为这些服务器的IP地址是在国外,并且N多老外都在用,智能DNS就不好判断该怎么返回了。返回国外的IP,影响国内用户的访问速度。如果返回国内的IP,影响到其他老外的访问速度。并且如果返回国内的IP,那么该到底返回电信还是网通的IP呢?用户属于哪个省份?无从判断。那么最后只能人多决定人少,返回国外的服务器IP。
返回国外IP的结果是,用户被指向网站在国外的服务器,访问网站巨慢。
本来想找几个典型例子的,但找了一圈回来,发现国内的大公司在这上面烧钱可是一点都不心痛,全部是BGP。要么就是不搭理国外用户,没针对国外用户单独进行解析,一概解析到电信的服务器去。
拿Google来当例子吧。我是网通用户,使用网通自带的DNS,解析www.google.com得到以下结果
Sam@Bra:~$ dig http://www.google.com ...... ;; ANSWER SECTION: http://www.google.com. 48102 IN CNAME http://www.l.google.com. http://www.l.google.com. 300 IN A 216.239.61.104
如果我用了OpenDNS的话,那么我得到下面的结果
Sam@Bra:~$ dig @208.67.222.222 http://www.google.com......;; ANSWER SECTION:http://www.google.com. 30 IN CNAME google.navigation.opendns.com.google.navigation.opendns.com. 30 IN A 208.67.219.230
google.navigation.opendns.com. 30 IN A 208.67.219.231
ping一下得出的IP地址,看看速度,其实并不快
Sam@Bra:~$ ping 208.67.219.230 PING 208.67.219.230 (208.67.219.230): 56 data bytes 64 bytes from 208.67.219.230: icmp_seq=0 ttl=51 time=213.828 ms 64 bytes from 208.67.219.230: icmp_seq=1 ttl=51 time=213.779 ms 64 bytes from 208.67.219.230: icmp_seq=2 ttl=51 time=214.716 ms ^C --- 208.67.219.230 ping statistics --- 3 packets transmitted, 3 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 213.779/214.108/214.716/0.431 ms
我们可以再看看kaixin001.com的,如果我是网通用户,用了OpenDNS或者Google Public DNS,那么我会被解析到kaixin001的电信IP去。当然,kaixin001的电信机房线路很好,网通用户访问其实影响不大。
我网通DNS直接解析
Sam@Bra:~$ dig kaixin001.com......;; ANSWER SECTION:kaixin001.com. 120 IN A 220.181.100.31kaixin001.com. 120 IN A 220.181.100.32kaixin001.com. 120 IN A 220.181.100.33kaixin001.com. 120 IN A 220.181.100.34kaixin001.com. 120 IN A 220.181.100.35kaixin001.com. 120 IN A 220.181.100.30
如果我换用了OpenDNS,我得到的是kaixin001在电信服务器的IP
Sam@Bra:~$ dig @208.67.222.222 kaixin001.com ...... ;; ANSWER SECTION: kaixin001.com. 60 IN A 123.125.58.247 kaixin001.com. 60 IN A 123.125.56.246 kaixin001.com. 60 IN A 123.125.56.247 kaixin001.com. 60 IN A 123.125.56.245 kaixin001.com. 60 IN A 123.125.56.248 kaixin001.com. 60 IN A 123.125.59.20 kaixin001.com. 60 IN A 123.125.59.16 kaixin001.com. 60 IN A 123.125.58.248 kaixin001.com. 60 IN A 123.125.58.246 kaixin001.com. 60 IN A 123.125.58.245
中小网站就没这么幸运了。中小网站没有太多的钱去买昂贵的BGP线路,只能用很低廉的智能DNS方案,比如我们经常去找字幕的射手网
网通直接查询,可以得到网通服务器的IP
Sam@Bra:~$ dig shooter.cn ...... ;; ANSWER SECTION: shooter.cn. 800 IN A 218.21.130.42网通套用OpenDNS进行查询,得到的是射手在国外服务器的IPSam@Bra:~$ dig @208.67.222.222 shooter.cn ...... ;; ANSWER SECTION: shooter.cn. 750 IN A 74.207.252.170
这样,你就“被出国”了。用了OpenDNS或者Google Public DNS后,你访问的将是一个速度并不快的射手网。
国内类似射手网这样的中小网站有几十万甚至上百万,不少游戏运营商也采用这样的方案。虽然他们不一定有国外的服务器,但如果你被解析到并不属于自己网络的服务器上,访问速度或多或少都会受到影响。所以,如果你最近访问网站速度有所下降,或者玩游戏的时候经常掉线,那么你就该把DNS给换回来了。
Tweets that mention 我为什么不建议使用OpenDNS和Google Public DNS « DNSPod Team Blog -- Topsy.com 1:00 am on December 8, 2009 Permalink
[...] This post was mentioned on Twitter by DNSPod and adown, kangzj. kangzj said: 为啥不开放下留言呢?RT @DNSPod: 我为什么不建议使用OpenDNS和Google Public DNS http://blog.dnspod.com/2009/12/why-not-opendns-and-google-public-dns/ [...]
对网络的一些看法 | 歪奥 8:56 am on December 8, 2009 Permalink
[...] 这里有篇有关DNS的文章,希望大家能看看,也同样能看到很多中国网络的问题。 [...]
关于OpenDNS和DNS劫持 - Kangzj 4:44 pm on December 8, 2009 Permalink
[...] 关于留言板PR查询存档本站服务有情链接PR更新Email通知 关于OpenDNS和DNS劫持 十二 8服务器OSDNSPod官方博客《我为什么不建议使用OpenDNS和Google Public DNS》给我们纠正了一个看法,那就是使用OpenDNS并不能完全防止域名劫持。全文大体说明了以下几个问题:因为DNS查询用的是UPD协议,某墙十分容易就可以篡改,所以使用OpenDNS并不能防止域名被劫持;GoogleDNS解析速度还可以OpenDNS解析速度较慢(达到600多ms);GoogleDNS或者OpenDNS会解析出国外国外镜像网站IP,因而降低访问速度;说得很对,但是第1条还有一种情况奶罩没有考虑到,就是国内DNS服务器可以直接劫持域名的。这种情况,OpenDNS或者GoogleDNS是可以防止的。对第3条我是深有体会,学校机房电信专线,却设置了学校的DNS服务器(教育网),结果导致一大堆网站上不了,道理完全相同。既然某墙升级了,可以直接更改DNS查询包来劫持域名,我们应该怎么做?1. 超级无敌hosts文件没什么好办法了,只能拿出我们的终极武器hosts文件。操作系统进行DNS查询时会首先读取这个文件,如果文件里有,就不会再去查询DNS了。网上经常会流传一些更改hosts以达到突破某墙的效果,慢慢收集。2. 通过加密代理来查询DNS再一点,IE是自动利用代理服务器来查询DNS的,而FF默认是查询本地设置,用SSH Sockets代理来上网,可能一些网站还是上不了。FF可以通过如下设置更改成利用代理服务器来查询DNS:在地址栏输入:about:config点击”我保证会小心”,就到了设置页,双击:network.proxy.socks_remote_dns该值会变成true,就表示更改成功。还有什么别的方法,请大家补充啊。PS:留言中请不要提“翻”X那个X“墙”两字,请用fq两个字母替代,谢谢。© 2009, kangzj. 版权所有. 转载请以超链接注明出处, 否则拒绝一切形式的转载!本文永久链接:http://kangzj.net/opendns-and-dns-hijack/您可能还喜欢:小博增加了一个海外镜像 (3)世界上最遥远的距离 (55)Kangzj小博PR升到4-小结下 (51)在GAE上用二级域名托管Feed (31) dns, dnspod, DNS污染, google, OpenDNS, 域名劫持, 防止域名劫持 添加评论评论回复 点击这里取消回复 昵称 (必填) 邮箱(不会被公开) (必填) 网站 [...]
kangzj 5:11 pm on December 8, 2009 Permalink
这留言按钮可真是够隐蔽的~
monai 5:22 pm on December 8, 2009 Permalink
用unbound
ii 7:11 pm on December 8, 2009 Permalink
靠,你非说,害我找半天。。。
Google免费DNS服务的真实表现 « 民生大擂台 8:37 pm on December 8, 2009 Permalink
[...] Google提供的免费DNS解析服务受到了广泛称赞,Google声称免费DNS能改进浏览体验,使网上冲浪更快和更安全。安全难以衡量,但速度可以测试。利用免费的DNS基准测试工具,有人发现Google的免费DNS并不快,甚至比许多公共的DNS服务都慢。如果你不相信你的ISP提供了正确的DNS解析,那么使用Google的DNS无可厚非。此外还有人指出,使用Google的DNS可能会在访问国内网站时,被转到该网站位于国外的服务器上,导致访问速度巨慢。 [...]
1288893 10:50 pm on December 8, 2009 Permalink
作者是真不懂还是故意误导大众呢?不是大公司有钱,而是做BGP基本上都市IDC做的,大公司才不会自己去做BGP呢,他们只是会选择做了BGP的IDC机房托管而已。所以,中小企业只要选择做了BGP的IDC机房托管服务器就可以了,成本上也不会高很多,稍微贵一点而已。而且IDC做BGP是趋势和卖点。 所以,DNSPOD相对来说迟早就是废品了。
Sam 11:43 pm on December 8, 2009 Permalink
to 1288893
至少目前来说,能用得起BGP线路的中小网站不到5%,大部分网站仍然是采用廉价的基于IP来路判断的智能DNS+CDN。包括像腾讯这样的大网站也一样,采用的都是BGP+CDN的方案
淘宝排行榜 12:31 am on December 9, 2009 Permalink
不错的分析,其实却是有时候没必要用这些国外的东西,万一本身被强了。很坏心情。
Google免费DNS服务的真实表现 « 每日IT新闻,最新IT资讯,聚合多站点消息,保证你与世界同步 9:01 am on December 11, 2009 Permalink
[...] Google提供的免费DNS解析服务受到了广泛称赞,Google声称免费DNS能改进浏览体验,使网上冲浪更快和更安全。安全难以衡量,但速度可以尝试。利用免费的DNS基准测试工具,有人发现Google的免费DNS并不快,甚至比许多公共的DNS服务都慢。如果你不相信你的ISP提供了正确的DNS解析,那么使用Google的DNS无可厚非。此外还有人指出,使用Google的DNS可能会在访问国内网站时,被转到该网站位于国外的服务器上,导致访问速度巨慢。 [...]
» 关于OpenDNS和DNS劫持 PS' blog 9:54 pm on December 12, 2009 Permalink
[...] DNSPod官方博客《我为什么不建议使用OpenDNS和Google Public DNS》给我们纠正了一些看法,全文大体说明了以下几个问题: [...]
Lolicon 11:38 pm on December 12, 2009 Permalink
@kangzj
果然很隱蔽,跑到最上還要把滑鼠移上去才能看見
jacklu 9:14 pm on January 11, 2010 Permalink
opendns现在也不能用在邮件服务器上了
也玩劫持了
google的还行,这样rbl使用就不受影响了
Emory.M 5:51 pm on February 14, 2010 Permalink
还是要用google DNS对GEA的appspot.com域名很有效
lakowang 1:36 pm on February 24, 2010 Permalink
分析的好,确实对国内用户没什么用,而且还有副作用,要翻墙还是要设置远程DNS解析
pugwoo 9:08 pm on March 6, 2010 Permalink
好文,学习了,用VPN就一定得用国外DNS了
对网络的一些看法 « UED Notes 12:42 am on June 6, 2010 Permalink
[...] 这里有篇有关DNS的文章,希望大家能看看,也同样能看到很多中国网络的问题。但是对于此文章的观点,请大家持保留意 见,测试每个人都能做,这里就有个反例可以证明一些问题。 Filed under 网络 Comment (RSS) | Trackback | Permalink [...]
程方宁 11:44 am on July 29, 2010 Permalink
你说的不对。我给你看看我的dig
C:\WINDOWS\system32\dns\bin>dig minghui.org @8.8.8.8
; <> DiG 9.7.2b1 <> minghui.org @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<dig minghui.org @221.6.4.66
; <> DiG 9.7.2b1 <> minghui.org @221.6.4.66
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31555
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 6, ADDITIONAL: 9
;; QUESTION SECTION:
;minghui.org. IN A
;; ANSWER SECTION:
minghui.org. 300 IN A 59.24.3.173
;; AUTHORITY SECTION:
org. 54976 IN NS b0.org.afilias-nst.org.
org. 54976 IN NS c0.org.afilias-nst.info.
org. 54976 IN NS a0.org.afilias-nst.info.
org. 54976 IN NS a2.org.afilias-nst.info.
org. 54976 IN NS d0.org.afilias-nst.org.
org. 54976 IN NS b2.org.afilias-nst.org.
;; ADDITIONAL SECTION:
a0.org.afilias-nst.info. 60258 IN A 199.19.56.1
a2.org.afilias-nst.info. 57997 IN A 199.249.112.1
a2.org.afilias-nst.info. 75060 IN AAAA 2001:500:40::1
b0.org.afilias-nst.org. 54066 IN A 199.19.54.1
b0.org.afilias-nst.org. 75060 IN AAAA 2001:500:c::1
b2.org.afilias-nst.org. 53432 IN A 199.249.120.1
b2.org.afilias-nst.org. 75060 IN AAAA 2001:500:48::1
c0.org.afilias-nst.info. 54876 IN A 199.19.53.1
d0.org.afilias-nst.org. 75060 IN AAAA 2001:500:f::1
;; Query time: 78 msec
;; SERVER: 221.6.4.66#53(221.6.4.66)
;; WHEN: Thu Jul 29 11:37:32 2010
;; MSG SIZE rcvd: 375
国内的服务器和Google Public Dns得到的解析是不一样的。