iptables 中 --limit 选项的最小值和最大值是多少?

iptables 中 --limit 选项的最小值和最大值是多少?

我有以下 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对于 ,定义为1seconds因此方程最终为:

10000 * 1 / 100000

结果是 然后0.1四舍五入为0,从而引发错误消息。


因此,每个时间段的最大值基本上是该时间段的秒数 * 10000

间隔 最大值
第二 1 10000
分钟 60 600000
小时 60*60 36000000
24*60*60 864000000

相关内容