上周看到DNSPod官网正式推出了公共DNS服务,并且号称是国内***家支持ECS协议的公共DNS,于是抓紧时间体验了下。(其实很久之前就听闻DNSPod有搞公共DNS的动作,不知道为什么一直没有正式对外推广,后来看了服务介绍,个人猜测可能就是为了等Google的ECS协议才拖到现在发布吧。)Anyway,随着代表腾讯的DNSPod加入,现在BAT三家的公共DNS服务算是全部集齐!
DNSPod的公共DNS服务(又称“Public DNS+”)IP是119.29.29.29,和他家之前推出的移动解析“D+”是一样的,目测后端应该是同一套架构。(再吐个槽,怎么现在都喜欢在名字后面搞个+号呢?DNSPod之前出了httpdns叫D+,现在搞公共DNS,又叫Public DNS+,是为了响应“互联网+”号召么?)
言归正传!我特意找了国内外几家知名的公共DNS对比测试,它们是:
114dns: 114.114.114.114
阿里: 223.5.5.5.5
百度: 180.76.76.76
360: 101.226.4.6
Google: 8.8.8.8
从宣传资料来看,各家卖点都差不多,基本都是快速、准确、稳定、无劫持等等。下面就以这些方面做考量,用实际数据说话吧。
1、快速
关于DNS的持续测试工具,我简单选用ping测试。通过测试ping来测试延时,也可以反映DNS的解析延时。
1-1 从全国各地的3大运营商进行ping测试,测试结果如下:
如上图,可以清晰地看到Google的公共DNS平均时延极高,达到了174.495ms。果然从大陆访问Google远在台湾的服务器,速度还是太慢了!
1-2 以下是去掉Google后,国内几家公共DNS的延时表现:
DNSPod的公共DNS延时***,为35ms;其次是百度的38.503ms和114的40.195ms;阿里的公共DNS延时***,达到了41.246ms,仍需努力呀!
【结论】 在国内,本土4家公共DNS的速度远远快于国外的Google。其中DNSPod最快,但与国内其他公共DNS差距不算大。至于360,连Anycast都没有,直接懒测out!
2、准确
如果运营商没有各种劫持和NAT的话,毫无疑问运营商的递归DNS应该是最准确的,但事实往往事与愿违,也是因为这样,我们不得不使用公共DNS,因此公共DNS的准确度,是重要的考虑因素。
理论来讲,如果公共DNS能支持Google的ECS协议,直接把用户的IP信息透传到授权DNS,授权DNS根据用户的IP而不是递归的IP来进行智能解析,这样就可以保证解析的准确度了。但是据了解,目前除了国外的Google和Open DNS支持ECS以外,国内之前的公共DNS都没有支持,DNSPod算是***家。
个人认为主要原因应该是支持ECS的技术难度太高:需要每个域名、每个线路、每个IP段单独缓存,缓存量实在是太大了,而如果不缓存速度又太慢。技术投入大,而实际收益不高,应该是国内其他公共DNS对ECS望而却步的原因。
2.1 各家公共DNS对ECS协议的支持情况:
经过实际测试发现,DNSPod的公共DNS确实如它宣传的一致,是支持了ECS的!并且支持程度和Google一样,在接入端和后端都支持ECS。这确实是个惊喜!以后终于可以用着国内的公共DNS,享受快速解析的同时也不牺牲解析准确度了。
另外,国内其他4家中,只有阿里的公共DNS在接入端是支持ECS。但说实话,单单在接入端支持ECS对用户解析准确度的提升并没有实质性的帮助,还是和使用用户实际IP一样依赖后端递归DNS的分布情况,只是可以方便用户对解析准确度进行测试而已。所以像Open DNS的接入端都没有支持ECS,只是后端支持。
又有问题来了,当用户解析域名的授权DNS不支持ECS时,只有公共DNS支持ECS也没用啊。这时候怎么办呢?那就只有靠公共DNS的后端节点部署情况来提升解析准确度了。
在更多省份的运营商部署更多的递归DNS节点,就可以根据用户DNS请求中的IP分配到对应的节点去。当某个省份运营商没有递归DNS节点时,只能将请求分配到邻近省份同运营商的递归节点上,解析准确度会受到一定影响。简单来讲,就是“节点越多,解析越准确!”。
从各家公共DNS的官网上看了下后端递归DNS节点的部署情况,发现DNSPod的节点部署竟然也是最多的!
2.1 各家公共DNS节点情况:
如上,在国内几家公共DNS中,DNSPod的公共DNS无论是总结点数还是国外节点数,都比其他家高得多。(百度的节点数没公布,不知道有多少个。Google没有国内节点,测试了下国内用户的DNS查询请求,是路由到了台湾的解析服务器。)
【结论】DNSPod的公共DNS在接入端和后端都支持ECS协议,准确度等同Google,速度又比Google快。另外DNSPod密集的节点部署,进一步保证了解析准确度,Public DNS+确实值得推荐!为良心产品点赞!
3、稳定
因为无法知道各家公共DNS的具体架构,所以我用dig测试和ping测试丢包率来看下各家公共DNS服务的稳定性(未测试360)。
dig测试来看,BAT和114都部署了多个国内接入节点,且每个接入节点都是多台服务器组成的集群,都用同一个IP使用BGP Anycast接入,不管是单服务器故障还是单节点故障,都可以快速切换,稳定性上应该是都有保障的。Google的话,因为国内没有服务器且经常受到防护墙的干扰,稳定性欠佳。
3-1 ping测试的丢包率,各家公共DNS结果如下:
从ping测试的丢包率来看,国内各家公共DNS丢包率都差不多,DNSPod、阿里、114的丢包率都在1%左右,百度丢包略高为2.286%。
Google的结果就惨多了,半夜之后好点在30%左右,白天和上半夜在70%左右,整体丢包率为50%左右,纵是真爱也真心不敢推荐使用。
【结论】 DNSPod、阿里、114和百度4家的公共DNS服务,在稳定性没有看出明显差别,大家都可以放心使用。
4、无劫持
所有公共DNS都宣称自己无劫持,这个功能不太好测试,但是实际使用中确实没发现明显的恶意劫持,就算都过关吧。
以上就是我对市场上几家主流公共DNS服务进行的实际体验报告。最终发现新出的“Public DNS+”(腾讯DNSPod的公共DNS)确实不错,无论速度、准确度、稳定性都可圈可点,与其他家相比都不逊色甚至略强。感兴趣的不妨把DNS改为119.29.29.29试试吧。