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

    Рейтинг
    ( Пока оценок нет )
    Загрузка ...