Достаточно практичный способ описан в статье
habrahabr.ru/post/141785
Правда пришлось его немного допилить:
1)изменил весовые коэффициенты относительно которых скрипт принимает решение о состоянии конкретного WAN
В моём случае получается что если из четырёх пингуемых узлов доступно менее двух - скрит принимает решение о неиправности WAN.
2) Расписал маршруты до каждого пингуемого узла, чтобы пингуемый узел пинговался через тот WAN для проверки которого он предназначен
Далее все как описанно в статье:
- Создал два NAT
- Остальные три скрипта - как в вышеупомянутой статье
Получившийся набор скриптов четко отрабатывает в моей сети уже около года.
Переходит на резервный WAN при выполнении двух условий (Основной WAN валяется и с резервным всё в порядке)
Если оба вана валяются - скрипт ничего не делает.
Преходит на основной сразу-же как он становится исправным независимо от состояния резерного.
Не рекомендуется использовать этот метод если ван валяется по несколько десяток раз в сутки, т.к. через пару лет может закончится ресурс во Flash памяти в маршрутизаторе. Ведь каждое переключение - это процесс записи и применение новых настроек маршрутизации (метрик NAT-ов).