騰訊DNSPod公共DNS體驗報告
上周看到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試試吧。