2012年10月31日 星期三

慎用public DNS

全世界范围的public dns日渐增多。比如谷歌的8.8.8.8以及OpenDNS的公开DNS。 使用它们可能会造成一些问题。影响用户上网的体验。
根据实际测试,凡是比较大的网站,比如google, youtube, facebook, twitter,以及其他采用了各种CDN 分发技术的网站。都会根据DNS的请求,来智能分配最近的IP 地址。
拿到中国来说,中国境内的网站,如果有用CDN加速,那么电信用户,访问电信节点应该是很快的。联通访问联通的节点,应该也很快。
但是启用了public DNS之后,也许会绕道从海外的节点获取数据。
DNS解析的过程是 客户端发起DNS查询 ,查询被发送至DNS查询服务器,查询服务器通过查阅根服务器,最后找到某域名的dns服务器,读取DNS。
这个过程是没办法避免的。
理论上来说,最近的DNS服务器,获取的IP,是最优的。我们可以在本机架设一个bind服务器,来负责查询DNS。但因为我们自己的网速不快,查询延时是很高的。
另外就是因为GFW的封锁。导致就算正确解析了IP,也不一定能访问解析后的IP。
我们经常需要借助国外的VPN,SSH SOCK5隧道来翻墙。
不管是通过VPN还是通过隧道来翻墙。我们都需要明白一点。DNS查询应该就近。 比如你的代理在洛杉矶,你最好在洛杉矶的DNS服务器查询。否则你查询纽约的dns服务器,返回的是纽约的IP,一来一回,传输数据的过程就变长了。
所以我建议大家在国外服务器本地建立bind来查询DNS。 如果机房本身有DNS查询服务器,可以直接让bind forward DNS查询到机房的DNS服务器查询。