MikroTik: failover без скрипт и netwatch за известяване
Две неща вървят заедно, когато рутерът има повече от един изход към света: маршрутът да се прехвърли сам при отпадане и вие да разберете, че се е случило. Първото се прави с четири реда без никакъв скрипт, второто — с netwatch.
Failover с четири реда, без скрипт
Виждал съм failover, реализиран със скрипт, от който не се разбира нищо. Ето прост и напълно работещ вариант с четири реда конфигурация:
/ip route
add check-gateway=ping comment="ISP1 DEFAULT" distance=1 gateway=8.8.4.4
add check-gateway=ping comment="ISP2 ALTERNATIVE" distance=2 gateway=8.8.8.8
add comment="GOOGLE ISP1" distance=1 dst-address=8.8.4.4/32 gateway=10.125.3.1 scope=10
add comment="GOOGLE ISP2" distance=2 dst-address=8.8.8.8/32 gateway=85.118.95.33 scope=10
Логиката: първите два реда са маршрути по подразбиране през два различни адреса за проверка, с различна дистанция. Вторите два казват как се стига до самите адреси за проверка — всеки през своя доставчик, със scope=10, за да не се търсят рекурсивно. Вторият маршрут (ISP2 ALTERNATIVE) стои неактивен и се активира, когато падне пингът към 8.8.4.4.

С няколко маршрутни таблици
Ако имате повече от една маршрутна таблица, проблемът е никакъв — добавя се routing-mark="new_table", както принципно се добавя нова таблица. Така може да имате колкото таблици искате и всичките да са failover.

Netwatch — за да разберете, че се е случило
Failover-ът връща услугата, но мълчаливо. Netwatch може да пише в лога с различно ниво според състоянието на наблюдавания хост — warning при връщане и error при отпадане. Така събитията се открояват цветово от пръв поглед в прозореца Log:
/tool netwatch
add host=8.8.8.8 \
up-script=":log warning \"Ping 8.8.8.8 up\"" \
down-script=":log error \"Ping 8.8.8.8 down\""

И със звук
Ако рутерът има beeper, може да се добави и звук — различна честота за up и down. Полезно, когато шкафът е близо до работното място:
/tool netwatch
add host=93.155.130.37 \
up-script=":log warning \"Ping 93.155.130.37 up\"; :beep frequency=2000 length=1000ms" \
down-script=":log error \"Ping 93.155.130.37 down\"; :beep frequency=4000 length=1000ms"
Едно предупреждение за netwatch
Netwatch по подразбиране проверява често и обявява хоста за паднал при първия неуспешен пинг. При радиовръзка или натоварен канал това дава фалшиви отпадания — логът се пълни, а нищо не е било сбъркано. Ако наблюдавате нещо, което може да трепва, вдигнете interval и не връзвайте тежки действия за down-script.