До перехода на замечательные WiFi точки доступа
— ограничением ширины канала до каждой AP
— установкой дневного лимита входящего трафика, после которого скорость на AP сильно ограничивается (до выяснения обстоятельств) и отсылается уведомление администраторам по email
Основой всего этого начинания являются очереди (queues) RouterOS — и скорость ограничат, и трафик посчитают, ну а логика конечно в скриптах.
Для начала сделаем такую простую очередь:
/queue simple add burst-limit=5M/5M burst-threshold=2512k/2512k burst-time=8s/8s comment="" \ direction=both disabled=no dst-address=0.0.0.0/0 interface=all limit-at=\ 0/0 max-limit=2M/2M name=WiFi2 parent=none priority=8 queue=\ default-small/default-small target-addresses=172.16.15.3/32 total-queue=\ default-small |
При стандартном использовании сети Интернет пользователями я крайне рекомендую использовать
Как я говорил выше, очередь также заботливо собирает нам статистическую информацию (которую мы сможем получить и скриптом):
Скриптов у нас будет два:
1. Простенький «ResetWiFiCounters», сбрасывающий счётчик трафика и восстанавливающий скорость доступа:
/queue simple reset-counters WiFi1 /queue simple reset-counters WiFi2 /queue simple set WiFi1 max-limit=2M/2M /queue simple set WiFi2 max-limit=2M/2M |
Выполняем его шедулером каждый день в 00:05:00:
/system scheduler add comment="" disabled=no interval=1d name=ResetWiFI on-event=\ "/system script run ResetWiFiCounters" policy=\ reboot,read,write,policy,test,sniff,sensitive start-date=jan/01/1970 \ start-time=00:05:00 |
2. Сильно замороченный «CheckWiFi1» («CheckWiFi2», «CheckWiFi3» и т.д. по необходимости):
:local WiFiName "WiFi1" :local BytesIN :local BytesOUT :local Bytes [/queue simple get [find name="$WiFiName"] bytes] :for i from=( [:len $Bytes] - 1) to=0 do={ :if ( [:pick $Bytes $i] = "/") do={ :set BytesOUT ([:pick $Bytes 0 $i] / 1048576) } } :for i from=0 to=( [:len $Bytes] - 1) do={ :if ( [:pick $Bytes $i] = "/") do={ :set BytesIN ([:pick $Bytes ($i + 1) [:len $Bytes]] / 1048576) } } :if (($BytesIN > 500) || ($BytesOUT > 500)) do { /tool e-mail send to=admin@domain.ru from=wifi@domain.ru server=smtp.domain.ru subject="Traffic warning for $WiFiName" body="Traffic warning for $WiFiName" user=username password=p@ssw0rd /queue simple set [find name="$WiFiName"] max-limit=30k/30k } |
Почему именно так получать статистику — без понятия, долго экспериментировал, гарантированно работает на 3.28, на более свежих не проверял.
Запускаем раз в минуту:
/system scheduler add comment="" disabled=no interval=1m name=CheckWiFi1 on-event=\ "/system script run CheckWiFi1" policy=\ reboot,read,write,policy,test,password,sniff,sensitive start-date=\ jan/01/1970 start-time=00:00:00 |
В принципе — всё: пришло уведомление на почту — идём смотреть что-же там происходит.
Оставить комментарий или два