我有以下 iptable 规则
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 100000/sec
当我运行此规则时,出现错误Rate too fast 100000/sec
。
--limit
所以我想知道我们可以传递给选项的每秒、每分钟和每小时的最小值和最大值是多少
答案1
总结:最大值为 10000
查看源代码,在xt_limit.h
该常数XT_LIMIT_SCALE
定义为:
#define XT_LIMIT_SCALE 10000
评论如下:
/* 1/10,000 秒周期 => 最大 10,000/秒。最小速率为 429490 秒,或每 59 小时一次。*/
parse_rate()
然后在函数中使用该常量libxt_limit.c
,解析参数:
*val = XT_LIMIT_SCALE * mult / r;
if (*val == 0)
/*
* The rate maps to infinity. (1/day is the minimum they can
* specify, so we are ok at that end).
*/
xtables_error(PARAMETER_PROBLEM, "Rate too fast \"%s\"", rate);
就你的情况而言,这意味着:
mult
对于 ,定义为1
,seconds
因此方程最终为:
10000 * 1 / 100000
结果是 然后0.1
四舍五入为0
,从而引发错误消息。
因此,每个时间段的最大值基本上是该时间段的秒数 * 10000
间隔 | 秒 | 最大值 |
---|---|---|
第二 | 1 | 10000 |
分钟 | 60 | 600000 |
小时 | 60*60 | 36000000 |
天 | 24*60*60 | 864000000 |