понедельник, 30 октября 2017 г.

Mikrotik hotspot ограничение количества сессий в периуд.

=====Настройка mikrotik=====

Редкостный кастыль для того что бы пользователи в ТЦ не злоупотребляли бесплатным wi-fi

1) в /ip hotspot user profile вставить скрипт1 как во вложении

2) в /system script add name=rm вставить скрипт 2

3) добавить в расписание
  /system scheduler add name= run_rm start-time=02:00:00 interval=24:00:00 on-event=" /system script run rm"

4) Настроить web-proxy
  /ip proxy set enabled=yes
Сбрасываем страничку сообщающую об ошибках:
  /ip proxy reset-html
Current html pages will be lost! Reset anyway? [y/N]:
жмем «y»
  /ip proxy access add action=deny disabled=no
в /file
заменяем фйл  webproxy/error.html на тот что по ссылке, ну или напишите свой.

5) добавляем правило
  /ip firewall nat add chain=dstnat action=redirect to-ports=8080 protocol=tcp src-address-list=ban dst-port=80,443 log=no comment="redirect-to web-proxy" place-before=0 
убедится что оно выше остальных.

6) разрешаем ходить на cраничку-заглушку
  /ip hotspot walled-garden ip add action=accept server=hotspot1 dst-address=10.21.32.1 protocol=tcp

Скрипт1
  :local kuser $user;
  :local kip [/ip hotspot active get [find user=$kuser] address];
  :local kfile ($kuser.".txt");
  :log info message=("LogIN: ".$kuser.";".$kip);
  :if ([:len [/file find name=$kfile]] = 0) do={/file print file=$kuser} else={:if ([/file get $kfile contents]~"^[2-5]") do={:if ([/file get $kfile contents] = 2) do={/file set $kfile contents=3} else={:if ( [/file get $kfile contents] = 3) do={/file set $kfile contents=4} else={:if ([/file get $kfile contents] = 4) do={/file set $kfile contents=5} else={:if ([/file get $kfile contents] = 5) do={/ip firewall address-list add list="ban" address=$kip} else={:log info message=("Eroor: ".$kfile)}}}}} else={/file set $kfile contents=2}};

Скрипт2
  :foreach i in=[/file find] do={ :if ([:typeof [:find [/file get $i name] "9"]]!="nil") do={/file remove $i}; };
  /ip firewall address-list remove [/ip firewall address-list find list="ban"];

====Общее описание====

  * При активации на сервисе hotspot, отрабатывает скрипт который создает файл название которого - логин (благо у них это телефонный номер).
  * При последующих активациях в файл вносятся цифры от 2 до 5, и когда в файле 5 то ip клиента заносится в address list - "ban".
  * В firewall есть правила для этой группы запрещающее доступ в интернет и перенаправляющая все http запросы на web-proxy, в котором заглушка, сообщающая о превышении количества сессий в сутки.