Доброго с=времени суток!
Нарисовал скрипт... всякие проверки, переключения и прочее. Работать должен! НО!!! Не работает. Суть такова.
В начале скрипта есть команда:
# Пингуем Инет через основной интерфейс
:set WanStatus ([/ping 8.8.8.8 interface=ether1 count=3]+[/ping 77.88.8.8 interface=ether1 count=3]);
Если маршрут по умолчанию дохлый, то есть пинги не проходят, то я включаю альтернативный маршрут и поднимаю "вес" неработающего маршрута. Типа...
# Вес=110... работает PiterTelecom. Вес=120... работает ComLink. Вес=200... нифига не работает.
То есть. Альтернативные маршруты имеют вес = 100. А вот основной, меняю в зависимости от того, что доступно из оставшегося. (Изначально, основной маршрут = 1).
Так вот. Если основной канал падает, то легко и непринуждённо запускается альтернативный. Работает сие стабильно - переключает на альтернативный маршрут, который "живой".
А вот обратно - НИ КАК! Я все время пытаюсь проверить, что основной маршрут поднялся. Но, через него не пингуется... несмотря на то, что ЯВНО указан интерфейс, через который пинговать. В итоге, если основной канал поднялся, все равно, обратного переключения не происходит... ибо, пинги не проходят
Вес альтернативного маршрута = 100 (через ether3)
Вес основного маршрута = 110 (через ether1)
Команда /ping 8.8.8.8 interface=ether1 count=3 возвращает - timeout.
Чем еще можно проверить, что интерфейс живой и готов работать?
Не могу контролировать состояние канала
-
- Сообщения: 13
- Зарегистрирован: 27 июл 2020, 12:20
... то есть, до строк скрипта ниже, выполнение не доходит.
# Если пинги пошли, но при этом вес основного маршрута отличается от "1", то возвращаем все параметры на место... "как было".
# Вес маршрута, "distance", меняем при проверке доступных альтернативных маршрутов.
# Вхождение в этот IF только при условии отработки переключения на альтернативные маршруты.
:if ($WanStatus>0 and [/ip route get [find comment ="Main Route"] distance]>1) do={
/ip route set [find comment ="Main Route"] distance=1
:delay 5s
/ip route set [find comment="Alt Route PT"] disable=yes
/ip route set [find comment="Alt Route CL"] disable=yes
tool e-mail send to=mail@server.local subject="Status of Main Route (Mikrotik R1)" body="Main Route is UP! Full functionality has been restored."
};
# Если пинги пошли, но при этом вес основного маршрута отличается от "1", то возвращаем все параметры на место... "как было".
# Вес маршрута, "distance", меняем при проверке доступных альтернативных маршрутов.
# Вхождение в этот IF только при условии отработки переключения на альтернативные маршруты.
:if ($WanStatus>0 and [/ip route get [find comment ="Main Route"] distance]>1) do={
/ip route set [find comment ="Main Route"] distance=1
:delay 5s
/ip route set [find comment="Alt Route PT"] disable=yes
/ip route set [find comment="Alt Route CL"] disable=yes
tool e-mail send to=mail@server.local subject="Status of Main Route (Mikrotik R1)" body="Main Route is UP! Full functionality has been restored."
};
-
- Сообщения: 125
- Зарегистрирован: 18 мар 2021, 12:45
Ничего не понятно из Вашего описания
Скрипт целиком выкладывайте, а проще не заниматься ерундой и настроить рекурсивную маршрутизацию...
Скрипт целиком выкладывайте, а проще не заниматься ерундой и настроить рекурсивную маршрутизацию...