Linux

使用 IPTables 限制每個源 IP 的 ICMP

  • July 16, 2011

我錯誤地認為限制模組是每個源 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 總數。

引用自:https://serverfault.com/questions/290724