limit模块
限速,按数据包的速率进行匹配,–limit 单位时间内匹配的数据包数量,–limit-burst 可选,允许最大数据包数量,默认为5,/s /h /m 单位时间。
如下所示:
每分钟允许通过1个ICMP数据包,最多不超过10个
[root@deploy-tools-test1 ~]# iptables -A INPUT -p icmp -m limit –limit 1/m –limit-burst 10 -j ACCEPT
[root@deploy-tools-test1 ~]# iptables -A INPUT -p icmp -j DROP
limit模块是iptables的一个模块,可以限制流量速率,以防止网络流量过载。它通常与iptables中的DROP和REJECT动作一起使用,可以限制源IP地址的流量速率。比如,可以通过以下规则限制每秒钟只能从一个IP地址发送3个SSH连接请求:
iptables -A INPUT -p tcp --dport ssh -s 192.168.1.100 -m limit --limit 3/second -j ACCEPT
这条规则限制了源IP地址为192.168.1.100的主机每秒钟只能发送3个SSH连接请求,如果超过这个速率限制,iptables将会拒绝连接请求。这样可以保护服务器免受暴力破解攻击。
类似地,limit模块也可以用于限制其他协议或端口的流量速率,以保护网络的安全性和稳定性。
当使用iptables的limit模块时,它将允许你限制在规定时间内允许通过的匹配数。这个模块的底层逻辑是,每当一个匹配到的数据包通过iptables时,limit模块会增加一个计数器,如果计数器的值超过了限制值,则该规则将不再匹配任何进入的数据包,直到计数器重置。
在实现上,limit模块实际上使用了两个计数器,分别为“burst”和“rate”。突发表
例如,如果我们设置了限制为每秒只允许1个数据包通过,burst值为2,则在前两个时间间隔内,允许通过的数据包数量可以达到2个,但之后每秒只能允许一个数据包通过。
在生活中,可以将限制类比为一个出租车公司的调度中心。公司设置了每小时只允许派遣一定数量的出租车,以确保每个出租车可以按时抵达目的地。如果公司的调度员在短时间内接到了太多的订单,就需要停止接单直到计数器重置,以确保所有的订单都可以按时得到服务。
就是控流为主然后限制底层逻辑就是通过计数器值和限制值进行匹配。