MikroTik. Скрипт контроля мобильного Интернет’а

Скрипт контроля работы мобильного Интернет’а (3G/4G) на MikroTik (обновлённая версия моего старого скрипта). Если Интернет недоступен то перезагружается модем и отправляется отчёт на email.

MikroTik. Скрипт контроля мобильного Интернет’а

Обновление от 24/09/2018, Версия 1.1.1:

  • Увеличен таймер ожидания загрузки модема после процедуры USB Power Reset (с 30 сек до 50) для последующего тестирования доступности Интернет’а. Некоторые модемы с прошивкой HiLink загружаются дольше чем 30 сек (Обсуждение этой проблемы: https://2keep.net/mikrotik-mobile-internet-check/#comment-466).

Обновление от 17/02/2018, Версия 1.1.0:

  • Добавлена поддержка модемов с HiLink прошивкой (подробнее читайте в комментариях в скрипте).
  • Добавлена проверка правильности указания интерфейса ‘ifName’ и типа модема ‘modemType’.

Скрипт рассчитан на работу как с модемом со Stick прошивкой (PPP соединением) так и на работу в ограниченном режиме с HiLink модемом. Модем может быть с USB интерфейсом или Mini-PCI. Стандарт мобильной связи модема неважен (2G, 3G или 4G, а в будущем хоть 5G).

Функции скрипта

  • Проверяет загрузку процессора в течении указанного времени. Если загрузка 100% — отправляется отчёт на email и перезагружается Mikrotik.
  • Проверка наличия WLAN интерфейса. Если интерфейса нет — отправляется отчёт на email и перезагружается Mikrotik (Как-то давно, были у меня проблемы на старом Mikrotik — исчезали Wi-Fi интерфейсы. Помогала только перезагрузка. Проблемы такой давно нет, но данную функцию оставил).
  • Проверка наличия маршрута по умолчанию. Если его нет, то перезагружается по питанию USB модем (если функция поддерживается), перезапускается PPP соединение (Stick модем) и отправляется отчёт на email. Бывало у меня, что PPP соединение поднято, но маршрут по умолчанию исчезает. Не знаю, кто был виноват, модем или Mikrotik.
  • Проверка наличия трафика на интерфейсе USB модема. Если трафик есть, то дальнейшие проверки PINGами доступности Интернета не проводятся. Это сделано для того, что бы когда канал забивался на 100% (например из-за Torrent) и ICMP пакеты терялись, скрипт не считал, что интернет недоступен и не перезапускал соединение. Иначе он будет перезапускать соединение по кругу, пока на 100% занят канал в Интернет.
  • Если трафика на интерфейсе модема нет, то производится тестирование соединения используя ICMP протокол (ping). Если недоступны сразу ДВА хоста, то перезагружается по питанию USB модем (если функция поддерживается), перезапускается PPP соединение (Stick модем) и отправляется отчёт на email. Реализована проверка на ошибки написания адреса хоста или ошибки резлова IP по доменному имени. В моём старом скрипте, такой проверки не было и могла произойти ошибка резолва IP по домену когда недоступен DNS сервер и скрипт останавливал свою работу.
  • Отправка отчета на email о состоянии USB модема и сети сотового оператора (для Stick модема). В отчёт входит: средний уровень сигнала мобильной сети (RSSI измеряется в течении 10 секунд и вычисляется среднее значение), название оператора, технология подключения к сети, модель модема, LAC, CID и др. Также на email отправляется прикрепленный файл с лог файлом Mikrotik.

Данный скрипт, это обновлённая версия моего скрипта для проверки работы мобильного Интернета, написанного в 2014 году. В данной статье я не буду подробно рассказывать как установить скрипт, настроить отправку почты, создать правило в планировщике. Если у вас возникают с этим проблемы, почитайте мою предыдущую статью на эту тему, там всё разжёвано:  Скрипт контроля качества 3G Интернет’а на MikroTik

 

В сущности, это не один, а два скрипта:

  1. healthCheck — скрипт проверки работы мобильного Интернета. Данный скрипт, с помощью планировщика запускается каждые 5 минут и выполняет тестирование мобильного Интернета.
  2. modemStatus — скрипт вызывается из скрипта «healthCheck» и выполняет опрос модема со Stick прошивкой, получая с него следующие данные: состояние модем, технология подключения к сети (3G, 4G), оператор, средний уровень сигнала RSSI и др. Для модема типа HiLink данный скрипт не нужен, т.к. с HiLink модема невозможно получить информацию.

Если используется модем со Stick прошивкой, то в MikroTik необходимо установить два скрипта.

В комментариях в скриптах, я постарался по максимуму описать алгоритм их работы. В случае необходимости, это вам поможет подправить скрипты под свои задачи.

Скрипт healthCheck

С помощью планировщика скрипт «healthCheck» запускается каждые 5 минут и выполняет тестирование Интернета.

Обратите внимание на параметр «usbReset». Включайте его только если ваш Mikrotik поддерживает функцию USB Power Reset (читайте комментарии в скрипте).

Скрипт modemStatus

Используется только для модемов со Stick прошивкой.

Скрипт «modemStatus» вызывается из скрипта «healthCheck» и выполняет опрос модема для получение информации о его состоянии и параметрах сети сотового оператора.

Вкратце по другим настройкам

Настройка email

Добавление в планировщик запуск скрипта

Скрипты «healthCheck» и «modemStatus» добавляйте в MikroTik через WinBox, там проще.

Если возникнут вопросы по данным процедурам, почитайте мою предыдущую статью на эту тему, там всё разжёвано:  Скрипт контроля качества 3G Интернет’а на MikroTik

Примеры отчётов приходящих на email

Нет маршрута по умолчанию

Недоступны хосты

P.S.

Скрипт опубликованный в данной статье, это упрощённая версия скрипта, используемого мной для своих задач. В скрипте, что использую я, более сложная логика реакции на возникающие проблемы с Интернет’ом, но в связи с этим, он сложнее и больше.

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

 

The following two tabs change content below.
В профессиональной сфере занимаюсь всем, что связанно с IT. Основная специализация - VoIP и сети передачи данных. Стараюсь не заниматься Windows серверами (но иногда приходится) и 1С.

MikroTik. Скрипт контроля мобильного Интернет’а: 19 комментариев

    1. Андрей Торженов Автор записи

      hilink модемом Mikrotik управлять не может. Не может он с него получить и уровни сигнала, и разорвать соединение и т.д. Единственное что можно, это перезагрузить питание usb, если Mikrotik это поддерживает.

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

  1. Windows LiveUser

    Добрый день! Использую модем HILINK. Установил скрипт, а он в логе вон что пишет. Отсутствует Stick и останавливает выполнение скрипта. Подскажите, что надо поправить.
    2 вопрос: настроил почту ya.ru, добавил свои данные. А на какой адрес будет приходить оповещения? На этот же? Получается будет отправлять сам себе?

    Прикрепленный файл:

  2. Windows LiveUser

    Со скриптом разобрался. Не поправил кое что. Но правда, на мой адрес логи не отправляет, хотя тестовое письмо я пробовал, отправляется. Проверял так: на самом хайлинк отключил сеть- ждал 10 минут, ничего после подключения к интернету не пришло.

    1. Андрей Торженов Автор записи
      1. Скрипт запускается планировщиком?
      2. Что в логах?

      Упрощенная логика скрипта такая:

      Пингует заданные узлы, если они недоступны, то перезагружает модем, опять тестирует доступность узлов, если они стали доступны, то отправляется email с отчётом.

      В вашем случае, вы отключили интернет сами, скрипт его пытается тестировать, выключает/включает модем, но инет не появляется… он и не отправляет отчёт, интернета то нет… как он его отправит?

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

        1. Windows LiveUser

          Вот scheduler . Все настроено. Делал через терминал Вашу команду. Если у Вас группа в телеграмме допустим или ник куда я смогу задать пару вопросов? Сюда не очень удобно писать.

          Прикрепленный файл:

          1. Андрей Торженов Автор записи

            Например из консоли

            Или через web/winbox

    1. Андрей Торженов Автор записи

      Программирование процесс творческий… будет вдохновение — сделаю.

      У меня есть готовый скрипт, который я сам использую. Там это реализовано, но он сложнее и нет поддержки hilink. Его тоже дописывать надо.

      А зачем вам этот отчёт? Основная задача скрипта — автоматически восстановливать работу интернета в случае зависания модема, а не отчёты.

      Отчёты на функциональность не влияют.

          1. Windows LiveUser

            Спасибо! Все работает корректно! Поначалу в логах красным писало ошибку. Разобрался: в параметре
            :log warning «Wait 30 sec to modem boot»;
            :delay 30;
            }
            :delay 20;
            Вместо 20 поставил 40. Видимо письмо пытался отправить без соединения с интернетом. Увеличил до 40 — все полетело! спасибо!

            Прикрепленный файл:
             

          2. Андрей Торженов Автор записи

            Значит модем hilink дольше загружается чем со stick прошивкой.

            Внёс изменения в скрипт с учётом данной особенности. Увеличил таймер.

Добавить комментарий