Mr_Welk (mr_welk) wrote,
Mr_Welk
mr_welk

Микротик: создаем очередь для клиентов и режем им скорость по достижении лимита

Задумал резать злоупотребляющих траффиком клиентов на микротике. Правильное решение это Hotspot но он не подошёл, потому что сертификат для https придется покупать, иначе требуется подтверждение небезопасного соединения что годится для дома но не годится для офиса.


Поэтому пишем скрипт, срабатывающий при выдаче аренды DHCP :

[Скрипт для DHCP]

#Lease to Simple Queues
#V.1 By Virtual IT Export
:local queueName "Client- $leaseActMAC";
:if ($leaseBound = "1") do={
  /queue simple add name=$queueName target=($leaseActIP . "/32") limit-at=512k/512k max-limit=512k/512k comment=[/ip dhcp-server lease get [find where active-mac-address=$leaseActMAC && active-address=$leaseActIP] host-name];
} else={
  /queue simple remove $queueName
}

Таким образом все клиенты получают по личной очереди с ограничением 512к (это по желанию)

Дальше, делаем скрипт, который раз в определенное время (в зависимости от времени аренды) проверяет количество скачанного траффика и если оно
превышает определенное значение (в данном случае 500мб) режет скорость до 32/64 к

[Скрипт]

:local traffic;
:local ipaddr;
/queue simple
:log info "script started"
:for i from=60 to=100 do= {
:set ipaddr [("192.168.4.$i/32")];
# :log info "Addresses counter"
# :log info $i
:if ([find target=$ipaddr] != "") do= {
# :log info "Ip address"
# :log info $ipaddr
:set traffic [get [find target=$ipaddr] bytes];
# :log info "traffic="
# :log info $traffic
:local posSlash [:find $traffic "/" -1]
:local trafficlen [:len $traffic]
:local UpTraff [:pick $traffic 0 $posSlash];
# :log info "UpTraff"
# :log info $UpTraff
:local UpTrafflen [:len $UpTraff]
:local DownTraff [:pick $traffic ($posSlash+1) $trafficlen]
# :log info "DownTraff="
# :log info $DownTraff
  :if ($DownTraff  > 524288000) do= {
# :log info "Bingo!"
    set [find (target=$ipaddr)] limit-at=32k/64k max-limit=32k/64k;
   }
 }
}
# :log info "Finish!"



Ну и не забыть скрипт сброса счетчиков подсчета траффика периодически запускать (смотря за какой период считаем)

[Скрипт 2]
/queue simple reset-counters




Tags: #lease, #v, mikrotik
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 2 comments