我正在尝试在 iptables 中应用一组速率限制,但它做了一些奇怪的数学运算,我无法在内核上看到为什么会发生这种情况。
我尝试在本地机器上执行相同的代码,而不是在 aws 实例上,结果是一样的,只是用随机量增加数字,数字越大,量就越大。
接下来您将看到我执行的行和最终应用的速率限制。
您是否知道该行为当前是否是一个错误或者它是否是“一个额外的功能”?
root@myserver:/opt/Project# iptables -w -t raw -L RATELIMIT
Chain RATELIMIT (1 references)
target prot opt source destination
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"
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 */
root@myserver:/opt/Project# bash reset_ratelimit.sh
iptables: Chain already exists.
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"
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 */
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"
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 /
答案1
我会自己回答。
此规则旨在将端口 10430 上的传入 TCP 流量限制为每秒 1100 个数据包,突发流量为 1600 个数据包。但是,根据内核规范,这似乎只是一个平均值,而不是一个具体而精确的数量。
显然,如果我需要更精确的信息,我应该使用命令碳(交通管制)。