申明:文档中使用的james.cn、kobe.cn域名,只在内部测试环境中使用,如有侵权,请联系,将在第一时间更改
参考文档:《DNS与BIND》、《RFC1034》、《RFC1035》
本实例的操作系统为centos 5.5 64bit
安装的前置条件不在这里叙述
文档中的客户端与服务端是linux系统
1 实践中最佳DNS结构
1.1 结构图
1.2 抓包分析
可以看出,查询过程与结构图一致
1.2.1 抓包分析图中根域服务器与 cn域服务器的响应结果图示
1.3 补充说明
DNS体系是C/S架构的系统,权威DNS服务器为Server角色,解析器为Client角色,localdns为代理角色
在实践中,基本上采用结构图中的结构,在操作系统中的解析器作为存根解析器存在,其向localdns发起递归查询,不会发起非递归查询,也不会根据NS、CNAME等指引信息发起进一步查询(至少到目前为止,我没有发现操作系统可以配置发起非递归查询,nslookup、dig等诊断工具可以,但其不属于操作系统解析器的一部分)
实践中的这种最佳结构,其优点是降低了操作系统的解析器的复杂度,充分使用localdns的缓存功能,其缺点是localdns代表客户机,对于授权服务器来讲不知道真实客户机的IP地址,只知道localdns的IP地址;这也导致在大型互联网应用、CDN网络中,在使用DNS进行全局调度时会发生定位不准确的情况。
操作系统的存根解析器不是完整的解析器,所以你不要期待通过响应NS、CNAME记录,指引其发起进一步的查询,此细节常常被忽略,在这里着重提示。
2 没有缓存的A记录查询过程
如“结构图”所示,localdns没有apche1.james.cn的A记录的缓存,也没有相关指引性记录缓存(NS记录/CNAME记录)
其查询过程与“结构图”一致。
3 有缓存的A记录查询过程
试验步骤:
(1) 使用dig @192.168.198.138 apache1.james.cn. a保证localdns有apache1.james.cn的A记录缓存
(2) dig @192.168.198.138 apache1.james.cn. a
3.1 查询过程
3.2 抓包截图
4 没有A记录缓存,有对应域NS记录缓存的A记录查询过程
试验步骤:
(1) 使用dig @192.168.198.138 james.cn. ns保证localdns有james.cn的ns记录缓存
(2) dig @192.168.198.138 apache.james.cn. a
4.1 查询过程
5 查询A记录,对应域名是CNAME的查询过程
5.1 james.cn域中的CNAME记录
www.apache.james.cn. IN CNAME redis.kobe.cn.
mail.apache.james.cn. IN CNAME redis.kobe.cn.
ftp.apache.james.cn. IN CNAME redis.kobe.cn.
5.2 kobe.cn域中的记录
redis.kobe.cn. IN A 192.168.198.194
5.3 试验步骤
查询dig @192.168.198.138 ftp.apache.james.cn . a
为了直观反应CNAME的查询过程,先在localdns中缓存james.cn和kobe.cn域的ns记录,步骤如下:
(1) dig @192.168.198.138 james.cn. ns
(2) dig @192.168.198.138 kobe.cn. ns
(3) dig @192.168.198.138 ftp.apache.james.cn . a
5.4 查询过程
5.5 抓包截图
6 查询A记录,对应域名是CNAME,且CNAME记录有缓存的查询过程
6.1 试验步骤
查询dig @192.168.198.138 ftp.apache.james.cn . a
为了直观反应CNAME的查询过程,先在localdns中缓存james.cn和kobe.cn域的ns记录,步骤如下:
(1) dig @192.168.198.138 james.cn. ns
(2) dig @192.168.198.138 kobe.cn. ns
(3) dig @192.168.198.138 ftp.apache.james.cn. cname
(4) dig @192.168.198.138 ftp.apache.james.cn. A
6.2 查询过程
6.3 抓包截图
转载请注明原文地址: https://ju.6miu.com/read-37675.html