Нужна помощь, скрипт отслеживания и блокировки пользователей с динамическим ip [Решено]

Автоматизация при помощи встроенного скриптового языка и RouterOS API
Ответить
Аватара пользователя
ilya.bes
Сообщения: 21
Зарегистрирован: 17 апр 2020, 23:37
Откуда: Горки

Нужна помощь, скрипт отслеживания и блокировки пользователей с динамическим ip [Решено]

Сообщение ilya.bes »

Всем привет, говорю прямо в скриптах я дурак ;) и делаю этот конфиг единично.
Вообщем есть скрипт который отслеживает новых пользователей (тех кому не присвоен статический адрес) в dhcp leases, и отправляет сообщение в телеграмм.
прошу шу помощи в добавлении функционала, а именно чтобы после отправки сообщения в телегу клиента переводило в статику и блокировало параметром block access.
зарание спасибо.

Код: Выделить всё

:if ($leaseBound = 1) do={
	/ip dhcp-server lease;
	:foreach i in=[find dynamic=yes] do={
		:local dhcpip 
		:set dhcpip [ get $i address ];
		:local clientid
		:set clientid [get $i host-name];

		:if ($leaseActIP = $dhcpip) do={
			:local comment "New IP"
			:set comment ( $comment . ": " .  $dhcpip . ": " . $clientid);
			/log error $comment;
			/tool fetch url="https://api.telegram.org/bot1113462583:AAGj9BzPgo********/sendMessage\?chat_id=-1001170******&text=Attention a new unauthorized client is connected%0AIP adres:$leaseActIP%0AMAC adres:$leaseActMAC%0AService: $leaseServerName%0AHost name:$clientid" keep-result=no
		}
	}
}
Последний раз редактировалось ilya.bes 19 апр 2020, 12:42, всего редактировалось 2 раза.
Аватара пользователя
Chupaka
Сообщения: 3880
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Нужна помощь, скрипт отслеживания пользователей с динамическим ip

Сообщение Chupaka »

Приветствую.

А чего вы хотите в конечном результате добиться этим Block Access? Я как вижу, из-за этой галки роутер просто перестанет адрес выдавать клиенту.
Аватара пользователя
ilya.bes
Сообщения: 21
Зарегистрирован: 17 апр 2020, 23:37
Откуда: Горки

Re: Нужна помощь, скрипт отслеживания пользователей с динамическим ip

Сообщение ilya.bes »

Доброй ночи.
Замысел в том что так клиент получает статику и блокируется до получения разрешения на вход в сеть (сейчас приходится жать make static и ставить галку руками).
Аватара пользователя
Chupaka
Сообщения: 3880
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Нужна помощь, скрипт отслеживания пользователей с динамическим ip

Сообщение Chupaka »

Так а возможен ли вариант просто не выдавать ничего клиенту, если у него статикой лиза не создана? Сделать у DHCP параметр Address Pool = static-only
Аватара пользователя
ilya.bes
Сообщения: 21
Зарегистрирован: 17 апр 2020, 23:37
Откуда: Горки

Re: Нужна помощь, скрипт отслеживания пользователей с динамическим ip

Сообщение ilya.bes »

В моём случае не вариант, нужно чтобы клиенту выдавало адрес из пула и заносило его в лизу, при этом присвоив статику и параметр блокировки. Так я буду получать уведомление в телегу что кто-то подключился и буду иметь возможность оставить как есть или зайти и разрешить клиенту подключаться дальше. Я понимаю что в принципе в скрипте это будет пару строк но вот в скриптах я не силён.
Аватара пользователя
ilya.bes
Сообщения: 21
Зарегистрирован: 17 апр 2020, 23:37
Откуда: Горки

Re: Нужна помощь, скрипт отслеживания пользователей с динамическим ip

Сообщение ilya.bes »

Есть мысли как это прикрутить, или куда копать?
Аватара пользователя
ilya.bes
Сообщения: 21
Зарегистрирован: 17 апр 2020, 23:37
Откуда: Горки

Re: Нужна помощь, скрипт отслеживания пользователей с динамическим ip

Сообщение ilya.bes »

Решение.
первая часть скрипта отправляет уведомление в телегу, вторая присваивает новому клиенту статику и блокирует его, подписав как не авторизованного.

Есть ли у кого мысли как привязать к комментарию ещё и время/дату подключения?

Код: Выделить всё

 :if ($leaseBound = 1) do={
	/ip dhcp-server lease;
	:foreach i in=[find dynamic=yes] do={
		:local dhcpip 
		:set dhcpip [ get $i address ];
		:local clientid
		:set clientid [get $i host-name];

		:if ($leaseActIP = $dhcpip) do={
			:local comment "New IP"
			:set comment ( $comment . ": " .  $dhcpip . ": " . $clientid);
			/tool fetch url="https://api.telegram.org/bot********/sendMessage\?chat_id=***********&text=Attention a new unauthorized client is connected%0AIP adres:$leaseActIP%0AMAC adres:$leaseActMAC%0AService: $leaseServerName%0AHost name:$clientid" keep-result=no
		}
	}
}
/ip dhcp-server lease
:foreach i in=[find dynamic] do={
  make-static $i
  set $i comment=UNAUTHORIZED
  set $i block-access=yes
}
Аватара пользователя
Chupaka
Сообщения: 3880
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Нужна помощь, скрипт отслеживания пользователей с динамическим ip

Сообщение Chupaka »

ilya.bes писал(а): 18 апр 2020, 19:29 Есть ли у кого мысли как привязать к комментарию ещё и время/дату подключения?
Например, так:

Код: Выделить всё

set $i comment=("UNAUTHORIZED, ".[/system clock get date]." ".[/system clock get time])
Аватара пользователя
ilya.bes
Сообщения: 21
Зарегистрирован: 17 апр 2020, 23:37
Откуда: Горки

Re: Нужна помощь, скрипт отслеживания и блокировки пользователей с динамическим ip [Решено]

Сообщение ilya.bes »

Спасибо, теперь просто идеально)
Снимок2.PNG
Снимок2.PNG (5.24 КБ) 2296 просмотров
Аватара пользователя
ilya.bes
Сообщения: 21
Зарегистрирован: 17 апр 2020, 23:37
Откуда: Горки

Re: Нужна помощь, скрипт отслеживания и блокировки пользователей с динамическим ip [Решено]

Сообщение ilya.bes »

Появился новый вопрос, как сделать так чтобы скрипт срабатывал только на один dhcp а не на все сразу? есть dhcp-master и dhcp-guest, нудно чтобы он работал только в мастере не трогая гостя.
Аватара пользователя
Chupaka
Сообщения: 3880
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Нужна помощь, скрипт отслеживания и блокировки пользователей с динамическим ip [Решено]

Сообщение Chupaka »

А вы скрипт указываете разве не в DHCP-сервере? В каком укажете - на тот он и срабатывает. Разве не так?
Аватара пользователя
ilya.bes
Сообщения: 21
Зарегистрирован: 17 апр 2020, 23:37
Откуда: Горки

Re: Нужна помощь, скрипт отслеживания и блокировки пользователей с динамическим ip [Решено]

Сообщение ilya.bes »

К сожалению не так, ибо записи появляются в лизе а скрипт обрабатывает их именно там, и блокирует гостей
Аватара пользователя
Chupaka
Сообщения: 3880
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Нужна помощь, скрипт отслеживания и блокировки пользователей с динамическим ip [Решено]

Сообщение Chupaka »

Не совсем понял... Как вы в лизу запихнули скрипт?
Аватара пользователя
ilya.bes
Сообщения: 21
Зарегистрирован: 17 апр 2020, 23:37
Откуда: Горки

Re: Нужна помощь, скрипт отслеживания и блокировки пользователей с динамическим ip [Решено]

Сообщение ilya.bes »

первая часть скрипта не моя, но как я понял он смотрит при выдаче адреса прописан ли тот в лизе, и дальше обрабатывает...
Аватара пользователя
Chupaka
Сообщения: 3880
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Нужна помощь, скрипт отслеживания и блокировки пользователей с динамическим ip [Решено]

Сообщение Chupaka »

Вы куда его вставили? Ответьте уже конкретно наконец :)
Аватара пользователя
ilya.bes
Сообщения: 21
Зарегистрирован: 17 апр 2020, 23:37
Откуда: Горки

Re: Нужна помощь, скрипт отслеживания и блокировки пользователей с динамическим ip [Решено]

Сообщение ilya.bes »

в раздел скритп в dhcp-master
Аватара пользователя
Chupaka
Сообщения: 3880
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Нужна помощь, скрипт отслеживания и блокировки пользователей с динамическим ip [Решено]

Сообщение Chupaka »

Вот он и реагирует на dhcp-master. На остальные - нет.
Аватара пользователя
ilya.bes
Сообщения: 21
Зарегистрирован: 17 апр 2020, 23:37
Откуда: Горки

Re: Нужна помощь, скрипт отслеживания и блокировки пользователей с динамическим ip [Решено]

Сообщение ilya.bes »

да, только вот при обработке любого действия в мастере все в госте падают в статику и блокируются), получается что строки

Код: Выделить всё

/ip dhcp-server lease
:foreach i in=[find dynamic] do={ 
смотрит всех динамических в лизе не зависимо от того какой dhcp
Аватара пользователя
ilya.bes
Сообщения: 21
Зарегистрирован: 17 апр 2020, 23:37
Откуда: Горки

Re: Нужна помощь, скрипт отслеживания и блокировки пользователей с динамическим ip [Решено]

Сообщение ilya.bes »

Решение №2
Часть первая, уведомление в телегу, необходимо прописать имя своего (нужного) dhcp.
Часть вторая, присвоение клиенту статики, и блокировки с комментарием пометкой, так-же необходимо прописать необходимый dhcp.

Код: Выделить всё

# Часть №1
:if ($leaseBound = 1) do={
	/ip dhcp-server lease;
	:foreach i in=[find dynamic] do={
                     :foreach i in=[find active-server=dhcp2] do={                      #сюда прописать свой dhcp
		:local dhcpip 
		:set dhcpip [ get $i address ];
		:local clientid
		:set clientid [get $i host-name];

		:if ($leaseActIP = $dhcpip) do={
			:local comment "New IP"
			:set comment ( $comment . ": " .  $dhcpip . ": " . $clientid);
			/tool fetch url="https://api.telegram.org/bot***************/sendMessage\?chat_id=*************&text=Attention a new unauthorized client is connected%0AIP adres:$leaseActIP%0AMAC adres:$leaseActMAC%0AService: $leaseServerName%0AHost name:$clientid" keep-result=no
		}
	}
}
}
#Часть №2
/ip dhcp-server lease
:foreach i in=[find active-server=dhcp2] do={                      #сюда прописать свой dhcp
:foreach i in=[find dynamic] do={
  make-static $i
  set $i comment=("UNAUTHORIZED, ".[/system clock get date]." ".[/system clock get time])
  set $i block-access=yes
}
   }
Аватара пользователя
Chupaka
Сообщения: 3880
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Нужна помощь, скрипт отслеживания и блокировки пользователей с динамическим ip [Решено]

Сообщение Chupaka »

Есть контакт :)
Вместо жёстко прописанного dhcp2 используйте переменную $leaseServerName - это как раз и есть имя текущего сервера, который запустил скрипт.

Из мануала список доступных переменных:
leaseBound - set to "1" if bound, otherwise set to "0"
leaseServerName - dhcp server name
leaseActMAC - active mac address
leaseActIP - active IP address
lease-hostname - client hostname
lease-options - array of received options
Аватара пользователя
ilya.bes
Сообщения: 21
Зарегистрирован: 17 апр 2020, 23:37
Откуда: Горки

Re: Нужна помощь, скрипт отслеживания и блокировки пользователей с динамическим ip [Решено]

Сообщение ilya.bes »

Спасибо за инфу и мануал который можно скурить)
Ответить