前言: 智能DNS即为BIND+VIEW的功能实现。在国内,最早把智能DNS投向市场的是偶(怎么给人不谦虚的感觉呢)。我想BIND9.X引入VIEW(视图)功能并不是针对中国的,但是这个功能正好能解决我国网络运营商之间的互联互通问题,可谓天上的馅饼。本文结合自己这几年来架设维护智能DNS的经验体会随便写些东西,希望对大家有所帮助。时间仓促加之知识有限,难免错误之处,大家一块讨论吧。
智能DNS的前提: 使用智能DNS有个前提假设,就是各个网络运营商都有自用的公网DNS为自己的用户提供域名解析服务。如果不是这样的,那智能DNS就没有存在的必要了(原因将在下面讨论)。所幸的是目前情况基本满足这个条件,网通,电信,教育网等都自成体系。
智能DNS的功能: 智能DNS最基本的功能是可以智能的判断访问您网站的用户,然后根据不同的访问者把您的域名(域名记录)分别解析成不同的地址。如访问者是网通用户,智能DNS服务器会把你域名对应的网通IP地址解析给这个访问者。如果用户是电信用户,智能DNS服务器会把您域名对应的电信IP地址解析给这个访问者。由此我们可以让网通、电信、教育网、移动、国外用户智能的选择访问你的服务器。
智能DNS的原理: 以ABC.COM域名为例。用户访问WWW.ABC.COM时的工作过程如图所示。这里省略了与本文讨论无关的细节,目的是化繁为简。
1. 网通用户向本地DNS请求解析WWW.ABC.COM。 2. 本地DNS向ABC.COM的权威DNS(这里的权威DNS一定是智能DNS)。 3. 智能DNS根据请求者(这里是本地DNS)的IP地址在自己的ACL里面进行匹配,然后把匹配的结果返回给本地DNS。 4. 本地DNS把结果告诉用户,并把结果缓存起来。 5. 用户访问网通线路上的网站服务器。
智能DNS特别关注: 这里有几点重要问题,值得单独列出,不然在使用智能DNS的过程中碰到就诧异了。 1. 智能DNS判断用户来源的依据是“本地DNS”而非是用户自身的IP地址。 2. 由上延伸,如果电信用户使用了网通DNS,通过智能DNS将会匹配到网通的解析结果。 3. 本地DNS一般情况下不会亲自向智能DNS请求解析,这是由本地DNS的网络拓扑决定的,详情见另一篇帖子《扫盲系列之:有关公网DNS》
智能DNS面临的问题: 1. 各网络运营商的IP地址收集困难,有其是象“长城宽带”、“广电网”等这样的小运营商他们的用户使用的DNS五花八门,根本不适于使用智能 DNS。所以说智能DNS并不是把运营商划分的越细越好。总之结合自己的能力就好。 2. 各大网络运营商相互渗透的情况(幸好是个别现象,但要引起重视),比如广东电信的公网DNS的后台有数目不详的服务器架设到网通的线路上 了。这样造成的后果就是明明使用的是电信DNS,但有时候解析到网通的结果。 3. 众所周知的网络攻击事件越来越多的落到了DNS上面,这个事情很无奈。 最后,关于架设智能DNS技术细节这里就不讨论了,相信很容易就能在网上找到。