Довольно часто в практике использования маршрутизаторов Микротик возникает вопрос об ограничении пользователей по объему трафика, в какой-то определенный период времени. И если с лимитами по скоростям вопросов меньше и настройка проще, то вопрос с объемом часто ставит в тупик.
Непосредственно на сайте Mikrotik, есть замечательный и простой пример, который позволяет расширить ваши познания в области применения RouterOS и лишний раз демонстрирует гибкость, которую дает данная операционная система.
Итак, рассмотрим следующую ситуацию:
- Есть подсеть 192.168.15.х/24.
- Необходимо ограничить каждого пользователя данной подсети месячным объемом трафика в 4 гигабайта.
- По достижении лимита — ограничить скорость пользователю до 64 kbit/s.
Прежде, чем переходить к решению поставленной задачи примем следующие условия:
- Адрес маршрутизатора 192.168.15.254/24
- Адреса клиентов которых необходимо ограничить 192.168.15.17-192.168.15.28, 192.168.15.35, 192.168.15.67.
- Есть другие клиенты, с другими адресами, на которых данное ограничение не распространяется.
- Для всех клиентов созданы простые правила ограничения скорости (Queue Simple).
Для начала нам необходимо создать скрипт, который будет проверять объем трафика, подсчитываемого в простых очередях у клиентов:
System → Scripts — нажмем «плюс».
В поле Name введем название нашего скрипта, например Traff_Limit_4Gb.
В поле Source введем следующий скрипт (скопируйте приведенный ниже код и вставьте его в поле Source):
:local traf; /queue simple :for i from=17 to= 28 do = { :if ([/queue simple find target-addresses=("192.168.15." . $i)] != "") do={ :set traf [get [find target-addresses=("192.168.15." . $i)] total-bytes] :if ($traf > 4294967296) do = { set [find target-addresses=("192.168.15." . $i)] max-limit= 64000/64000 } } }
Данный код скрипта (как видно из значения i — изменяющегося от 17 до 28) предназначен для диапазона IP-адресов 192.168.15.17-192.168.15.28. Т.к. нам необходимо ограничить еще адреса 192.168.15.35 и 192.168.15.67 — то создадим еще по одному скрипту на каждый IP-адрес:
для 192.168.15.35 (в поле Name введем название скрипта, Traff_Limit_4Gb_IP35):
: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 } }
для 192.168.15.67 (в поле Name введем название скрипта, Traff_Limit_4Gb_IP67):
:local traf; /queue simple :if ([/queue simple find target-addresses=("192.168.15.67")] != "") do={ :set traf [get [find target-addresses=("192.168.15.67")] total-bytes] :if ($traf > 4294967296) do = { set [find target-addresses=("192.168.15.67")] max-limit= 64000/64000 } }
В результате в списке должно появится три скрипта:
- Traff_Limit_4Gb (для диапазона IP 192.168.15.17-192.168.15.28)
- Traff_Limit_4Gb_IP35 (для IP 192.168.15.35)
- Traff_Limit_4Gb_IP67 (для IP 192.168.15.67)
Теперь нам необходимо заставить наши скрипты выполнятся, в этом нам на помощь придет планировщик — Sheduler
Источник http://wiki.netair.by/wiki/settings/limittraf1
добрый день, а есть возможность указать интерфейс lte1. Для лимитирования трафика, подскажите что для этого нужно?
Спасибо!