Шейпер. Маленький исходящий канал

Skip to end of metadata
Go to start of metadata

Ситуация:

Провайдер дает узкий исходящий канал: 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

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

Введите метки, чтобы добавить к этой странице:
Please wait 
Ищите метку? просто начните печатать.