DNS名称解析的查询模式
DNS名称解析的查询模式 1、递归查询:当收到客户端的递归查询请求后,当前DNS服务器只会向DNS客户端返回两种信息:要么是在该DNS服务器上查询到的结果,要么是查询失败,如果当前DNS服务器中无法解析名称,它并不会主动告知DNS客户端其它可能的DNS服务器,而是自行向其它DNS服务器查询并完成解析。如果其它DNS服务器解析失败,则DNS服务器将向DNS客户端返回查询失败的消息。递归即是有来有往。 2、迭代查询:迭代查询通常在一台DNS服务器向另一台DNS服务器发出解析请求时使用。如果当前DNS收到其它DNS服务器发来的迭代查询请求并且未能在本地查询到所需要的数据,则当前DNS服务器将告诉发起查询的DNS服务器另一台DNS两股辫服务器的拉萨市第一小学IP地址。然后,再由发起查询的DNS服务器自行向另一台DNS服务器发起查询;依次类推,直到查询到所需数据为止。如果到最后一台DNS服务器仍没有查到所需数据,则通知最初发起查询的DNS服务器解析失败。迭代的意思就是若在某地查不到,该地就会告知查询者其它地方的地址。让查询转到其它地方去查。 说白就是这样: 1.递归查询: 一般客户机和服务器之间属递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到结果后转交给客户机; 2.迭代查询(反复查询): 一般DNS服务器之间属迭代查询,如:若DNS2不能响应DNS1的请求,则它会将DNS3的IP给DNS2,以便其再向DNS3发出请求;
举例:比如学生问老师一个问题,王老师告诉他答案这之间的叫递归查询。这期间也许王老师也不会,这时王老师问张老师,这之间的查询叫迭代查询! |
|
Forwarder
为了提高我们这个DNS服务器的查询效率,我们会采取这样的措施:把非本地域的解析请求转发到我们的ISP提供的DNS。
这个功能是由forwarder 选项来完成的。所谓的 forwarder,就是当某一台 NS 主机遇到非本机负责的 zone ( slave zone 也属于本机负责的范围) 查询请求的时候,将不直接向 root zone 查询而把请求转交给指定的 forwarder (一台或多台) 主机代为查询。如果你不了解 DNS 的查询模式,那么很难理解这个 forwarder 的意义和好处。
我们知道,当DNS 服务器接到客户端主机的查询请求时,首先会检查这个查询是否属于本机管辖,否则将转向 root zone 再逐级的查询下去,最后再把查询结果告诉客户端。在这个过程之中,DNS英语级别划分标准服务器还会将查询到的结果存放到缓存中。只要缓存中的 TTL 没过期,在下次遇到同样查询的时候,就可以直接将结果响应给客户端,而无需再重复上次的查询流程。
如果DNS服务器上指定了forwarder地球保卫者,那这个 DNS发现缓存中没有记录时,将不向 root 查
询,而是向 forwarder 送出同样的请求(转发),然后等待查询结果,微信群名称大全即把逐级往下查询这个耗费精力的动作,交给 forwarder 负责。但无论这个结果是自己直接查询得来的,还是 forwarder 送回来的,DNS服务器都会保存一份数据在缓存中。这样,以后的相同查询就快多了,这对于DNS所服务的客户端而言查询效率会提高很多。
forwarder 机制的好处并非仅是上面所提到的效率提升,对于整个网络流量(尤其是对外的流量)也是有帮助的。比方说,你的内部网络需要 10 台 DNS 来提供服务,你只需在某一台能直接与外界沟通的计算机上架设 DNS 服务,然后将其它内部DNS的 forwarder 指向该服务器就行了。这样可能本来需要 10 次的 root 查询,在 forwarders 的机制下,就只需 1 次而已。连同下层的往返查询来计算的话,总体上所省下的对外查询就更多了,再加上缓存带来的好处,forwarder 所降低的 DNS 增强手机信号流量是非常显著的。
事实上,在本章开始我们就提到如何集中管理内部局域网用户域名解析问题,解决的方法就是:在本地DNS认为的英语短语的 forwarder 设定为 ISP 的 DNS,局域网用户把DNS都设置成本地DNS地址,在进行外部域名解析时,我们的DNS把解析请求转发给ISP的DNS;又因为 ISP 上的 DNS 也有缓存的关系,所以这样设置查询还可以提高速度。
罗嗦了半天,现在看看如何配置。具体的设置很简单:在f的options部分添加这样一行:
forwarders { 211.136.17.107; 202.102.152.3; };
如此设置完毕,那么所有非本区域的查询都会直接转发到forwarders指定的DNS服务器上去。
§§ 测试DNS
在Linux上我们可以用ping、nslookup、dig、host等命令来测试DNS是否工作正常,这些小工具都很简单,以host为例:
[root@rh73 ']# host
6.options语句
options语句的定义和使用:
options语句用来设置可以被整个BIND使用的全局选项。这个语句在每个配置文件中只有一处。如果出现多个options语句,则第一个options的配置有效,并且会产生一个警告信息。
如果没有options语句,则每个选项使用缺省值。
options {
关于梦的名言[ version version_string; ]
[ directory path_name; ]
[ named-xfer path_name; ]
[ tkey-domain domainname; ]
[ tkey-dhkey key_name key_tag; ]
[ dump-file path_name; ]
[ memstatistics-file path_name; ]
[ pid-file path_name; ]
[ statistics-file path_name; ]
[ zone-statistics yes_or_no; ]
[ auth-nxdomain yes_or_no; ]
[ deallocate-on-exit yes_or_no; ]
[ dialup dialup_option; ]
[ fake-iquery yes_or_no; ]
[ fetch-glue yes_or_no; ]