在相反方向使用 iptables '-m limit'

在相反方向使用 iptables '-m limit'

我知道我可以使用iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT来限制tcp syn数据包的接受。
因此,如果tcp syn数据包未超过此速率,它们将跳转到ACCEPT

有没有办法把这条规则写成相反的方向?
我想编写如下规则:

If ok (doesn't cross the rate), continue down. Else drop<-- (1)???
iptables -A INPUT -j OTHER_CHAIN_STUFF

有办法写吗(1)

我尝试过,iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j DROP但它的工作原理是:
下降直到达到速率,然后,当您超过速率限制时,不要再继续DROP下降,所以它会继续下降 - 这不是我想要的。

有没有办法写出我想要的内容?
类似于:(iptables -A INPUT -p tcp --syn ! -m limit --limit 1/s -j DROP
注意!

答案1

一个简单的方法可能是使用该hashlimit模块(如果有)。

iptables -A INPUT -p tcp --syn -m hashlimit --hashlimit-name mylimit --hashlimit-above 1/s -j DROP

limit它比man iptables-extensions我的 Fedora 23 上的模块效率稍低。

答案2

我刚刚意识到一个简单的解决方案:

  • iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
  • iptables -A INPUT -p tcp --syn -j DROP
  • 继续做我想做的事

相关内容