1、什么是DNS?
域名系统DNS(Domain Name System)是因特网使用的命名系统,用来把便于人们记忆的含有特定含义的主机名(www.baidu.com)转换为便于机器处理的IP地址。相对于IP地址,人们更喜欢使用具有特定含义的字符串来标识因特网上的计算机。值的注意的是,DNS系统采用客户/服务器模型,其协议运行在UDP之上,使用53号端口。
2、DNS(域名系统)的解析过程:
(假定某客户机想获知域名为y.abc.com主机的IP地址)
- DNS在解析域名的时候,客户端向本地域名服务器发送DNS请求报文。
- 本地域名服务器收到请求后,查询本地缓存记录,假设没有该记录,则以DNS客户的身份向根域名服务器发出解析请求。
- 根域名服务器收到请求后,判断该域名属于.com域,将对应的顶级域名服务器dns.com的IP地址返回给本地域名服务器。
- 本地域名服务器向顶级域名服务器dns.com发出解析请求报文。
- 顶级域名服务器dns.com收到请求后,判断该域名属于abc.com域,故将对应的授权域名服务器dns.abc.com的ip地址返回给本地域名服务器。
- 本地域名服务器向授权域名服务器dns.abc.com发起解析请求报文。
- 授权域名服务器dns.abc.com收到请求后,将查询结果返回给本地域名服务器。
- 本地域名服务器将查询结果保存到本地缓存,同时返回给客户端。
ps:该查询方式是递归与迭代结合查询方式。
个人理解:
在本地查询DNS时,若存在,则本地的DNS会对其域名进行解析成相应的ip;若本地DNS不存在该域名的IP时,则在对应的顶级DNS查询(如:114.114.114.114)查询后,然后缓存在本地上,那么172.25.254.0/24该网段的所有ip都可以来我的主机来查询DNS;
3、DNS高速缓存
为了提高DNS查询效率,并减轻根域名服务器的负荷和减少互联网上的DNS查询报文数量,在域名服务器中广泛地使用了高速缓存(有时也称为高速缓存域名服务器)。高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录。
假定本地域名服务器的缓存中并没有y.abc.comd的IP地址,而是存放着顶级域名服务器dns.com的IP地址,那么本地域名服务器也可以不向根域名服务器进行查询,而是直接向com顶级域名服务器发送查询请求报文。这样不仅可以减轻根域名服务器的负荷,而且能够使互联网上的DNS查询请求和回答报文的数量大为减少。
举出现实中的例子:
到中午吃饭的时间了,是不是大家都得放下手上的工作去吃饭,然后再进行工作。(这个阶段类似很多机器去都要进行域名解析,都会要去访问主服务器;)
如何提高效率呢?
现在一个人去买大家的饭,其他人现在可以干自己的事情,等到饭买回来就可以直接享用了,大大提高了效率。(这里类比的就是高速去缓存DNS的域名对应的ip,放到本地的缓存里供其他主机来访问,方便查询);
4、有关DNS的介绍、各种问题以及部署
该实验都是在红帽red-hat7.3上进行操作
DNS总揽
##权威名称服务器##
存储并提供某区域(整个DNS域或DNS域的一部分)的实际数据。
权威名称服务器的类型包括:Master、Slave
Master:包含原始区域。有时被称作【主要】名称服务器
Slave:备份服务器,通过区域传送从Master服务器获得的区域数据的副本。有时称作【次要】名称服务器
非权威/递归名称服务器
客户端通过其查找来自权威名称服务器的数据。递归名称服务器的类型包括仅缓存名称服务器:仅用于查找,对于非重要数据之外的任何内容都不具有权威性
########DNS查找
客户端的Stub解析器 将查询发送至 /etc/resolv.conf中的名称服务器,<1>如果名称服务器对于请求的信息具有权威性,会将权威答案发送至客户端;否则,<2>如果名称服务器在其缓存中有请求的信息,则会将非权威答案发送至客户端;<3>如果缓存中无信息,名称服务器将搜索权威名称服务器以查找信息,从根区域开始,按照DNS层次结构向下搜索,直至对于信息具有权威性的名称服务器,以此为客户端获得答案。在此情况中,名称服务器将信息传递至客户端并在自己的缓存中保留一个副本,以备以后查找。
【在本地查询DNS时,若存在,则本地的DNS会对其域名进行解析成相应的ip;若本地DNS不存在该域名的IP时,则在对应的顶级DNS查询(如:114.114.114.114)查询后,然后缓存在本地上,那么172.25.