Bind 之recursion递归

一般客户机和服务器之间属递归查询,当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到结果后转交给客户机。主机向本地域名服务器的查询一般都是采用递归查询。默认情况下bind关闭了转发查询,但是递归查询是开启的。

一、配置参数

  • recursion

如果是yes,并且一个DNS询问要求递归,那么服务器将会做所有能够回答查询请求的工作。如果recursion是off的,并且服务器不知道答案,它将会返回一个推荐(referral)响应。默认值是yes。注意把recursion设为no,不会阻止用户从服务器的缓存中得到数据,它仅仅阻止新数据作为查询的结果被缓存。服务器的内部操作还是可以影响本地的缓存内容,如NOTIFY地址查询。

  • allow-recursion

设定哪台主机可以进行递归查询。如果没有设定,缺省是允许所有主机进行递归查询。注意禁止一台主机的递归查询,并不能阻止这台主机查询已经存在于服务器缓存中的数据。

  • 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;

Tips 1:

  • 如果你要建立一个 授权域名服务器服务器, 那么不要开启recursion(递归)功能。
  • 如果你要建立一个 递归 DNS 服务器, 那么需要开启recursion 功能。
  • 如果你的递归DNS服务器有公网IP地址, 你必须开启访问控制功能,只有那些合法用户才可以发询问. 如果不这么做的话,那么你的服服务就会受到DNS 放大攻击。实现BCP38将有效抵御这类攻击。

使用非递归查询服务器需要注意:

  1. 保证该非递归服务器不出现在客户机的/etc/resolv.conf 的
  2. 保证该非递归服务器不被其他 name server 当成转发器 (forwarder)
  3. 推荐使用 allow-recursion 而不是 recursion (关闭allow-recursion { none; };)
  4. 该非递归服务器可以出现在 zone data file 的 NS 记录中。它可以正常的接收其他 name server 发来的查询
  5. 外部 name server 是通过上级域的 Referral 消息找到该非递归服务器的
  6. 外部 name server 在得到上级域的 Referral 消息后,向该非递归服务器发送的查询是 iterative query ,而不是 recusive query ,所以该非递归服务器仍然可以回答那些它所权威的 zone 的查询。但不能用于查询外部域名了。

Bind 之recursion递归》上有2条评论

  1. Pingback引用通告: Bind中的view语句定义和用法 | 精彩每一天

  2. Pingback引用通告: Bind中的zone语句的定义和用法 | 精彩每一天

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>