Linux
使用 IPTables 限制每個源 IP 的 ICMP
我錯誤地認為限制模組是每個源 ip,但它似乎基於所有請求:
577 36987 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmp type 8 limit: avg 3/sec burst 5 46 3478 LOG icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmp type 8 LOG flags 0 level 4 prefix `INET-PING-DROP:' 46 3478 DROP icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmp type 8 ... 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmp type 8 limit: avg 3/sec burst 5 0 0 LOG icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmp type 8 LOG flags 0 level 4 prefix `WEB-PING-DROP:' 0 0 DROP icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmp type 8
如何根據源 IP 地址使用 iptables / netfilter 對 icmp 進行速率限制?
如果您仍然想知道提示:
iptables -I INPUT -p icmp -m hashlimit --hashlimit-name icmp --hashlimit-mode srcip --hashlimit 3/second --hashlimit-burst 5 -j ACCEPT
假設 INPUT 中的最後一條規則是 drop 或預設策略是 DROP。每個 ip 限制為每秒 3 次 ping(突發 5 次)。正如您在 -m 限制中發現的那樣,並非所有傳入的 IP 總數。