?? DNS辅助服务器是一种容错设计,考虑的是一旦DNS主服务器出现故障或因负载太重无法及时响应客户机请求,辅助服务器将挺身而出为主服务器排忧解难。辅助服务器的区域数据都是从主服务器复制而来,因此辅助服务器的数据都是只读的,当然,如果有必要,我们可以很轻松地把辅助服务器升级为主服务器。辅助服务器从主服务器复制区域数据的过程叫“区域传送”。区域传送使用TCP的53号端口。
关于主从服务器,需要了解的是:
主服务器的区域解析库文件中必须有一条NS记录指向从服务器,辅助DNS是针对区域来说的;如果有多台DNS服务器,必须为每个DNS服务器建立NS记录,否则主DNS将不向其发送通知;
从服务器只需要定义区域,而无须提供解析库文件;解析库文件默认放置于/var/named/slaves/目录中。
主服务器得允许从服务器作区域传送。主从服务器时间应该同步,可通过ntp进行。bind程序的版本应该保持一致;否则,应该从高,主低。
区域传送类型:完全区域传送(AXFR)、增量区域传送(IXFR)?
(1)在新的配置过程中,目标服务器会向配置为区域源的主DNS服务器发送初始“所有区域”传送(AXFR)的请求;
(2)主(源)服务器作出响应,并将此区域完全传送到辅助(目标)服务器;
???? 该区域发送给请求传送的目标服务器,通过启动SOA资源记录的属性中的“序列号”字段建立的版本一起传送。SOA RR也包含一个以秒为单位的状态刷新间隔(默认设置是900秒或15分钟),指出目标服务器下一次应该在何时请求使用源服务器来续订该区域
(3)刷新间隔到期时,目标服务器使用SOA查询来请求从源服务器续订此区域;
(4)源服务器应答其SOA记录的查询。该响应包括该区域在源服务器中的当前状态的序列号。
(5)目标服务器检查响应中的SOA记录的序列号并确定怎样续订该区域;
????????? 如果SOA响应中的序列号等于其当前的本地序列号,那么区域在两个服务器中都相同,并且不需要区域传送。然后,目标服务器根据来自源服务器的SOA响应中的该字段值重新设置其刷新间隔来续订该区域。
????????? 如果SOA响应中的序列号比其当前本地序列号要高,则可以确定此区域已更新并需要区域传送。
(6)如果这个目标服务器推断此区域已经更改,则它会把IXFR查询发送至源服务器,其中包括此区域的SOA记录中序列号的当前本地值。
(7)源服务器通过区域的递增传送或完全传送做出响应。
???????? 如果源服务器支持增量传送,则通过IXFR做出应答,否则通过AXFR做出应答。
(1)当本地DNS服务器(也是转发器)收到查询时,它会尝试使用本地数据解析和缓存数据解析该查询;
(2)如果不能使用本地数据解析查询,此时它作为客户端,会将查询转发给外网DNS服务器;
(3)本地DNS(转发器)收到客户端的请求后会等待一段很短的时间,等待来自外网DNS的应答;
(4)对于外网DNS来说,它接收到的查询请求是递归查询,此时,它自己需要向外层层迭代找到最终答案返回给转发器(此时转发器作为DNS客户端)
(5)转发器将外网DNS返回的查询结果送到客户端(非权威答案),完成解析过程。
全局转发:
利用DNS转发,可以将用户的DNS请求,转发至指定的DNS服务,而非默认的根DNS服务器,并将指定服务器查询的返回结果进行缓存,提高效率。
注意:被转发的服务器需要能够为请求者做递归,否则转发请求不予进行。对非本机所负责解析区域的请求,全转发给指定的服务器。
在全局配置块中实现:
Options {
forward first|only;
forwarders { ip;};//如果有多个IP,按照轮询的模式进行转发。
};
特定区域转发:
仅转发对特定的区域的请求,比全局转发优先级高。
zone "ZONE_NAME" IN {
type forward;
forward first|only;
forwarders { ip;};
};
转发模式:
first:先转发至指定DNS服务器,如果无法解析查询请求,则本服务器再去根服务器查询
only: 先转发至指定DNS服务器,如果无法解析查询请求,则本服务器将不再去根服务器查询。
观察flags的输出
没有出现aa,表示请求的查询是非本机负责的区域;
出现了ra,表示是通过转发解析到的域名。