Просмотр Исходного

*Внимание\!* Указанные действия необходимо производить когда сервер находится в режиме [удаленного помощника|http://asrdoc.ideco-software.ru/pages/viewpage.action?pageId=2687433].


Сначала нужно разрешить редактирование файла /usr/local/ics/bin/ics_tune.sh

{code}
mount -o rw,remount /mnt/ro_disc
chattr -i /usr/local/ics/bin/ics_tune.sh
{code}
Дальше нужно отредактировать файл /usr/local/ics/bin/ics_tune.sh

и привести его к подобному виду


{code}
#!/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
{code}

*100* \- примерное количество пользователей, которые используют ip адреса из подсети 192.0.2.0/24
*300* \- примерное количество tcp и udp conntrack сессий на одного из этих абонентов
При необходимости можно создавать правила для конкретных ip (абонентов), указывая после параметра "-s" ip без маски
Важно соблюдать последовательность правил в цепочке - условия с connlimit вверху, DROP внизу.
Если у абонентов белые адреса, то еще нужно добавить также команду:
{code}
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
{code}
Для применения изменений выполните команду (*Перезагрузка не потребуется*):
{code}
/usr/local/ics/bin/ics_tune.sh firewall.sh
{code}

Если файл не пустой, то старое содержимое оставить нетронутым и добавить в любое место файла основной условный блок из примера выше.