bind的转发功能及其与NS记录的优先级

bind的转发功能及其与NS记录的优先级,第1张

在测试环境中,有时会因为输入一个不存在的域名而需等待10s的时间,如胡乱一串字符,abcfdsd

这是因当DNS在自身权威记录中搜索不到记录时,会到根DNS去解析,而正因为在测试环境不能与外网连接,导致需要一直等待,直到10s后解析失败。

那是否可以做到,当查询不存在的域名时,直接返回失败,而不发起到根DNS查询这一步呢答案是肯定的。

bind的forward功能可以做到。

以下为bind9管理员手册arm(administrator reference manual)对于forward功能的描述

forward

         此选项只有当forwarders列表中有内容的时候才有意义。当值是First,默认情况下,使服务器            先查询设置的forwarders,如果他没有得到回答,服务器就会自己寻找答案。如果设定的是              only,服务器就只会把请求转发到其他服务器上去。     

根据实际测试,可以做出以下总结:

1 如果是forward first, DNS首先会在本地资源文件查找,如果找不到,就会到forwarders的服务器      里面去找,再找不到,就会自己到根服务器去找,如果联系不到根,就会一直长尝试,持续10s。

2 如果是forward only, DNS首先会在本地资源文件查找,如果找不到,就会到forwarders的服务器      里面去找,再找不到,就直接不找了。

所以,如果要解决本文开始提到的问题,就必须设定forward only,最终两台DNS的配置如下:

DNS1:负责解析权威记录,设置forward only参数,并设置forwarders为DNS2

forward only;

forwarders {DNS2};

DNS2:本地没有权威记录,且设置本身为非递归查询服务器,recursion为no

recursion no;

额外的情况

以baiducom为例子,如果DNS1上有baiducom这个zone,而此时,chinabaiducom需要做NS记录指到ns1baiducom(DNS3)上做解析,此时会产生一个问题。

NS记录与forward究竟哪一个优先呢?答案是forward优先,DNS会认为NS记录并不属于本地权威记录,会优先到forwarders去寻找,因此要消除此效果还需在zone的定义时加上一个参数

zone baiducom  {

forwarders {};



};

forwarders为空会令此zone不走转发,接着才会到指定的NS记录上解析。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10863658.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存