Ограничение пользователя по объему трафика в месяц

Автоматизация при помощи встроенного скриптового языка и RouterOS API
Аватара пользователя
r136a8
Сообщения: 201
Зарегистрирован: 04 дек 2017, 00:01

Ограничение пользователя по объему трафика в месяц

Сообщение r136a8 »

Добрый день. Есть вот такой скрипт который ограничивает пользователя после достижение 4gb трафика и уменьшением скорости для данного пользователя до 64 kbit/s. Скрипт проверил работает (rb4011)

Код: Выделить всё

:local traf;
  /queue simple
   :if ([/queue simple find target-addresses=("192.168.15.35")] != "") do={
    :set traf [get [find target-addresses=("192.168.15.35")] total-bytes]
     :if ($traf  > 4294967296) do = {
      set [find target-addresses=("192.168.15.35")] max-limit= 64000/64000
  }
}
Страница с описанием http://wiki.netair.by/wiki/settings/limittraf1

У меня вопрос а как настроить планировщик - Sheduler. Когда скрипт должен запускаться? В моем случае я его запустил вручную.
К примеру после перезагрузки микротика его нужно запускать повторно (тогда установить Start time - startup?) или его нужно запускать периодично каждый день? Я правильно понял что все обнуляется после перезагрузки, счетчики и скрипты?
Спасибо
Аватара пользователя
Chupaka
Сообщения: 3559
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Ограничение пользователя по объему трафика в месяц

Сообщение Chupaka »

Добрый.

Скрипт просто проверяет, сколько трафика прошло через очередь - и меняет настройки очереди, если много :) Так что запускать каждые N минут. Да, счётчики при перезагрузке сбрасываются. Ну и я бы переписал скрипт в более простой для восприятия форме (с поправками на синтаксис актуальных версий: /32 после адреса и target вместо target-addresses - у вас на какой версии оно работало в таком виде?):

Код: Выделить всё

/queue simple
:foreach i in=[find target="192.168.15.35/32"] do={
  :if ([get $i total-bytes] > 4294967296) do={
    set $i max-limit= 64000/64000
  }
}
Аватара пользователя
r136a8
Сообщения: 201
Зарегистрирован: 04 дек 2017, 00:01

Re: Ограничение пользователя по объему трафика в месяц

Сообщение r136a8 »

У меня работал на актуальной 6.45.6
Вы имели ввиду вот так (в таком же виде и ничего не добавлять)
https://c.radikal.ru/c08/1909/7b/f12b234e3592.jpg

Спасибо.

Если, к примеру скрипт запускать каждых 30 минут и пользователь использует 3Gb из 4Gb и перезагрузится то все обнулится до 0Gb или скрипт продолжит работу с 3Gb?
Если обнуляется то скрипт актуален только при условии не перезагружатся!
Аватара пользователя
Chupaka
Сообщения: 3559
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Ограничение пользователя по объему трафика в месяц

Сообщение Chupaka »

r136a8 писал(а): 16 сен 2019, 14:19 Вы имели ввиду вот так (в таком же виде и ничего не добавлять)
https://c.radikal.ru/c08/1909/7b/f12b234e3592.jpg
Ну, поскольку переменной traf у вас нет - то и строчку с её объявлением тоже можно удалить :)
r136a8 писал(а): 16 сен 2019, 14:19 Если, к примеру скрипт запускать каждых 30 минут и пользователь использует 3Gb из 4Gb и перезагрузится то все обнулится до 0Gb или скрипт продолжит работу с 3Gb?
Если обнуляется то скрипт актуален только при условии не перезагружатся!
Всё обнулится до нуля (ух :) ).
Встречал где-то давно рекомендации по хранению накопленного трафика в комментариях, дабы не быть зависимыми от перезагрузок, но готового решения показать, увы, не могу.

UserManager не поможет?
Diana
Сообщения: 9
Зарегистрирован: 20 ноя 2020, 18:41

Re: Ограничение пользователя по объему трафика в месяц

Сообщение Diana »

Мда, завязла я даже в этом скрипте...
Нужно ограничить по обьёму подсеть, от 3 до 229 айпишника. Для теста ограничение поставила 100 Мб.
Вписываю скрипт в терминал и шедулер и ничего не меняется.
качает торент на максимальной скорости до упора.
Подскажите что не так ?
версия 6.46
скрин:

https://prnt.sc/vnavrh

скрипт:

:local traf;
/queue simple
:for i from=3 to= 229 do = {
:if ([/queue simple find target-addresses=("192.168.5." . $i)] != "") do={
:set traf [get [find target-addresses=("192.168.5." . $i)] total-bytes]
:if ($traf > 104857600) do = {
set [find target-addresses=("192.168.5." . $i)] max-limit= 64000/64000
}
}
}
Аватара пользователя
Chupaka
Сообщения: 3559
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Ограничение пользователя по объему трафика в месяц

Сообщение Chupaka »

А вы единственную страницу темы читать пробовали? :)
Вот тут я про поправки синтаксиса в актуальных версиях писал, например: viewtopic.php?p=7958#p7958
Diana
Сообщения: 9
Зарегистрирован: 20 ноя 2020, 18:41

Re: Ограничение пользователя по объему трафика в месяц

Сообщение Diana »

Нет, не единственную, там где вы писали про поправки тоже. Пробовала и ваш упрощенный скрипт с поправками. Для теста решила ограничить одну тестовую машинку, подменила IP на свой, про слэш 32 не забыла. Шедулер работает, а вот скрипт не выполняет свою работу. Пробовала в терминал запускать, с запущенным торентом, ничего не ограничивается. Скорость скачки все растет и растет....
Может я чего не поняла ? Кроме скрипта, мне ничего не нужно было настроить ?
В микротике настроен только нат , DHCP , проброс портов для RDP и задача queue которая режет канал при включении скачки больших файлов, но на время тестов она выключена
Аватара пользователя
Chupaka
Сообщения: 3559
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Ограничение пользователя по объему трафика в месяц

Сообщение Chupaka »

Скрипт ищет Simple Queue для данного IP, проверяет, не превышен ли в ней объём переданных данных, и если превышен - задаёт нужную скорость. Вы эту Simple Queue создали? С какими параметрами? Сами в ней данные видите, на которые скрипт должен реагировать?
Diana
Сообщения: 9
Зарегистрирован: 20 ноя 2020, 18:41

Re: Ограничение пользователя по объему трафика в месяц

Сообщение Diana »

Нет, не создавала, поэтому и спросила если только скрипт нужен. Можете подсказать какие параметры там настроить в Simple Queue? одно правило у меня там прописано, для торрентов, Queue burst limit и оно работает.
Аватара пользователя
Chupaka
Сообщения: 3559
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Ограничение пользователя по объему трафика в месяц

Сообщение Chupaka »

Ещё раз, скрипт ищет очередь, в которой target=IP/32, проверяет значение total-bytes и при превышении порога задаёт max-limit. От этого и пляшите.

Т.е. если вы вручную можете всё это увидеть и проделать — скрипт будет работать.
Diana
Сообщения: 9
Зарегистрирован: 20 ноя 2020, 18:41

Re: Ограничение пользователя по объему трафика в месяц

Сообщение Diana »

Chupaka писал(а): 23 ноя 2020, 16:01 Вы эту Simple Queue создали? С какими параметрами?
Вот про это никто и нигде не пишет. Такое чувство что здесь только для асов форум, такм как я не место...
Это правило я не создавала, видимо это и есть проблема. Как создать, какие параметры, где прочитать про это ?
Аватара пользователя
Chupaka
Сообщения: 3559
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Ограничение пользователя по объему трафика в месяц

Сообщение Chupaka »

Почему не пишет? В первом посте этой темы есть отсылка на статью с описанием, да и свой скрипт вы ведь где-то взяли?..

Если вы думаете, что создать IP Address или Simple Queue на роутере может только ас - у меня плохие новости :) Вы, может, поищите какой базовый курс по MikroTik RouterOS?

Вот простая инструкция, как создать Simple Queue, например (первый попавшийся не сильно сложный пример из Гугла): https://www.technotrade.com.ua/Articles ... peed_limit

Если в статистике нужен именно Total Traffic - надо сменить Total Queue Type с default-small на какой-нибудь другой (например, default), без этого очередь не будет считать Total Traffic.

Для полноты картины вот официальная документация: https://wiki.mikrotik.com/wiki/Manual:Q ... ple_Queues
Аватара пользователя
Sir_Prikol
Сообщения: 550
Зарегистрирован: 14 апр 2018, 15:21
Откуда: СССР

Re: Ограничение пользователя по объему трафика в месяц

Сообщение Sir_Prikol »

Ну вообще-то я в соседней теме прошу уже несколько постов создать вручную симпл и поэкспериментировать
Дома: CCR2004 (7-ISP(GPON)белый IP)
Samarin
Сообщения: 1
Зарегистрирован: 21 янв 2022, 16:07

Re: Ограничение пользователя по объему трафика в месяц

Сообщение Samarin »

Возможно-ли данный роутер настроить таким способом, штобы в течении каждого месяца было какое-то ограничение кол-ва скачиваемых ГБ для каждого подключенного к роутеру устройства, а при превышении лимита скаченных ГБ начиналось ограничении скорости до конца месяца для устройства превысившего лимит скачивания ГБ?
Montescue
Сообщения: 1
Зарегистрирован: 06 ноя 2022, 08:59

Re: Ограничение пользователя по объему трафика в месяц

Сообщение Montescue »

Добрый день, уважаемые подскажите какой Total Queue Type указывать для адекватного подсчёта total bytes?
Аватара пользователя
Chupaka
Сообщения: 3559
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Ограничение пользователя по объему трафика в месяц

Сообщение Chupaka »

Добрый. Считать будет одинаково адекватно любой. Начать можете с default.