Я хотел бы ограничить количество одновременных открытых TCP-потоков с одного и того же IP-адреса на (локальный) порт сервера. Допустим, 4 одновременных подключения.
Как это можно сделать с помощью таблиц IP?
Самое близкое, что я нашел, было: В Apache есть ли способ ограничить количество новых подключений в секунду / час / день?
iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 86400 --hitcount 100 -j REJECT
Но это ограничение просто измеряет количество новых подключений с течением времени. Это может быть полезно для управления HTTP-трафиком. Но для меня это не лучшее решение, так как мои потоки TCP обычно имеют время жизни от 5 минут до 2 часов.
заранее большое спасибо за любой ответ :)
просто проверьте connlimit в человеке iptables: http://unixhelp.ed.ac.uk/CGI/man-cgi?iptables+8
# allow 2 telnet connections per client host
iptables -p tcp --syn --dport 23 -m connlimit --connlimit-above 2 -j REJECT
Преимущество перед iplimit в том, что вам не нужно что-то устанавливать. он выскочит из коробки ...
Похоже, вы можете сделать это с помощью iplimit iptables extension. Что-то вроде этого:
iptables -A INPUT -p tcp --syn --dport http -m iplimit --iplimit-above 4 -j REJECT