我正在使用 CentOS 5.x,试图理解我的一台服务器上的以下 iptables 规则:
-A RH-Firewall-1-INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
在另一台服务器上我有:
-A RH-Firewall-1-INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 3 -j ACCEPT
我理解这两条规则都旨在允许(和限制)传入的 ping 请求,但选项是什么limit-burst
?这些允许是基于每个主机的吗?还是它们适用于任何/所有传入的 ICMP 连接?
答案1
数学得到了充分解释在 netfilter 文档中,但可以合理地说,该limit-burst
参数指定了在每秒 1 个“启动”之前允许通过的匹配数limit
。这两条规则都仅适用于 ICMP 回显请求数据包(传入的 PING 请求)。这些不是每个主机的限制,适用于规则匹配的任何内容(在本例中是所有 ICMP 回显请求)。
答案2
--limit
:指定令牌重新填充到桶中的速率。4/hour
例如,每小时 4 个令牌(每 15 分钟 1 个令牌)。
--limit-burst
:指定桶中可填充的最大令牌数量。(这也是桶初始时的令牌数量)。
答案3
我读了两个答案,但实际情况man itables-extensions
让我深有体会:
限制
此模块使用令牌桶过滤器以有限的速率进行匹配。使用此扩展的规则将一直匹配,直到达到此限制。例如,它可以与 LOG 目标结合使用,以提供有限的日志记录。
xt_limit 不支持否定 - 在这种情况下,您必须使用
-m hashlimit ! --hashlimit
rate 同时省略 --hashlimit-mode。
--limit rate[/second|/minute|/hour|/day]
-- 最大平均匹配率:指定为数字,带有可选的/second
、/minute
、/hour
或/day
后缀;默认值为 3/小时。
--limit-burst number
-- 匹配的数据包的最大初始数量:每当未达到上面指定的限制时,此数字就会重新充电一,直到达到此数字;默认值为 5。