Linux
反方向使用 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
注意
!
)
我剛剛實現了一個簡單的解決方案:
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