用IPTables限制ICMP每个源IP

我误以为限制模块是每个源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。 每个ip被限制为每秒3个(突发5个)。 并非所有传入的IP都是一样的,正如您在-m限制中find的一样。