Answers:
它限制了单个DNS客户端在一秒钟内可以获得的相同响应的数量。该window 5
选项允许5 * 5响应突发。
“完全相同的响应”和“单个DNS客户端”在这里不太明显,请阅读以下内容以获取更多信息:http ://web.archive.org/web/20140209100744/http: //ss.vix.su/~ vjs / rl-arm.html。
通常,对速率进行限制是一件好事-如果某天有DOS攻击,可能会对您有所帮助。在大多数情况下,默认值应为OK。
window
仅用于控制跟踪发送给每个“单个DNS客户端”的“相同响应”的时间范围。在BIND 9管理员参考手册状态:在[客户RRL]帐户不能超过每秒的限制变得更积极或负大于window
次每秒的限制。 Vernon Schryver的此消息更详细地说明了算法的行为。
您应该阅读BIND 9.9的管理员参考手册。
基本上,responses-per-second
是每秒可以发送到一个单个目标的相同答复的数量。定义很棘手。
单个目标是一个网络地址块,其大小在中配置ipv4-prefix-length
或ipv6-prefix-length
适用。所以,如果ipv4-prefix-length
是24,并且都192.0.2.1
与192.0.2.2
正在查询的DNS服务器,它们将共享此配额,只能送他们两人之间如此多的疑问。
相同的答复是针对特定RR类型的查询,以查询特定的存在名称或不存在的名称。以下查询都是不同的:
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
使事情变得更加复杂。它是可以存储配额的秒数。乘以window
并responses-per-second
给出最大值,通过该最大值,任何配额都可以是正数,或更确切地说,是突发容量。
举个例子:
您是的非递归权威域名服务器example.net.
。想象一下,在过去的10秒钟内根本看不到DNS流量,问题中的配置在全球范围内适用。依次发生以下事件:
IN NS example.net.
。允许25个,其余75个将被忽略。IN A nonexistent.example.net.
。允许25个,其余75个将被忽略。IN MX nonexistent-domain.example.net.
因为已达到不存在域的限制,它将被忽略。IN A example.net.
。这是允许的。IN NS example.net.
。其中25个得到回复,其余25个被忽略;198.51.100.0/24的配额不适用于这些主机,但它们共享192.0.2.0/24的配额。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也可以正常工作。如果发现攻击,将流量完全排除在服务之外。
我认为限制速率不是一个好主意,问问自己:您是否也限制Web服务器的响应速率?为什么您认为DNS响应不如Web服务器响应重要?
即使您设置了速率限制,5 req / sec的声音也非常低。