绑定DNS速率限制和每秒响应和窗口的值

在我的DNS服务器的named.conf中,我看到了

rate-limit { responses-per-second 5; window 5; }; 

这实际上是什么意思? 它可以导致DNS客户端问题? 这个configuration太紧了吗?

它限制了单个DNS客户端可以在一秒钟内完成的相同响应的数量。 window 5选项允许5 * 5响应。

“相同的响应”和“单个DNS客户端”在这里有一些不明显的条款,请阅读本文以获得更多信息: http ://web.archive.org/web/20140209100744/http: //ss.vix.su/~ vjs / rl-arm.html 。

一般来说,这是一个好的事情限速 – 可能会帮助你的情况下DOS攻击有一天。 在大多数情况下,默认值应该是可以的。

您应该阅读BIND 9.9的pipe理员参考手册 。

基本上, responses-per-second数是可以每秒发送到一个单一目的地的相同答复的数量。 定义是棘手的。

单个目标是一个networking地址 ,其大小按照ipv4-prefix-lengthipv6-prefix-length 。 因此,如果ipv4-prefix-length是24,并且192.0.2.1192.0.2.2都在查询DNS服务器,它们将共享这个配额,并且只能发送这么多的查询。

相同的答复是针对特定现有名称的特定RRtype的查询的回复,或针对不存在的名称的回复。 以下查询全部不同:

 IN A example.net. IN A www.example.net. IN AAAA example.net. IN A nonexistent.domain.example.net. 

但是,以下所有查询都是相同的(假设nonexistent.domain.example.net.等等)。

 IN A nonexistent.domain.example.net. IN A nonexistent.domain2.example.net. IN SOA other.nonexistent.domain.example.net. 

window使事情更复杂一点。 这是配额可以存入的秒数。 乘法windowresponses-per-second给出了任何配额可以是正数的最大值,或者更基本的来说,是突发容量。

举一个全面的例子:

您是example.net.的非recursion权威名称服务器example.net. 。 假设在过去的10秒内根本没有看到DNSstream量,问题中的configuration全局适用。 以下事件顺序发生:

  1. 主机198.51.100.1向IN NS example.net.发送100个查询IN NS example.net. 。 25将被允许,其余的75将被忽略。
  2. 主机198.51.100.1向IN A nonexistent.example.net.发送100个查询IN A nonexistent.example.net. .example.net IN A nonexistent.example.net. 。 25将被允许,其余的75将被忽略。
  3. 主机198.51.100.1向IN MX nonexistent-domain.example.net. nonexistent-domain.example.net发送1个查询IN MX nonexistent-domain.example.net. 由于不存在域的限制已经达到,所以将被忽略。
  4. 主机198.51.100.1向IN A example.net.发送1个查询IN A example.net. 。 这是允许的。
  5. 主机192.0.2.1到192.0.2.50每个发送一个IN NS example.net.查询IN NS example.net. 。 其中25人得到答复,其余25人被忽略; 198.51.100.0/24的配额不适用于这些主机,但它们共享192.0.2.0/24的配额。
  6. 一秒钟过去
  7. 主机192.0.2.26到192.0.2.50 IN NS example.net.重复查询IN NS example.net. 。 其中5人得到答复,其余20人被忽略,因为配额只能每秒5次查询补充。
 iptables -A INPUT -p udp --dport 53 -m recent --set --name dnslimit iptables -A INPUT -p udp --dport 53 -m recent --update --seconds 60 --hitcount 11 --name dnslimit -j DROP 

IPtables也可以工作。 如果发现攻击,则完全停止服务。

我不认为它是一个好主意的限制,问自己:你是否也限制了networking服务器的回应? 为什么你认为DNS响应不如Web服务器响应重要?
而且,即使你的速度限制,5瑞克/秒听起来很低。