Netwatch mikrotik настройка Telegram

Ранее в блоге я уже писал о том, как можно осуществлять удаленное управление устройствами Mikrotik под управлением RouterOS при помощи SMS-команд. Тогда же мы рассматривали возможность отправки SMS-уведомлений администратору при отключении основного интернет канала и переключении на 3G-модем.

У меня, как и ранее, нет свободного времени, чтобы адаптировать скрипт «Advanced Failover» под свежие версии RouterOS, так что за это я извиняюсь. По возможности в свободное время займусь.
Сегодня мне бы хотелось поговорить об альтернативе классическим SMS-уведомлениям. В частности, о варианте с отправкой Push-уведомлений прямо на смартфон, планшет или даже ПК (PC, Mac, macOS, Linux). Все это без использования платных сервисов-посредников с минимальными затратами времени.

Хотите научиться работать с MikroTik? В этом поможет углубленный курс по администрированию MikroTik. Получите демо-доступ к этому курсу бесплатно.

В данном варианте реализации речь пойдет о сервисе Telegram у которого есть удобный API для управления ботами. На данный вариант я наткнулся чисто случайно, т.к. до недавнего времени про сам Telegram я, конечно же, слышал, но только в общих чертах и сам с ним не сталкивался.

Начинаем работу с Telegram

Первым делом качаем официальное мобильное приложение Telegram, создаем аккаунт. Все ссылки вы можете найти на официальном сайте.

После того, как аккаунт создан, при помощи поиска необходимо найти контакт «BotFather» — это главный бот, при помощи которого можно создавать новых ботов и управлять уже существующими. При желании, боту можно будет поменять имя, а также загрузить для него аватар.
Дальнейшее «общение» с ботом будет происходить в виде текстовых команд. Для создания нового бота, выполните команду:

/newbot

После ввода и отправки данной команды, главный бот запросит отображаемое имя, в нем допускаются пробелы и произвольный формат самого названия.

После указания имени, бот запросит желаемый %username%. При выборе %username% обязательным условием является суффикс «bot» в конце имени, например MikrotikBot или Mikrotik_bot.
Если всё прошло успешно, бот-отец ответит сообщением, содержащим специальный token для доступа к API. Сам токен состоит из двух частей, разделенных двоеточием, например:

12558568:Hgsgf74tv7efcdfvhdvhfvcbn65imghmj

Следующим шагом рекомендуется проверить доступность API для вашего бота, делается это в браузере, путем открытия специального URL:

https://api.telegram.org/bot/getMe

Система возвращает ответы в формате JSON, в коде ответа должен присутствовать параметр «ok: true», если он есть — API доступен.
Собственно бот почти готов, осталось только научить Mikrotik отправлять сообщения, используя API Telegram.
Перед тем, как приступить к настройке RouterOS, необходимо узнать ID чата. При помощи мобильного приложения отправляем нашему боту команду:

/start
После чего, в браузере открываем специальный URL:
https://api.telegram.org/bot/getUpdates

В ответе нас интересует параметр message=>chat=>id, в нем хранится уникальный идентификатор чата между вами и созданным ботом. По сути, это ваш идентификатор как пользователя, он будет идентичен для всех ботов в рамках одного аккаунта.

Отправка тестового Telegram-сообщения

Теперь у нас есть все необходимое для того, чтобы отправлять сообщения при помощи API. Отправка сообщений осуществляется при помощи браузера, по специально сформированной ссылке, которая имеет следующий вид:

https://api.telegram.org/bot/sendMessage?chat_id=

  • — уникальный идентификатор чата, в который будет отправлено сообщение;
  • — текст сообщения;
  • Tutorial — Script Mensagem Bot Telegram Mikrotik (PPPoE UP/Down — Ping Netwatch)

    Уведомления в telegram с вашего роутера mikrotik | UnixHost

    Отправляем сообщения из Mikrotik RouterOS

    Отправить сообщение из RouterOS не составит особых трудностей. Для этого можно воспользоваться следующим кодом:

    tool fetch url=»https://api.telegram.org/bot/sendMessage?chat_id= dst-path=telegram.txt

    Для отладки, вы можете воспользоваться стандартными возможностями System — Scripts. Вот собственно и все, остальное за вами.
    Как вариант, данную систему уведомлений можно комбинировать с USB-модемом. Например, при отключении основного интернет-канала, Mikrotik может отправить уведомление, используя резервный канал. При этом данный метод совершенно бесплатен, в отличие от обычных SMS, за которые оператор взымает плату. Единственное ограничение — доступ к Интернет на самом Mikrotik и конечном устройстве с приложением Telegram (для отправки и получения).
    Лично я использую Telegram API в связке со встроенным инструментом Netwatch, он предельно прост в использовании и настройке.

    Источник: xn——xlcfvffioc4g.xn--p1ai

    Управление Mikrotik с помощью Telegram бота

    Вариант подойдет для блокировки и разблокировки интернета на домашних устройствах (ПК, ТВ приставки и прочие гаджеты) например чтобы дети сделали перерыв или пошли делать уроки. Можно конечно скачать приложение Mikrotik на смартфон, но каждый раз возится в настройках Kid Control и правилах Firewall не очень удобно, а с ботом почувствовать себя властелином интернета сможет даже жена

    Создаем бота в Telegram

    Далее идем на Mikrotik в раздел System, выбираем Scripts и добавляем туда скрипты, основной и команд, которые он будет выполнять

    :delay 15 :global mtIdentity [/system identity get name]; :global botID «bot»; :global myChatID «»; :local chatId 0; :local messageId 0; :local parse do=< :local startLoc ([:find $content $variable -1] + [:len $variable] + 2); :local commaLoc ([:find $content «,» $startLoc] — 1 + 1); :local braceLoc ([:find $content «>» $startLoc] — 1 + 1); :local endLoc $commaLoc; :local startSymbol [:pick $content $startLoc] :if ($braceLoc != 0 and ($commaLoc = 0 or $braceLoc < $commaLoc)) do=< :set endLoc $braceLoc; >; :if ($startSymbol = «<«) do=< :set endLoc ($braceLoc + 1); >; :if ($quotas = true) do= < :set startLoc ($startLoc + 1); :set endLoc ($endLoc — 1); >:if ($endLoc < $startLoc) do=< :set endLoc ($startLoc + 1); >; :local message [:pick $content $startLoc $endLoc] #:log info $message; :return $message; > :while ( true ) do= < :do < #:log info «https://api.telegram.org/$botID/getUpdates?offset=$messageIdallowed_updates=message; :tool fetch url=(«https://api.telegram.org/$botID/getUpdates?offset=$messageIdallowed_updates=message) dst-path=»getUpdates»; :local content [/file get [/file find name=getUpdates] contents] ; #:log info $content; :if ([:len $content] >30) do= < :set messageId ([$parse content=$content variable=»update_id»] + 1) :local message [$parse content=$content variable=»text» quotas=true] :local chat [$parse content=$content variable=»chat»] :local chatId [$parse content=$chat variable=»id»] :if (($chatId = $myChatID) and ([/system script find name=$message] != «»)) do=< :system script run $message; >else= < :tool fetch url=(«https://api.telegram.org/$botID/sendmessage?chat_id=$chatId) keep-result=no >> > on-error=<> >;

    В нем необходимо заменить значения botID на токен который мы получили при создании бота и myChatID, получить его можно перейдя по ссылке:

    Далее создаем дополнительные скрипты, их названия должны соответствовать командам меню который мы создали в Telegram боте

    Скрипт включающий правило блокировки

    /ip firewall filter set [find comment=»PC»] disabled=no tool fetch url=»https://api.telegram.org/bot/sendMessage?chat_id=

    Скрипт выключающий правило блокировки

    /ip firewall filter set [find comment=»PC»] disabled=yes tool fetch url=»https://api.telegram.org/bot/sendMessage?chat_id=

    Создаем правило блокировки в Firewall и задаем комментарий указанный в скрипте выше

    Устройствам с динамическими IP адресами необходимо сделать их статическими, для этого нужно зайти в раздел IP, далее DHCP Server и перейти на вкладку Leases, выбрать устройство нажать кнопку Make Static

    Можно проверять работу бота

    Бот для отправки уведомлений

    В компании где я работаю для мониторинга используются Zabbix и прочие системы, но по факту самым удобном средством уведомления о недоступности какого либо сервиса является простой Telegram бот, который подключен к общей группе IT отдела, в которой сразу можно обсудить поступившее сообщение с коллегами

    Создаем бота по примеру выше

    Далее идем на Mikrotik в раздел Tools, выбираем Netwatch и добавляем Host который нам необходимо мониторить

    Создаем два уведомления, одно на UP, другое на DOWN

    tool fetch url=»https://api.telegram.org/bot/sendMessage?chat_id=
    tool fetch url=»https://api.telegram.org/bot/sendMessage?chat_id=

    На этом настройка завершена

    Бонус

    • системное администрирование
    • сетевые технологии
    • mikrotik
    • telegram
    • Системное администрирование
    • Сетевые технологии

    Источник: habr.com

    Настройка резервного канала в MikroTik с уведомлением в Telegram

    Какой тип подключения выбрать в качестве резервного зависит только от желания, финансовой и технической возможности. Требования к скорости не большие и зависит от того, каким устройствам необходим постоянный доступ к сети. Если не использовать постоянный доступ для торрент обмена, то в качестве резервного канала можно использовать USB LTE модем с лимитированным трафиком.

    • Входные данные
    • Настройка
    • Мониторинг и переключение каналов

    Входные данные

    Имеется MikroTik RB4011 с настройками:

    • Основной интернет канал 100МБит, внешний IP, интерфейс ether1
    • Резервный интернет канал 10МБит, интерфейс ether2
    • OpenVPN подключение к внешней VPS, интерфейс vpn-ovpn
    • Туннель 6to4 для IPv6 трафика, v6to4-tunnel

    Необходимо при разрыве основного канала пустить весь трафик по резервному, переподключить VPN, погасить туннель 6to4 и прислать уведомление в телеграмм.

    Настройка

    Для удобства переименовываем названия портов ether1 и ether2 в ether1-wan-main и ether2-wan-reserv

    /interface ethernet set ether1 name=»ether1-wan-main» /interface ethernet set ether2 name=»ether2-wan-reserv»

    Если IP адреса для основного и/или резервного канала прилетают по DHCP, то в настройках DHCP Сlient’а необходимо для каждого интерфейса выставить параметр Add Default Route — no .

    mikrotik dhcp client set default route no

    Добавляем маршруты по умолчанию, маршрут основного канала будет иметь дистанцию (distance) 1, резервного 2:

    /ip route add dst-address=0.0.0.0/0 gateway=100.99.88.1 distance=1 comment=»MAIN_CHAN» /ip route add dst-address=0.0.0.0/0 gateway=10.9.8.1 distance=2 comment=»RESERV_CHAN»

    где: gateway=100.99.88.1 — шлюз для основного канала, gateway=10.9.8.1 — шлюз для резервного канала. Неактивный маршрут резервного канала будет выделен синим цветом.

    mikrotik main routes

    Для мониторинга состояния каналов будет задействована утилита Netwatch (Tools -> Netwatch), в качестве хостов наблюдения будут использованы DNS сервера Яндекс, адрес 77.88.8.8 будет использоваться для проверки работоспособности основного канала, 77.88.8.1 — для резервного.

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

    /ip route add dst-address=77.88.8.8 gateway=100.99.88.1 distance=1 comment=»Yandex DNS — Check main internet channel» /ip route add dst-address=77.88.8.1 gateway=10.9.8.1 distance=1 comment=»Yandex DNS — Check reserv internet channel»

    mikrotik routes for yandex dns

    В Firewall (IP -> Firewall) добавляем запрещающие правила на прохождение пакетов к проверяемым адресам не через свой канал, на случай, если канал отсохнет, то маршрут использующий этот канал станет не активным и будет задействован текущий маршрут по умолчанию. Эти правила необходимо расположить выше правил разрешающих доступ в интернет.

    /ip firewall filter add chain=output dst-address=77.88.8.1 out-interface=ether1-wan-main action=reject /ip firewall filter add chain=output dst-address=77.88.8.8 out-interface=ether2-wan-reserv action=reject

    mikrotik firewall reject yandex dns for check channels

    Мониторинг и переключение каналов

    Как говорилось выше, в качестве мониторинга будет использоваться утилита Netwatch . Настройка этой утилиты крайне проста, задается хост наблюдения и интервал через какое время необходимо выполнять проверку, при переходе наблюдаемого хоста из состояния Down в состояние Up выполняются скрипты с вкладки UP , при переходе из состояния Up в состояние Down выполняются скрипты с вкладки DOWN .

    Для отправки уведомлений в Telegram ботом будет задействована утилита fetch . Как известно боту может быть отправлено сообщение через URL вида https://api.telegram.org/bot[API_KEY]/sendMessage?chat_id=[CHAT_ID] Netwatch -> +).

    • Host: 77.88.8.8
    • Interval: 00:01:00
    • Timeout: 1000

    /ip route enable [find comment=»MAIN_CHAN»] /interface enable v6to4-tunnel /ip dns cache flush /interface disable vpn-ovpn :delay 3s /interface enable vpn-ovpn :delay 5s /tool fetch url=»https://api.telegram.org/bot123456789:ABCDEFGHIJKLMNOPQRabcdefghijklmnopq/sendMessage?chat_id=12345678 /file remove «sendMessage?chat_id=12345678;
    /ip route disable [find comment=»MAIN_CHAN»] /interface disable v6to4-tunnel /ip dns cache flush /interface disable vpn-ovpn :delay 3s /interface enable vpn-ovpn :delay 5s /tool fetch url=»https://api.telegram.org/bot123456789:ABCDEFGHIJKLMNOPQRabcdefghijklmnopq/sendMessage?chat_id=12345678 /file remove «sendMessage?chat_id=12345678;

    Каждую минуту происходит проверка хоста с IP адресом 77.88.8.8, как только происходит смена состояния из доступен в недоступен, то начинается обработка скрипта, описанного на вкладке DOWN. Комментарии:

    1. В таблице маршрутизации отключается маршрут с комментарием MAIN_CHAN , это наш основной маршрут с distance=1 . Т.к. основной маршрут отключен, то активным становится маршрут с distance=2 , у нас он отмечен комментарием RESERV_CHAN , весь трафик пойдет в резервный канал.
    2. Отключается туннель 6to4 т.к. он завязан на внешний IP адрес основного канала.
    3. Сбрасывается DNS cache, т.к. помимо IPv4 трафика используется IPv6 канал и на какие-то ресурсы в кэше будут записи на IPv6 адреса.
    4. Отключается и через 3 секунды включается OpenVPN соединение, перезагрузка сделана на случай более быстрого переключения и избежания подвисаний.
    5. Отправка сообщения в Telegram
    6. После отправки в папке Files создается файл, удаляем его

    Аналогичная ситуация происходит на вкладке UP при переходе хоста с IP адресом 77.88.8.8 из состояния Down в состояние Up.

    Для проверки резервного канала в Netwatch добавляем (Tools -> Netwatch -> +).

    • Host: 77.88.8.1
    • Interval: 00:01:00
    • Timeout: 1000

    /ip route enable [find comment=»RESERV_CHAN»] /ip dns cache flush /interface disable vpn-ovpn :delay 3s /interface enable vpn-ovpn :delay 5s /tool fetch url=»https://api.telegram.org/bot123456789:ABCDEFGHIJKLMNOPQRabcdefghijklmnopq/sendMessage?chat_id=12345678 /file remove «sendMessage?chat_id=12345678;
    /ip route disable [find comment=»RESERV_CHAN»] /ip dns cache flush /interface disable vpn-ovpn :delay 3s /interface enable vpn-ovpn :delay 5s /tool fetch url=»https://api.telegram.org/botbot123456789:ABCDEFGHIJKLMNOPQRabcdefghijklmnopq/sendMessage?chat_id=12345678 /file remove «sendMessage?chat_id=12345678;

    Действия в случае неполадок с резервным каналом аналогичные, как и для основного, не затрагивается только 6to4 туннель.

    Источник: stupidhouse.ru

    Оцените статью
    Добавить комментарий