Внимание! Указанные действия необходимо производить когда сервер находится в режиме удаленного помощника.
Сначала нужно разрешить редактирование файла /usr/local/ics/bin/ics_tune.sh
mount -o rw,remount /mnt/ro_disc chattr -i /usr/local/ics/bin/ics_tune.sh
Дальше нужно отредактировать файл /usr/local/ics/bin/ics_tune.sh
и привести его к подобному виду
#!/bin/bash if [ "$1" = "firewall.sh" ]; then iptables -t mangle -I state_new -s 192.0.2.0/24 -m connlimit ! --connlimit-above $((300*100)) --connlimit-mask 32 -j RETURN iptables -t mangle -A state_new -s 192.0.2.0/24 -j DROP fi
100 - примерное количество пользователей, которые используют ip адреса из подсети 192.0.2.0/24
300 - примерное количество tcp и udp conntrack сессий на одного из этих абонентов
При необходимости можно создавать правила для конкретных ip (абонентов), указывая после параметра "-s" ip без маски
Важно соблюдать последовательность правил в цепочке - условия с connlimit вверху, DROP внизу.
Если у абонентов белые адреса, то еще нужно добавить также команду:
iptables -t mangle -I state_new -d 192.0.2.0/24 -m connlimit ! --connlimit-above $((300*100)) --connlimit-mask 32 -j RETURN iptables -t mangle -A state_new -d 192.0.2.0/24 -j DROP
Для применения изменений выполните команду (Перезагрузка не потребуется):
/usr/local/ics/bin/ics_tune.sh firewall.sh
Если файл не пустой, то старое содержимое оставить нетронутым и добавить в любое место файла основной условный блок из примера выше.