一、DNS解析过程
对于客户端:先本地缓存――》hosts文件
1、若hosts文件中没有改域名相对应的ip地址映射,则查询本地的DNS解析器缓存,如果有,直接返回,完成域名解析;
2、在浏览器中输入www.qq.com,操作系统会先检查本机的hosts文件是否有与该域名对应的ip地址,如有,就先调用这个ip地址映射,完成域名解析;
3、若hosts文件和本地DNS缓存都没有相对应的ip地址映射关系,首先会找TCP/IP参数设置中的首选DNS服务器,在此我们称其为本地DNS服务器,当服务器收到查询请求,若包含在本地配置区域资源中,则返回解析结果给客户,完成域名解析,此解析具有权威性;
4、如果要查询的域名不在本地配置区域资源中,但本服务器已经缓存立刻此网址的映射关系,则调用这个ip地址映射,完成域名解析,此解析不具有权威性;
5、若本地配置区域资源没有改网址的解析记录,且服务器本地缓存失效或无该网址的映射关系,【若有配置备用DNS,则重复3-5步骤】,则根据本地DNS服务器的设置(是否这只转发器)进行查询,若未用转发模式,本地DNS服务器则会将请求发至13台根DNS,根服务器收到请求后悔判断这个域名(.com)是谁来授权管理并会返回一个负责该顶级域名服务器的一IP。本地DNS手袋ip信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,就会找到一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,直至找到相对应的网址的主机ip地址为止(www.qq.com)
6、如果使用的是转发模式,则此DNS服务器就会将请求发送至上一级DNS服务器,由上一级服务器进行解析,如果上一级服务器不能解析,则会寻找根域或者将请求再次转发给再上一级的DNS服务器,以此循环。不管是本地DNS服务器用转发还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机,然后在缓存在本地DNS服务器。
从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是的交互查询就是迭代查询。
二、DNS资源记录
1、SOA
Start Of Authority(起始授权机构),每一个区域配置文件有且只能有一个SOA,描述了该zone负责的name server , versionnumber等,以及当slave server 要备份这个zone 时的一些参数。紧接在SOA后面指定了这个区域的授权主机和管理者的邮箱,这里分别是“school.edu.tw”和“root.school.edu.tw”,也就是school.edu.tw主机和root的邮箱。这里要注意的是我们以“root.school.edu.tw”代表“[email protected]”
eg:
@ IN SOA school.edu.tw.root.school.edu.tw. (
1999051401 ; Serial
3600 ; Refresh
300 ; Retry
3600000 ; Expire
3600) ; Minimum
SOA内容说明:
2、A
address,将DNS域名对应到IPv4的ip地址
eg:
server IN A 140.123.102.10
3、AAAA
将DNS域名对应到IPv6的ip地址
eg:
twnic.net.tw. 86400 IN AAAA 3ffe: :bbb:93:5
4、PTR
pointer(指针),定义某个ip对应的域名,即将IP地址转换成主机的完全限定域名(FQDN),使用在反向解析中
eg:
20 IN PTR mail.twnic.net.tw.
5、CNAME
canonical name(规范域名),可为同意不主机设定多个别名,例如 mix.twnic.net.tw的别名可为www.twnic.net.tw和ftp.twnic.net.tw,因此所设定的别名都会连至同一个服务器。
eg:
www IN CNAME mix
6、MX
mail exchanger,设定区域中担任邮件服务器的主机,所有要送往那台主机的mail都要经过mailexchanger转发。而数字则是改主机邮件传递时的有限次序,此值越低表示有越高的邮件处理优先权。
eg:
server IN MX 10 mail.twnic.net.tw
7、TXT/HINFO
只是一些文字说明,可以用来说明主机/网络环境的设定
三、notify两种同步机制
1、master slave使用 udp 53端口进行通讯,首先 master 向slave 的udp53发送一个NOTIFY请求包,slave接收后,向master的udp53发送一个NOTIFY响应包,然后 slave 连接到master 查询SOA信息,根据序列号判断是否请求进行IXFR传输。
2、从服务器根据序列号同步主服务器数据库文件
四、DNS端口号及其协议
1、TCP/UDP 53号端口
2、为什么DNS要使用两种协议
UDP报文最长为512字节,而TCP允许传输大于512字节的报文。当DNS查询超过512字节时,TCP会出现删除标志,此时会使用TCP进行传输。
1.1、区域传送时,使用TCP协议
当从DNS服务器需要同步主DNS服务器信息或者主DNS服务器发送同步信息给从DNS服务器时,会执行一次区域传送,进行数据同步,区域传送使用TCP协议而不是UDP协议,因为需要同步的数据远远大于一个请求和应答的数据量。
1.2、域名解析时使用UDP
客户端向DNS服务器请求解析时,一般返回的内容都不会超过512字节,用UDP传输即可。不用经过三次握手,这样DNS服务器的负载更低,响应更快,从理论上说,客户端请求域名解析时也可以设定为使用TCP,但一般不会这样做。
五、智能DNS
通过view语句可以完成DNS的智能解析功能,并且灵活控制哪些客户机能看到哪个view视图的访问控制列表。语法:
view view-name {
match-clients { address_match_list };
match-destinations { address_match_list };
match-recursive-only yes|no
view_option;...
zone_statement;...
};
其实说白了,view视图是根据match_clients提供的查询报文的IP地址进行过滤,一般用于让一个站点的DNS数据分为内外不同的结果,下面
我们会通过模拟外网和内网实现view,并让DNS提供智能解析。