Ситуация:
Провайдер дает узкий исходящий канал: 512 кбит/с.
Проблема:
Один клиент забивает весь исходящий канал. Требуется его ограничить. IP клиента 192.168.0.123
Решение:
Шаг 1. Добавляем правило шейпер для несуществующего адреса, например 123.123.123.123 но с реальным ограничение скорости, например 100кбит/с и размер сессии, например 100кбайт
Шейпер создается в обе стороны, поэтому мы задаем несуществующий адрес.
Шаг 2. Выполняем команду под удаленным помощником:
/usr/local/ics/bin/firewall_custom.sh
Шаг 3. В выводе находим строки соответствующие вашему адресу:
iptables -t mangle -A fw_custom_prer_shaper -s 123.123.123.123/0.0.0.0 -d 0.0.0.0/0.0.0.0 -m connbytes --connbytes 113664: -j MARK --set-mark 10 iptables -t mangle -A fw_custom_postr_shaper -d 123.123.123.123/0.0.0.0 -s 0.0.0.0/0.0.0.0 -m connbytes --connbytes 113664: -j MARK --set-mark 10
Параметры:
-s - исходящий трафик
-d - входящий трафик
Шаг 4. Добавляем нужное нам правило на основе полученных с параметром -I:
iptables -t mangle -I fw_custom_prer_shaper -s 192.168.0.123/255.255.255.255 -d 0.0.0.0/0.0.0.0 -m connbytes --connbytes 113664: -j MARK --set-mark 10
Шаг 5. Если все успешно, применяем правило на постоянной основе через ics_tune.sh:
Внимание! Указанные действия необходимо производить когда сервер находится в режиме удаленного помощника.
Сначала нужно разрешить редактирование файла /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 #Правило для ограничения скорости клиента 192.168.0.123: iptables -t mangle -I fw_custom_prer_shaper -s 192.168.0.123/255.255.255.255 -d 0.0.0.0/0.0.0.0 -m connbytes --connbytes 113664: -j MARK --set-mark 10 fi true
Для применения изменений выполните команду (Перезагрузка не потребуется):
/usr/local/ics/bin/ics_tune.sh firewall.sh
Если файл не пустой, то старое содержимое оставить нетронутым и добавить в любое место файла основной условный блок из примера выше.