iptables 限速

从知乎这个问题开始,限速命令如下:

iptables -A OUTPUT -d 192.168.4.204 -m limit --limit 35/s --limit-burst 40 -j ACCEPT
iptables -A OUTPUT -d 192.168.4.204 -j DROP

命令行中主要用到了 iptables 的扩展模块 limit,也就是 -m limit

Limit match

从 iptables 指南上看出 limit 和 limit-burst 最初不是拿来限速的。是拿来限制日志记录的次数的。

这个匹配操作必须由-m limit明确指定才能使用。有了它的帮助,就可以对指定的规则的日志数量加以限制,以免你被信息的洪流淹没哦。比如,你可以事先设定一个限定值,当符合条件 的包的数量不超过它时,就记录;超过了,就不记录了。我们可以控制某条规则在一段时间内的匹配次数 (也就是可以匹配的包的数量),这样就能够减少DDoS syn flood攻击的影响。这是它的主要作用,当然,还有很多其他作用(译者注:比如,对于某些不常用的服务可以限制连接数量,以 免影响其他服务)。limit match也可以用英文感叹号取反,如:-m limit ! --limit 5/s 表示在数量超过限定值后,所有的包都会被匹配。

在开头的命令行中,--limit 35/s 意思是每秒钟允许35个包出栈。

limit-burst

limit-burst 是个初始值,匹配次数过了这个初始值之后,就由 --limit xxx/s 来控制。

在开头的命令行中,--limit-burst 40 意思是允许40个包作为缓冲区,用满了再匹配 --limit xxx/s

参考资料


word 压缩文件 - 某乎 iptables/ipset 备忘 - vqiu.cn