MikroTik Скрипты: Обнаружение неизвестного DHCP сервера в сети

Настройка обнаружения в сети неизвестного DHCP сервера и отправка уведомления в Telegram или на электронную почту. Отправляется имя DHCP интерфейса на котором обнаружен сервер, IP и MAC адреса неавторизованного устройства.

Иногда происходит ситуация, когда сотрудник подключает к локальной сети предприятия личный роутер, с включенным DHCP сервером, что может вызвать проблемы получения новых IP адресов устройств в локальной сети. Причем проблемы могут обнаруживаться не сразу, а когда истекает аренда IP адресов.

Для быстрого уведомления о появлении неавторизованного DHCP сервера в локальной сети используйте настройку Alerts в настройках DHCP сервера.

Статья на других языках:
?? — MikroTik Scripts: Discover Unknown DHCP Server on the Network
?? — Scripts MikroTik: Descubre un servidor DHCP desconocido en red
?? — Scripts MikroTik: Découverte d’un serveur DHCP inconnu sur le réseau
?? — MikroTik-Skripte: Erkennen Sie unbekannte DHCP-Server im Netzwerk
?? — MikroTik-scripts: Detectie van een onbekende DHCP-server op het netwerk

Создать предупреждение

Начальные данные:

  • Interface: bridge1-lan — название интерфейса DHCP сервера;
  • Valid Servers: 64:D1:54:52:6C:36 — MAC адрес интерфейса DHCP сервера (bridge1-lan);
  • Alert Timeout: 10 минут — интервал проверки неавторизованного DHCP сервера и отправка уведомления.

Настраиваем предупреждение:

[IP] -> [DHCP Server] -> [Alerts] -> [+] -> [Interface: bridge1-lan] -> [Valid Servers: 64:D1:54:52:6C:36] -> [Alert Timeout: 00:10:00]

Я рекомендую в окне Alert вызывать скрипт проверки, а не размещать текст скрипта. Если скрипты размещаются в одном месте [System] -> [Scripts] это улучшает удобство управления устройством, чем размещение скриптов в определенных настройках устройства.

Код вызова скрипта:

/system script run DiscoverUnknownDHCPServer
Создать предупреждение DHCP сервера

Скрипт: Обнаружить неизвестный DHCP сервер и отправить сообщение в Telegram

Для отправки Telegram сообщения, я использую вызов функции — MikroTik Скрипты: Отправка сообщения в Telegram (функция).

Пример Телеграм уведомления от MHelp.pro
Пример Телеграм уведомления от MHelp.pro

Создаем скрипт:

[System] -> [Scripts] -> [+] -> [Name: DiscoverUnknownDHCPServer] -> [Policy: read, write, polisy, test]

Код скрипта:

# Find DHCP Alert 
:local CurrentTime [/system clock get time];
:local MsgID [/log find where message ~"dhcp alert" time =$CurrentTime];
:local MsgText [/log get number=$MsgID message];

# Send Telegram Message
:local DeviceName [/system identity get name];
:local MessageText "\F0\9F\94\B4 <b>$DeviceName: UNKNOWN DHCP SERVER FOUND! </b> Info: $CurrentTime $MsgText";
:local SendTelegramMessage [:parse [/system script  get MyTGBotSendMessage source]];
$SendTelegramMessage MessageText=$MessageText;
MikroTik Скрипты: Обнаружение неизвестного DHCP сервера в сети

Скрипт: Обнаружить неизвестный DHCP сервер и отправить сообщение на почту

Для отправки Telegram сообщения, я использую вызов функции — MikroTik Скрипты: Отправить письмо и файл на почту (функция)

Пример электронного письма уведомление от MHelp.pro
Пример электронного письма уведомление от MHelp.pro

Создаем скрипт:

[System] -> [Scripts] -> [+] -> [Name: DiscoverUnknownDHCPServer] -> [Policy: read, write, polisy, test]

В данном скрипте не используется отправка файла, поэтому параметру FileName присваивается пустое значение «».

Код скрипта:

# Find DHCP Alert 
:local CurrentTime [/system clock get time];
:local MsgID [/log find where message ~"dhcp alert" time =$CurrentTime];
:local MsgText [/log get number=$MsgID message];

# Send Email
:local DeviceName [/system identity get name];
:local Time [/system clock get time];
:local Date [/system clock get date];

:local SendTo "mail@mail.com";
:local Subject "\F0\9F\94\B4 CRITICAL: $DeviceName [$Date $Time] UNKNOWN DHCP SERVER FOUND!";
:local MessageText "$MsgText";
:local FileName "";

:local SendEmail [:parse [/system script get SendEmailFunction source]];
$SendEmail SendTo=$SendTo TextMail=$MessageText Subject=$Subject FileName=$FileName;
Скрипт: Обнаружить неизвестный DHCP сервер и отправить сообщение на почту

Скрипт в одну строку

Отправка уведомления о неизвестном DHCP сервере в Телеграм:

/tool fetch url="https://api.telegram.org/bot<BotToken>/sendMessage\?chat_id=<GroupID>&text=Unknown DHCP server on interface: $interface (IP: $address, MAC:$"mac-address")" keep-result=no;

Отправка уведомления о неизвестном DHCP сервере на электронную почту:


/tool e-mail send to=dest_mail@mail.com server=[:resolve "smtp.mail.com"] port=465 start-tls=tls-only user="my_mail@mail.com" password="Pa$$woRD"  from="my_mail@mail.com" subject="$[/system identity get name] UNKNOWN DHCP SERVER FOUND!" body="Unknown DHCP server on interface: $interface (IP: $address, MAC:$"mac-address")"

? Как обнаружить появление неизвестного DHCP сервера в локальной сети (проблема в небольших сетях) и отправить уведомление в Telegram или электронной почтой обсуждалось в этой статье . Я надеюсь, что быстрый способ узнать о появлении неавторизованного DHCP сервера в локальной сети, позволит вам отреагировать быстрее и облегчит вашу работу. Однако, если вы столкнетесь с каким-то проблемами при настройке, не стесняйтесь написать в комментариях. Я постараюсь помочь.

Оставьте комментарий