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

Автоматизация при помощи встроенного скриптового языка и RouterOS API
Diana
Сообщения: 9
Зарегистрирован: 20 ноя 2020, 18:41

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

Сообщение Diana »

Всем привет.
Нашла у вас на форуме этот скрипт, но для моих нужд этого мало.
Мне нужно чтоб заданный трафик не превышал недельный период и нужно не только дальнейшее ограничение скорости, но и оповещение на мыло.
На этом же форуме нашла вот этот скрипт, он отсылает оповещение на телеграмм о входе и выходе с микротика.
Поскольку я новенькая в данном деле, мои познания мизерны, и готова финансово отблагодарить за создание такого скрипта, который бы резал скорость и отправлял уведомления на почту с дублированием в телеграмм.
Для удобства оставляю свой телеграмм: @DianaKulik
Diana
Сообщения: 9
Зарегистрирован: 20 ноя 2020, 18:41

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

Сообщение 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
}
}
}
Аватара пользователя
Sir_Prikol
Сообщения: 489
Зарегистрирован: 14 апр 2018, 15:21
Откуда: СССР

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

Сообщение Sir_Prikol »

Во первых, если используется fasttrack - то симпл не работает, так что надо начинать с простейших настроек самого микротика

Второе, Может проще поставить какой-нить биллинг для подсчёта траффика и управления?
Дома: CCR2004 (7-ISP(GPON)белый IP)
Аватара пользователя
Sir_Prikol
Сообщения: 489
Зарегистрирован: 14 апр 2018, 15:21
Откуда: СССР

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

Сообщение Sir_Prikol »

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

:global done
:set done false
:global x
:set x 299
while (!$done) do={
:local checkip [/ping "192.168.7.$x" count=1]
:if (checkip != 0) do={
/queue simple add comment=192.168.7.$x name=192.168.7.$x target=192.168.7.$x parent=none packet-marks="" priority=5/5 queue=default-small/default-small limit-at=5120k/5120k max-limit=5120k/5120k burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s bucket-size=0.1/0.1;
/tool fetch address=api.telegram.org url="https://api.telegram.org/botTOKEN/sendmessage\[email protected]_CHAT_ID&text=YOURTEXT_HERE" keep-result=no;


}
:set x ($x+1)
:if ($x=9) do= {:set done true}
}

Скрипт примерно такой должен быть, НО оповещение прилетит НЕ каждому пользователю (это не реално, вернее муторно, без использования строннего сервиса типа биллинга), а в общий чат

ваша задача не для скрипта микротика, а именно для биллинговой системы, стандартными средствами сделать можно, но вы не представляете себе что это будет за скрипт (из скольки частей он будет состоять), так как в микротике есть ограничение на объём одного скрипта, равный 4k
Дома: CCR2004 (7-ISP(GPON)белый IP)
Аватара пользователя
Chupaka
Сообщения: 3352
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

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

Сообщение Chupaka »

Поддерживаю идею билинга. Может, хотя бы в сторону какого-нибудь встроенного UserManager посмотреть, совместив его с HotSpot?..
Diana
Сообщения: 9
Зарегистрирован: 20 ноя 2020, 18:41

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

Сообщение Diana »

Я понимаю что микротик не для билинга. И не нужен он мне на микротике, вообще не нужен.
Моя задача быстро узнать когда аплоуд пользователя превысил 3-4 гига. Саму почту тоже не получилось мне настроить в микротике.
Уведомления должны приходить только мне, по почте и желательно в телеграмм, чтоб быстро среагировать на это превышение в ручную, главное чтоб скорость упала в мизер, чтоб пользователь не успел все скачать до моего вмешательства.
В микротике настроен только нат , DHCP , проброс портов для RDP и задача queue которая режет канал при включении скачки больших файлов, но на время тестов она выключена.
Аватара пользователя
Sir_Prikol
Сообщения: 489
Зарегистрирован: 14 апр 2018, 15:21
Откуда: СССР

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

Сообщение Sir_Prikol »

Так подождите, у вас задача не корректная
Во первых, счётчики сбросятся во время ребута (где вы будете хранить информацию?) скриптом в комментах через глобальные переменные - не вариант. Так как это вызывает нагрузку на сам микротик.

Далее, какой интерфейс вы хотите считать (в задаче этого нет)?
Количество пользователей?
Способ подключения пользователей?
Версия ROS? это тоже влияет на скрипты

Что именно в нате? Что в фаерволе? сделайте /export file=blah hide-sensitive и выложите сюда
сделайте вручную ограничение на simple queue и проверьте, работает или нет

Поймите, что контроль за траффиком и включение ограничений - это НЕ задача микротика, даже скриптами, этим просто обязан заниматься сторонний сервер

Что касается отправки на e-mail, какую ошибку пишет? Проходит ли тестовое сообщение?

Начинаем с малого, включаем ограничение скорости, потом будем думать за объём
Дома: CCR2004 (7-ISP(GPON)белый IP)
Diana
Сообщения: 9
Зарегистрирован: 20 ноя 2020, 18:41

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

Сообщение Diana »

Sir_Prikol писал(а): 22 ноя 2020, 11:59 Во первых, счётчики сбросятся во время ребута (где вы будете хранить информацию?) скриптом в комментах через глобальные переменные - не вариант. Так как это вызывает нагрузку на сам микротик.
Речь идёт о виртуальных машинах и MikroTik CHR. Все они расположены на сервере который находится в Дата-центре, так что перезагрузки исключаем, и даже если будет одна в год, это не критично.
Sir_Prikol писал(а): 22 ноя 2020, 11:59 Далее, какой интерфейс вы хотите считать (в задаче этого нет)?
В микротике только 2 интерфейса, ether1 - WAN, ether2 - Lan. Интересует аплоуд с ether2 - Lan, но можно считать и входящий, чтоб не усложнять...
Sir_Prikol писал(а): 22 ноя 2020, 11:59 Количество пользователей?
Весь диапазон локальной сети.
Sir_Prikol писал(а): 22 ноя 2020, 11:59 Версия ROS? это тоже влияет на скрипты
Версия 6.46 (stable)
Sir_Prikol писал(а): 22 ноя 2020, 11:59 Что именно в нате? Что в фаерволе? сделайте /export file=blah hide-sensitive и выложите сюда
сделайте вручную ограничение на simple queue и проверьте, работает или нет
blah.rsc
там стоит уже одно ограничение на скачку торентов queue-burst-limit и оно работает.
Видимо скрипты что я нашла у вас на форуме не работали и за того что нет этого ограничения... но нигде не написано про него, все подразумевают что здесь крутятся одни спецы, за новичков не подумали. Я не знаю с какими параметрами и как сделать это ограничение, где прочитать.
Sir_Prikol писал(а): 22 ноя 2020, 11:59 Что касается отправки на e-mail, какую ошибку пишет? Проходит ли тестовое сообщение?
Даже тестовое не проходит, везьде параметры настройки расписаны по разному, испытала всё что нашла, тестовое сообщение не ушло. Нужно настроить на gmail, где посмотреть актуальные, правильные настройки ?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Chupaka
Сообщения: 3352
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

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

Сообщение Chupaka »

Diana писал(а): 24 ноя 2020, 13:32 Видимо скрипты что я нашла у вас на форуме не работали и за того что нет этого ограничения... но нигде не написано про него, все подразумевают что здесь крутятся одни спецы, за новичков не подумали. Я не знаю с какими параметрами и как сделать это ограничение, где прочитать.
На форуме практически нет готовых скриптов, здесь обсуждают сторонние, поэтому нет ничего удивительного в том, что полную инструкцию никто не публикует, а просто задаёт конкретные вопросы :)

С какими параметрами - я вам в соседней теме написал; параметры, на которые скрипт не обращает внимания, могут быть произвольными.
Аватара пользователя
Sir_Prikol
Сообщения: 489
Зарегистрирован: 14 апр 2018, 15:21
Откуда: СССР

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

Сообщение Sir_Prikol »

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

Теперь по теме

С gmail проблема, он сейчас параноик, я от него постепенно отказываюсь в скриптах, так как блокирует отправку. Пришлось уйти на mail.ru для сервисных емайлов (да и ни где вы не указали как вы отсылаете на гмайл)

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

/tool e-mail send [email protected] subject=Current_RouterOs body=Tra-ta-tal
Отошлёт спокойно, при полностью настроенном /tool e-mail

Если не хотите держать настройки, то чтобы отослать надо будет использовать следующую строчку:

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

/tool e-mail send [email protected] [email protected] server=smtp.gmail.com port=587 [email protected] password=Gmail_Passwd start-tls=yes subject=Test_Subject body=Test_Body_Test_Here
Но, повторюсь, у гмайла проблема с паранойей

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

А теперь сами коды

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

/queue type
add kind=pcq name=public-wifi-download-5M pcq-classifier=dst-address \
    pcq-dst-address6-mask=64 pcq-rate=5M pcq-src-address6-mask=64
add kind=pcq name=public-wifi-upload-5M pcq-classifier=src-address \
    pcq-dst-address6-mask=64 pcq-rate=5M pcq-src-address6-mask=64
Это мы прописали ограничение в 5 мегабит на каждую очередь

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

/queue tree
add name=Advertise_network parent=global
add name=Advertise_WiFi parent=Advertise_network
add limit-at=1M max-limit=2M name=upload packet-mark=Guest_UP parent=\
    Advertise_WiFi
add limit-at=1M max-limit=2M name=download packet-mark=Guest_Down parent=\
    Advertise_WiFi
Это в дереве ограничили любое подключение на 1 мегабит

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

add action=mark-packet chain=forward dst-address-list=Advertise_WiFi new-packet-mark=\
    Guest_Down passthrough=yes
add action=mark-packet chain=forward new-packet-mark=Guest_UP passthrough=yes \
    src-address-list=Advertise_WiFi
Это мы пометили траффик нашей сети для ограничения

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

/ip firewall address-list
add address=192.168.5.0/24 list=Advertise_WiFi
А это мы прописали нашу подсеть, которую ограничиваем


Настраиваем и проверяем, так как вам надо ограничить ВСЮ сеть, то симплы вам не нужны, вам будет достаточно дерева

P.S. Все выдержки настроек взяты с продакшена, работает без проблем
Дома: CCR2004 (7-ISP(GPON)белый IP)