[Из песочницы] Mikrotik — Дополнительные настройки для Yota

Не так давно подключили дополнительного провайдера в виде беспроводной йоты, простого «свистка». Имеем Mikrotik CCR1009–8G-1S-1S+, на котором есть usb. Но возникла проблема, йота периодически зависает и пока не перезагрузишь — ничего не работает. Обращался в техническую поддержку Йоты, предложили купить роутер Zyxel, либо поставить между йотой и микротиком устройство которое будет отключать и включать электропитание 1 раз в сутки. Покупать дополнительный роутер который будет использоваться для йоты никто не хотел, а ставить переключатель тоже не вариант-вдруг йота подвиснет днем, а переключатель настроен на 23:00. Конечных решений для данной проблемы в ресурсах сети не нашел (а возможно плохо искал). Поэтому решено было настроить автоматический reset yota.
Предварительно в самой йоте настраиваем адрес из отличной от вашей локальной сети. Например я использую сеть 192.168.32.0/24, поэтому адрес йоты выбрал 172.16.0.1.

На интерфейс lte маршрутизатора:

/ip address
add address=172.16.0.10/24 interface=lte1 network=172.16.0.0

Скрипт для переключения йоты и отправки уведомления на почту. Необходимо в меню winbox зайти в /system script, нажать «добавить», дать имя — reboot_yota.

Ниже сам скрипт, тут все понятно.

/system routerboard usb power-reset duration=3 — сбрасывает питание подаваемое к «свистку»
/tool e-mail send server=work.ru port=25 user=router@work.ru password=password to=admin@work.ru from="router1" \
subject="MikroTik: $[/system clock get date], $[/system clock get time]" \

body="Yota reboot: $[/system clock get date]\nDate: $[/system clock get time]\nMyName: $[/system identity get name]:"; — отправляет уведомление на адрес admin@work.ru о том, в какое время и какой роутер сбросил питание йоте.

Далее заходим в Netwatch, данная фича от микротик позволяет мониторить состояние канала через определенные промежутки времени:

/tool netwatch
add down-script=reboot_yota host=172.16.0.1 interval=30s

Видно из правила, что при отсутствии доступности 172.16.0.1- выполняется скрипт. На Up ничего не указываем т.к. в данной ситуации мы следим только за падением канала.

И в дополнение, если вы все таки решили купить белый адрес у йоты, то для этого необходимо правильно настроить правила маркировки и сделать маршруты:

/ip firewall mangle
add action=mark-connection chain=input in-interface=lte1 new-connection-mark=conn_yota_in
add action=mark-routing chain=output connection-mark=conn_yota_in new-routing-mark=out_yota passthrough=no
add action=mark-connection chain=prerouting connection-state=new in-interface=lte1 new-connection-mark=conn-yota-fw
add action=mark-routing chain=prerouting connection-mark=conn-yota-fw in-interface=bridge-local new-routing-mark=route-yota-fw passthrough=no
/ip route
add distance=1 gateway=172.16.0.1 routing-mark=out_yota
add distance=1 gateway=172.16.0.1 routing-mark=inet_for_yota
add distance=1 gateway=172.16.0.1 routing-mark=route-yota-fw

Порты пробрасываются корректно, удаленный доступ к роутеру по внешнему адресу есть. В случае зависания, Yota перегружается и уведомляет об этом администратора. Если есть замечания, дополнения и критика — пишите.

© Habrahabr.ru