Контроль появления новых устройств

Обсуждение ПО и его настройки
abusenko87
Сообщения: 9
Зарегистрирован: 27 сен 2016, 09:45

Приветствую всех!
Админю небольшую сеть ~ 50 устройств. Есть необходимость средствами Микрота отслеживать появление новых mac адресов в сети и чтоб это уходило на почту.
Что такое шедулер знаю, и принцип отправки на почту чего-либо. Но хотел бы спросить совета, как именно средствами RB мониторить появление устройств и чтоб это было возможно прикрутить к отправке на почту.
Возможно кто-то уже сталкивался...


Аватара пользователя
podarok66
Модератор
Сообщения: 4358
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

Обсуждалось уже. В ARP все новые устройства появляются. Вроде как даже скрипт был написан, правда про скрипт не ручаюсь, забыл. Ну или все свои устройства в lease прописать, в настройках dhcp-сервера прописать скрипт отправки на почту того, что вам надо. Тогда будут только не отмеченные в lease устройства обрабатываться. Я так адрес-лист нежелательных гостей формирую в домашней сети.
Если подходит в принципе, меняйте тело скрипта на нужное и пользуйтесь


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
abusenko87
Сообщения: 9
Зарегистрирован: 27 сен 2016, 09:45

Podarok66, спасибо за информацию!
Я нашел тему, в которой это обсуждалось, там есть скрипт (кстати, твой)), который следит за конкретным устройством и сообщает о его появлении. А мне нужно, чтоб приходило сообщение о любых новых устройствах (ip и mac) , подключенных в сеть.

Вот, твой код из старой темы, который следит за конкретным устройством:
 Скрипт 1:
:if ( $y!="") do={
{
:local y [/ip arp find mac-address=хх:хх:хх:хх:хх:хх];
# Скрипт отработает, как только переменная примет какое-либо значение
:if ( $y!="") do={
:log warning "This comp online!";
# скриптом отсылаем письмо (параметры почты вставить свои)
/tool e-mail send from="..." to=... server=... port=587 user=... password=... start-tls=yes subject=("IP work") body=("This comp online! " . [/system clock get time] . " " . [/system clock get date]);
# Ждем, когда письмо отправится
:delay 30;
# Включаем шедулер для второго скрипта
/system scheduler enable IPwork;
# Выключаем шедулер для этого скрипта
/system scheduler disable IPdream;

}
}

Скрипт 2:

:if ( $y="") do={
:log warning "This comp offline!";
# скриптом отсылаем письмо (параметры почты вставить свои)
/tool e-mail send from="..." to=... server=... port=587 user=... password=... start-tls=yes subject=("IP wdream") body=("This comp offline! " . [/system clock get time] . " " . [/system clock get date]);
# Ждем, когда письмо отправится
:delay 30;
# Включаем шедулер для первого скрипта
/system scheduler enable IPdream;
# Выключаем шедулер для этого скрипта
/system scheduler disable IPwork;

}
}


А вот, скрипт из твоего блога, который отслеживает нежелательных пользователей:

 Скрипт из блога
{
:local t [/system clock get time];
:local d [/system clock get date];
:foreach i in=[/ip dhcp-server lease find] do={
:if ([/ip dhcp-server lease get $i status]="bound" && [/ip dhcp-server lease get $i comment]="" && [/ip dhcp-server lease get $i server]="DHCP") do={
:local g [("Guest" . "-" . $d . "-" . $t)]
/ip dhcp-server lease set $i comment=$g;
/ip firewall address-list add address=[/ip dhcp-server lease get $i address] list="Drop" timeout=1d dynamic=yes

}
}
}


Подскажи пожалуйста, как сделать тоже самое, как в первом твоем скрипте, но чтоб сообщение приходило на почту не о конкретном устройстве, а о любом новом, желательно по маку.
Последний раз редактировалось abusenko87 29 сен 2016, 16:17, всего редактировалось 1 раз.


Аватара пользователя
podarok66
Модератор
Сообщения: 4358
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

Если свои устройства в leases пропишите с помощью Make Static, то эти устройства будут получать всегда одни и те же адреса. У меня они еще и прокомментированы для того, чтобы ориентироваться не на память (ну это, наверное, у всех так). Теперь в dhcp-server в разделе lease-script добавляем тело скрипта из ЖЖ, переписав его так, чтобы он выполнял нужное вам действие (почта, логирование или там добавление в адрес-лист) И все, появление в сети нового устройства при получении адреса будет инициировать отработку скрипта. Время до следующей реакции на то же самое устройство - параметр lease-time этого самого dhcp-server
P.S.: Я если честно и не помню, что там за скрипт обсуждали в той старой теме))) Даже не представляю...


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
abusenko87
Сообщения: 9
Зарегистрирован: 27 сен 2016, 09:45

:local y [/ip arp find mac-address=хх:хх:хх:хх:хх:хх];
:if ( $y!="") do={
:log warning "This comp online!";

Тут ищется конкретный mac, и если он появляется, то происходит действие... А если появляется любой новый mac, то должно выглядеть так?

:local y [/ip arp find mac-address];
:if ( $y!="") do={
:log warning "This comp online!";

В предыдущем посте, под спойлером Скрипт1, текст твоего скрипта из той темы. Я первый раз не тот вставил, сейчас подправил.


Аватара пользователя
podarok66
Модератор
Сообщения: 4358
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

Нет! Вы сказали "Ищи МАС-адрес!" А какой не указали, что же ему теперь, гадать? Определитесь, какая уникальная характеристика отличает "ваши основные" и "обработанные новые" от "совсем новых" И по ней отсеивайте уже ...


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Аватара пользователя
podarok66
Модератор
Сообщения: 4358
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

Зачем вам в ARP таблицы лезть? Самый простой вариант скрипт при выдаче адреса. Расписываю по пунктам:
1. Свои устройства на вкладке Leases закрепляем за полученными адресами с помощью Make Static
2. Принимаем, что отличительный признак нового клиента - его МАС
3. Идем в Wiki и читаем http://wiki.mikrotik.com/wiki/Manual:IP ... er#General про возможности lease-script , в частности о дефолтных глобальных переменных.
4. Пишем простейший скрипт в теле lease-script , не забывая, что любую переменную можно использовать лишь после того, как ее объявил. То есть:
4.1 Объявил переменную
4.2 Прописал параметры отправки на почту
4.3 Вставил переменную в тело письма, чтобы получить МАС нового устройства на почту
4.4 При необходимости назначаете еще кучу действий (занесение в адрес-листы, включение в правила и маршруты, привязывание к адресу и комментарии для ориентирования)
5. Выставляем параметр lease-time таким, какой удобен для ваших целей (я их не знаю и знать не хочу), например 1 день
И все работает, во всяком случае я в логах МАС в виде INFO получил легко.


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
abusenko87
Сообщения: 9
Зарегистрирован: 27 сен 2016, 09:45

Спасибо за информацию, буду пробовать! А ничего, что у нас логи пишутся на удаленный сервер?


Аватара пользователя
podarok66
Модератор
Сообщения: 4358
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

Да логирование я использую для отладки скриптов. Например вот такой вариант для проверки работоспособности глобальной переменной:

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

{
  :global leaseActMAC;
  :log info $leaseActMAC;
}

Вставьте его в Lease script и попробуйте подключиться новым устройством. В логе появится МАС этого устройства отдельным сообщением.


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
abusenko87
Сообщения: 9
Зарегистрирован: 27 сен 2016, 09:45

podarok66 Спасибо за отзывчивость!

 Такой вариант работает
: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 e-mail send to=user@12345.net subject=NewPc body="$leaseActIP || $leaseActMAC || $leaseServerName || $clientid"

}
}
}


Ответить