Я ошибочно подумал, что модуль ограничения относится к исходному 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
Как я могу ограничить скорость icmp с помощью iptables / netfilter на основе исходного IP-адреса?
Если вам все еще нужна подсказка:
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 пингами в секунду (пакет из 5). Не все входящие IP-адреса являются общими, как вы обнаружили с параметром -m limit.