Как объединить connlimit с наборами IP-адресов?

Как объединить connlimit с наборами IP-адресов?

connlimitпозволяет мне ограничить количество подключений на клиента/службу. Как бы мне объединить такое правило с наборами IP, доступными в более поздних версиях ядра Linux и netfilter?

решение1

Допустим, у нас есть ipset с именем MYTESTSET, и этот ipset имеет тип hash:ip. Он будет хранить только ip-адреса.

Затем сопоставьте его с вашим IPset и после сопоставления connlimitс расширением с нужными вам параметрами.

iptables -A INPUT -p tcp -m set --match-set MYTESTSET src -m connlimit --connlimit-above 1 --connlimit-saddr --connlimit-mask 32 -j DROP

Это приведет к следующему: для каждого источника внутри набора IP-адресов будут подсчитаны соединения, и если их больше одного (--connlimit-above 1), они будут сброшены, тем самым ограничивая количество соединений.на источник в ipsetдо 1. (Можно также выполнить сопоставление другим способом, используя --connlimit-upto xxxи -j ACCEPTвместо DROP)

Если вы хотите рассмотреть весь набор и разрешить 1 подключениедля всех источников в ipsetзатем установите --connlimit-maskпереключатель в положение 0.

Связанный контент