Linux

反方向使用 iptables ‘-m limit’

  • January 5, 2017

我知道我可以使用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

注意!

我剛剛實現了一個簡單的解決方案:

  • iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
  • iptables -A INPUT -p tcp --syn -j DROP
  • 繼續做任何我想做的事

如果你有它,一個簡單的方法可能是使用該hashlimit模組。

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

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

引用自:https://unix.stackexchange.com/questions/334975