Netwatch отслеживает состояние хостов в сети посредством ICMP-запросов по заданным адресам. При изменениях состояния хоста netwatch запускает произвольный пакет консольных команд.
Введение
Инструмент netwatch находится в меню
WinBox->Tools->Netwatch
.
Текущее состояние netwatch, в режиме только для чтения:
1 |
/tool netwatch print |
<в разработке>
Пример: Управление ISP
(С) @HawK3D toster.ru
Для повышения точности проверки доступности интернета, для исключения ложных переключений, например, при возможных проблемах на опрашиваемой стороне или кратковременных сбоях в сети, потерянных пакетах и т.п. — используется 2 независимых проверочных адреса (можно использовать адреса различных публичных dns, например Google и Yandex) — x.x.x.x и y.y.y.y Адрес x.x.x.x — указывается в настройках хоста Netwatch, если пинга нет — начинает работать «down», который делает 5 попыток пинга к y.y.y.y и если все 5 попыток также неудачны — скрипт продолжает работу и активирует/деактивирует маршруты в соответствии с comments в таблицах маршрутизации. Первая удачная попытка прерывает дальнейшее выполнение скрипта, при этом никаких изменений маршрутов или других действий не происходит. К этим проверочным ип-адресам прописаны статические маршруты через шлюзы соответствующих провайдеров, а в фаерволе добавлены правила, запрещающие исходящий пинг на эти адреса через другие интерфейсы.
В скрипт добавлен вывод сообщений в лог, а также отправка СМС с информацией о том с каким провайдером и в какое время возникла проблема. Отправка СМС реализована с помощью сайта sms.ru.
api_id=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX — уникальный id — выдаваемый при регистрации на sms.ru
to=79********* — номер телефона, на который осуществляется отправка СМС. Если в качестве номера указывается тот же, что и при регистрации на сайте — 5 СМС в сутки бесплатно.
Скрипт события Down
1 2 3 4 5 6 7 8 9 |
/log warning "server x.x.x.x fail…" :local time [/sys clock get time] :local checkip [/ping y.y.y.y count=5] :if (checkip = 0) <span class="hljs-keyword">do</span>={ /<span class="hljs-keyword">log</span> <span class="hljs-keyword">error</span> «ISP1 <span class="hljs-keyword">IS</span> DOWN» /ip route <span class="hljs-keyword">set</span> [find <span class="hljs-keyword">comment</span>=<span class="hljs-string">"main"</span>] disabled=yes /ip route <span class="hljs-keyword">set</span> [find <span class="hljs-keyword">comment</span>=<span class="hljs-string">"reserve"</span>] disabled=<span class="hljs-keyword">no</span> :delay <span class="hljs-number">1</span> /tool <span class="hljs-keyword">fetch</span> <span class="hljs-keyword">url</span>=<span class="hljs-string">"http://sms.ru/sms/send?api_id=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&to=79*********&text=ISP1_IS_DOWN_$time"</span> <span class="hljs-keyword">keep</span>-<span class="hljs-keyword">result</span>=<span class="hljs-keyword">no</span> } |
Скрипт события Up
1 2 3 |
/log warning «ISP1 IS UP» /ip route set [find comment="reserve"] disabled=yes /ip route <span class="hljs-keyword">set</span> [find <span class="hljs-keyword">comment</span>=<span class="hljs-string">"main"</span>] disabled=<span class="hljs-keyword">no</span> |
Источники
- Руководства:Инструменты (Tools)/Netwatch wiki.mikrotik.com
- Как работает mikrotik netwatch? toster.ru