Ограничить количество соединений на определенный порт через iptables


Недавно, для целей тестирования возникла необходимость ограничить количество одновременных соединений (со всех ip адресов) на 80 порт.

В моем случае дефолтная политика для iptables - DROP.
Т.е. все сетевые пакеты, для которых не найдены правила, сервером отбрасываются.

Для того, чтобы этого сделать, можно воспользоваться следующей командой:

sudo iptables -A INPUT -i eth0 -p tcp --dport 80 -m connlimit --connlimit-mask 0 --connlimit-upto 1000 -j ACCEPT

-p tcp - используемый протокол.
--dport 80 - порт на сервере, для которого мы ограничиваем количество соединений.
--connlimit-mask 0 - маска сети. Т.к. 0 - то это правило действует на все ip адреса (0.0.0.0). Если задать маску, например, 32 - то это ограничение будет действовать для каждого конкретного ip адреса. Т.е. с любого IP адреса можно будет установить до 1000 одновременных соединений на 80 порт, но не более.
--connlimit-upto 1000 - максимальное количество соединений, для которых действует это правило. Т.е. если количество соединений превысит заданное значение 1000 - пакеты будут отбрасываться, т.к. дефолтная политика сервера - DROP.



Поделиться

Добавить комментарий

Ваш e-mail не будет опубликован.

Напоминаем Вам, что Ваше сообщение будет опубликовано только после проверки администратором сайта. Обычно это занимает 1-2 рабочих дня.