【DNS入门学习】之BIND递归查询 2019-11-29 网络 暂无评论 2804 次阅读 一般客户机和服务器之间属递归查询,当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到结果后转交给客户机。主机向本地域名服务器的查询一般都是采用递归查询。默认情况下bind关闭了转发查询,但是递归查询是开启的。 一、配置参数 1.recursion 如果是yes,并且一个DNS询问要求递归,那么服务器将会做所有能够回答查询请求的工作。如果recursion是off的,并且服务器不知道答案,它将会返回一个推荐(referral)响应。默认值是yes。注意把recursion设为no,不会阻止用户从服务器的缓存中得到数据,它仅仅阻止新数据作为查询的结果被缓存。服务器的内部操作还是可以影响本地的缓存内容,如NOTIFY地址查询。 2.allow-recursion 设定哪台主机可以进行递归查询。如果没有设定,缺省是允许所有主机进行递归查询。注意禁止一台主机的递归查询,并不能阻止这台主机查询已经存在于服务器缓存中的数据。 3.recursive-clients 服务器同时为用户执行的递归查询的最大数量。默认值1000,因为每个递归用户使用许多位内存,一般为20KB,主机上的recursive-clients选项值必须根据实际内存大小调整。 二、配置格式 ``` recursion yes | no; recursive-clients number; allow-recursion { address_match_list | any | none;}; ``` 配置实例: ``` recursion yes; allow-recursion { any; }; ``` 或 ``` allow-recursion { 10.0/16; }; recursive-clients 25; ``` 注意: 如果你要建立一个 授权域名服务器服务器, 那么不要开启recursion(递归)功能。 如果你要建立一个 递归 DNS 服务器, 那么需要开启recursion 功能。 如果你的递归DNS服务器有公网IP地址, 你必须开启访问控制功能,只有那些合法用户才可以发询问. 如果不这么做的话,那么你的服服务就会受到DNS 放大攻击。实现BCP38将有效抵御这类攻击。 使用非递归查询服务器需要注意: 一、保证该非递归服务器不出现在客户机的/etc/resolv.conf 的 二、保证该非递归服务器不被其他 name server 当成转发器 (forwarder) 三、推荐使用 allow-recursion 而不是 recursion (关闭`allow-recursion { none; };`) 四、该非递归服务器可以出现在 zone data file 的 NS 记录中。它可以正常的接收其他 name server 发来的查询 五、外部 name server 是通过上级域的 Referral 消息找到该非递归服务器的 六、外部 name server 在得到上级域的 Referral 消息后,向该非递归服务器发送的查询是 iterative query ,而不是 recusive query ,所以该非递归服务器仍然可以回答那些它所权威的 zone 的查询。但不能用于查询外部域名了。 转自https://bbs.huaweicloud.com/blogs/116734 标签: bind, 递归查询 本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。