Можно написать отдельный скрипт, но проще в netwatch настроить дополнительную проверку. Для повышения точности проверки доступности интернета, для исключения ложных переключений, например, при возможных проблемах на опрашиваемой стороне или кратковременных сбоях в сети, потерянных пакетах и т.п. — используется 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»:
/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) do={
/log error «ISP1 IS DOWN»
/ip route set [find comment="main"] disabled=yes
/ip route set [find comment="reserve"] disabled=no
:delay 1
/tool fetch url="http://sms.ru/sms/send?api_id=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&to=79*********&text=ISP1_IS_DOWN_$time" keep-result=no
}
«up»:
/log warning «ISP1 IS UP»
/ip route set [find comment="main"] disabled=no
/ip route set [find comment="reserve"] disabled=yes