Есть ли способ ограничить скорость соединений в MySQL 3306 с помощью IPTABLES? Я думаю разрешить 2 попытки подключения к порту 3306 каждые 5 минут. Спасибо
Не лучше ли сохранить эти ограничения внутри самого MySQL, а не на сетевом уровне? Согласно Документация MySQL вы можете ограничить следующие ресурсы сервера для отдельных учетных записей:
* The number of queries that an account can issue per hour
* The number of updates that an account can issue per hour
* The number of times an account can connect to the server per hour
* The number of simultaneous connections to the server an account can have
Пример MySQL-запроса для этого:
mysql> CREATE USER 'francis'@'localhost' IDENTIFIED BY 'frank';
mysql> GRANT ALL ON customer.* TO 'francis'@'localhost'
-> WITH MAX_QUERIES_PER_HOUR 20
-> MAX_UPDATES_PER_HOUR 10
-> MAX_CONNECTIONS_PER_HOUR 5
-> MAX_USER_CONNECTIONS 2;
Лично я предпочел бы сохранить этот тип настроек в самом приложении, а не пытаться манипулировать им без ведома приложений. Но насколько я понимаю, другие примеры использования iptables технически тоже должны работать.
$IPT -A INPUT -s 0/0 -p tcp --dport 3306 --syn -m limit --limit 10/hour \
--limit-burst 10 -j ACCEPT
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -s 0/0 -p tcp --dport 3306 -j DROP
Я был достаточно заинтересован, чтобы поискать, нашел Эта статья среди других. Похоже, ты справишься.
Обратите внимание, что в зависимости от приложения ограничение количества соединений может фактически не ограничивать количество запросов. Ничто не мешает приложению делать сотни запросов по одному соединению, это даже лучшая практика.