billing:howto:ipt_ratelimit

День/Ночь для Accel

Только для debian

Действуем согласно инструкции https://github.com/aabc/ipt-ratelimit

Устанавливаем необходимые пакеты:

apt-get install -y module-assistant iptables-dev pkg-config git
m-a prepare

Создадим папку /var/mikbill

mkdir /var/mikbill

Перейдем в неё и скачаем код модуля

cd /var/mikbill
git clone https://github.com/aabc/ipt-ratelimit.git

Перейдем в исходники и соберем модуль:

cd ipt-ratelimit
make all install

Обновим информацию в системе

depmod

Проверяем что все успешно выполнив

modinfo xt_ratelimit.ko

Необходимо создать пользователя в mysql для того что бы сервер ацеля смог получать необходимую информацию.

Замените 10.0.0.1 на IP ацеля с которого он будет подключаться к базе

Данные команды вводятся в консоле mysql сервера!

CREATE USER 'accel'@'10.0.0.1' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO 'accel'@'10.0.0.1';
FLUSH PRIVILEGES;

В тарифах необходимо включить шейпера и заполнить информацию о входящей\исходящей
скоростях для интервалов 1 и 2

nolink&|


Время можно не трогать так как скрипт его не учитывает.

Установим mysql-client:

apt-get install mysql-client

Скачаем архив с файлами и распакуем его

cd /var/mikbill
wget https://wiki.mikbill.ru/_media/billing/howto/policer.tar.gz
tar xvf policer.tar.gz

Обновим владельца и права:

chown root:root -R /var/mikbill/policer/
chmod +x /var/mikbill/policer/*.sh

Перейдем в папку /var/mikbill/policer

cd /var/mikbill/policer

в файле config.cfg необходимо указать:

# IP адрес ацеля по которому он связан с радиусом
BRASIP="10.0.0.1"

# Параметры подключения к базе
DBADDRESS="10.0.0.2"
DBLOGIN="accel"
DBPASS="password"
DBNAME="mikbill"

# В экстренных ситуациях очень сильно ограничить скорость kb
# активация запуском скрипта limit_hard.sh
# пример: переключение на слабую резервную линию
HARD_LIMIT_RX="1024"
HARD_LIMIT_TX="1024"

В настройках ацеля необходимо отключить модуль shaper, активировать модуль pppd_compat и добавить параметры:

[pppd-compat]
ip-up=/var/mikbill/policer/interface_up.sh
ip-down=/var/mikbill/policer/interface_down.sh
radattr-prefix=/tmp/radattr
verbose=1

eth0 - Аплоад интерфейс
rx - имя листа ratelimit для входящего трафика
tx - имя листа ratelimit для исходящего трафика

iptables -A FORWARD -i eth0 -m ratelimit --ratelimit-set rx --ratelimit-mode dst -j DROP
iptables -A FORWARD -o eth0 -m ratelimit --ratelimit-set tx --ratelimit-mode src -j DROP
# в 01:00 ночи активируем ночной интервал
00 01	* * *	root	cd /var/mikbill/policer && ./limit_night.sh > /dev/null 2>&1
# в 09:00 активируем дневной интервал
00 09	* * *	root	cd /var/mikbill/policer && ./limit_day.sh > /dev/null 2>&1

После настройки и перезапуска службы ацель, в папке /tmp будут создаваться файлы вида:

ipoe123_shaper.log

где ipoe123 - название интерфейса абонента при авторизации, в него будет заноситься информация какая скорость ему была установлена.

файлы

/proc/net/ipt_ratelimit/rx
/proc/net/ipt_ratelimit/tx

содержат общую информацию по установленным скоростям, количеству срабатываний и т.д.

  • billing/howto/ipt_ratelimit.txt
  • Последнее изменение: 6 лет назад
  • alexd