Это старая версия документа.
Ограничение пользователей по объему трафика в месяц, с использованием простых очередей
Довольно часто в практике использования маршрутизаторов Микротик возникает вопрос об ограничении пользователей по объему трафика, в какой-то определенный период времени. И если с лимитами по скоростям вопросов меньше и настройка проще, то вопрос с объемом часто ставит в тупик.
Непосредственно на сайте 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 } } }