iptables中--limit选项的取值范围及规则执行报错咨询
iptables中--limit选项的取值范围及规则执行报错咨询
嗨,我来帮你解决这个iptables规则的问题~
你执行这条规则时遇到的Rate too fast 100000/sec报错,是因为你设置的每秒100000次的限制超出了iptables limit模块支持的最大值。
下面详细说下--limit选项的取值范围:
不同时间单位的取值范围
- 每秒(/sec):
最大值为10000/sec,最小值理论上可低至0.000277/sec(约每3600秒1次,更建议直接用小时单位表示这类低频限制)。你设置的100000远高于上限,所以触发了报错。 - 每分钟(/min):
最大值是600000/min(等同于10000/sec),最小值可低至1/min甚至更小,比如0.0166/min(约每小时1次)。 - 每小时(/hour):
最大值为36000000/hour(同样等同于10000/sec),没有严格的下限,你可以设置1/hour、0.5/hour(每2小时1次)这类极低频率。
补充说明
limit模块基于令牌桶算法实现速率限制,除了--limit,你还可以通过--limit-burst设置初始令牌桶容量(默认是5个)。如果你的场景确实需要处理极高流量,可考虑调整这个参数,或者换用更适配高吞吐场景的限制方式。
这里给你修正后的规则示例(将速率调整到支持的最大值):
iptables -A PRIO_IN -p tcp -s 203.0.113.0 --sport 5432 -d 203.0.113.0 --dport 5432 -j ACCEPT -m limit --limit 10000/sec
备注:内容来源于stack exchange,提问作者Karma Yogi
相关产品推荐
相关产品推荐

