iptables limit模块配置速率限制时数值异常问题咨询
iptables limit模块配置速率限制时数值异常问题咨询
我在使用iptables的limit模块配置速率限制时遇到了一个奇怪的问题——配置的数值和最终生效的数值不一致,而且数值越大,偏差也越大。我在本地机器和AWS实例上都测试过,结果完全一样,想请教下这是已知bug还是某种特殊的设计逻辑?
以下是我执行的命令和对应的输出:
步骤1:查看初始RATELIMIT链
root@myserver:/opt/Project# iptables -w -t raw -L RATELIMIT Chain RATELIMIT (1 references) target prot opt source destination
步骤2:添加速率限制规则(配置7500/sec、burst 4500)
root@myserver:/opt/Project# iptables -w -t raw -A RATELIMIT -p tcp --dport 10430 -m limit --limit 7500 --limit-burst 4500 -j RETURN -m comment --comment "10430_allowed"
步骤3:查看生效规则,发现速率变为10000/sec
root@myserver:/opt/Project# iptables -w -t raw -L RATELIMIT Chain RATELIMIT (1 references) target prot opt source destination RETURN tcp -- anywhere anywhere tcp dpt:10430 limit: avg 10000/sec burst 4500 /* 10430_allowed */
步骤4:重置链后再次添加规则(配置7500/sec、burst 5500)
root@myserver:/opt/Project# bash reset_ratelimit.sh root@myserver:/opt/Project# iptables -w -t raw -A RATELIMIT -p tcp --dport 10430 -m limit --limit 7500 --limit-burst 5500 -j RETURN -m comment --comment "10430_allowed"
步骤5:查看生效规则,速率仍为10000/sec
root@myserver:/opt/Project# iptables -w -t raw -L RATELIMIT Chain RATELIMIT (1 references) target prot opt source destination RETURN tcp -- anywhere anywhere tcp dpt:10430 limit: avg 10000/sec burst 5500 /* 10430_allowed */
步骤6:测试小数值(配置1100/sec、burst 1600)
root@myserver:/opt/Project# bash reset_ratelimit.sh root@myserver:/opt/Project# iptables -w -t raw -A RATELIMIT -p tcp --dport 10430 -m limit --limit 1100 --limit-burst 1600 -j RETURN -m comment --comment "10430_allowed"
步骤7:查看生效规则,速率变为1111/sec
root@myserver:/opt/Project# iptables -w -t raw -L RATELIMIT Chain RATELIMIT (1 references) target prot opt source destination RETURN tcp -- anywhere anywhere tcp dpt:10430 limit: avg 1111/sec burst 1600 /* 10430_allowed */ DROP tcp -- anywhere anywhere tcp dpt:10430 /* 10430_denied */
可以看到每次配置的--limit数值和实际生效的都有偏差,比如7500变成10000,1100变成1111。想知道这种情况是iptables的bug,还是limit模块本身的特殊机制导致的?
备注:内容来源于stack exchange,提问作者JustDevZero
相关产品推荐
相关产品推荐

