深入浅出DNS系列(五)-查询过程详解
2017-03-12 23:05
330 查看
申明:文档中使用的james.cn、kobe.cn域名,只在内部测试环境中使用,如有侵权,请联系,将在第一时间更改
参考文档:《DNS与BIND》、《RFC1034》、《RFC1035》
本实例的操作系统为centos 5.5 64bit
安装的前置条件不在这里叙述
文档中的客户端与服务端是linux系统
可以看出,查询过程与结构图一致
在实践中,基本上采用结构图中的结构,在操作系统中的解析器作为存根解析器存在,其向localdns发起递归查询,不会发起非递归查询,也不会根据NS、CNAME等指引信息发起进一步查询(至少到目前为止,我没有发现操作系统可以配置发起非递归查询,nslookup、dig等诊断工具可以,但其不属于操作系统解析器的一部分)
实践中的这种最佳结构,其优点是降低了操作系统的解析器的复杂度,充分使用localdns的缓存功能,其缺点是localdns代表客户机,对于授权服务器来讲不知道真实客户机的IP地址,只知道localdns的IP地址;这也导致在大型互联网应用、CDN网络中,在使用DNS进行全局调度时会发生定位不准确的情况。
操作系统的存根解析器不是完整的解析器,所以你不要期待通过响应NS、CNAME记录,指引其发起进一步的查询,此细节常常被忽略,在这里着重提示。
其查询过程与“结构图”一致。
(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
(1) 使用dig @192.168.198.138 james.cn. ns保证localdns有james.cn的ns记录缓存
(2) dig @192.168.198.138 apache.james.cn. a
mail.apache.james.cn. IN CNAME redis.kobe.cn.
ftp.apache.james.cn. IN CNAME redis.kobe.cn.
为了直观反应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
为了直观反应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
参考文档:《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.1945.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 抓包截图
相关文章推荐
- DNS系列教程(十)图例详解DNS递归和迭代查询原理及过程 (2)
- 一起学DNS系列(十)图、例详解DNS递归和迭代查询原理及过程 (2)
- 一起学DNS系列(十)图、例详解DNS递归和迭代查询原理及过程 (2)
- 一起学DNS系列(十)图、例详解DNS递归和迭代查询原理及过程 (1)
- 一起学DNS系列(十)图、例详解DNS递归和迭代查询原理及过程 (1)
- 一起学DNS系列(十)图、例详解DNS递归和迭代查询原理及过程 (1)
- 深入浅出DNS系列(四)-内部根服务器架设实例与详解
- 一起学DNS系列(八)DNS 客户端查询过程
- DNS解析过程原理【深入浅出详解】
- 图、例详解DNS递归和迭代查询原理及过程
- DNS解析过程原理【深入浅出详解】
- 一起学DNS系列(八)DNS 客户端查询过程
- Windows 网络服务架构系列课程详解(二) ----DNS服务器的部署与配置 推荐
- ASP.NET深入浅出系列 - 页面生命周期详解
- ASA系列防火墙升级全过程详解
- 详解DNS的常用记录(上):DNS系列之二
- 详解linux系列之DNS的安装及配置
- Windows 网络服务架构系列课程详解(四) --- DNS高级技术配置详解 推荐
- 详解DNS的常用记录(下):DNS系列之三
- 详解DNS的常用记录(下):DNS系列之三