Вот пример конфигурации, которую я использую для Failover, скрипты не требуются. Используется в продакшене. Сейчас использует статические IP-адреса для шлюза. Вам нужно будет подкорректировать все параметры `gateway=` и `in-interface=` под вашу конфигурацию. Предполагается, что у вас нет правил маршрутизации или других правил маркировки соединений и маршрутизации. После корректировки скопируйте и вставьте в терминал Mikrotik.
Адаптировано с . Измените `gateway=` на правильные IP-адреса шлюза и `in-interface=` в правилах фильтрации пакетов `/ip route`.
Нужны IP-адреса для тестирования, находятся в США. Изменены на менее используемые сайты, но всегда доступные. Если вы их меняете, нужно изменить все соответствующие IP-адреса ниже.
`b.resolvers.Level3.net`
`add dst-address=4.2.2.2 gateway=192.168.10.1 scope=10`
`c.resolvers.Level3.net`
`add dst-address=4.2.2.3 gateway=192.168.202.1 scope=10`
`google-public-dns-a.google.com`
`add dst-address=8.8.4.4 gateway=192.168.10.1 scope=10`
`dns1.rcsntx.sbcglobal.net`
`add dst-address=151.164.1.8 gateway=192.168.202.1 scope=10`
Теперь создадим правила для маршрутизатора ISP1:
маршрутная метка:
`add distance=1 gateway=4.2.2.2 routing-mark=to_ISP1 check-gateway=ping`
`add distance=2 gateway=8.8.4.4 routing-mark=to_ISP1 check-gateway=ping`
Создадим правила для маршрутизатора ISP2:
маршрутная метка:
`add distance=1 gateway=4.2.2.3 routing-mark=to_ISP2 check-gateway=ping`
`add distance=2 gateway=151.164.1.8 routing-mark=to_ISP2 check-gateway=ping`
Создадим "виртуальные" маршруты ISP1 для дальнейшего использования в маршрутах:
`add dst-address=10.8.8.1 gateway=4.2.2.2 scope=10 target-scope=10 check-gateway=ping`
`add dst-address=10.8.8.1 gateway=8.8.4.4 scope=10 target-scope=10 check-gateway=ping`
Создадим "виртуальные" маршруты ISP2 для дальнейшего использования в маршрутах:
`add dst-address=10.4.4.1 gateway=4.2.2.3 scope=10 target-scope=10 check-gateway=ping`
`add dst-address=10.4.4.1 gateway=151.164.1.8 scope=10 target-scope=10 check-gateway=ping`
Добавим маршруты по умолчанию:
`add distance=2 gateway=10.8.8.1 routing-mark=to_ISP1`
`add distance=1 gateway=10.4.4.1 routing-mark=to_ISP2`
Добавим маршруты по умолчанию без маршрутных меток, расстояние 1 для маршрутизатора:
`add distance=2 gateway=10.8.8.1`
`add distance=1 gateway=10.4.4.1`
Добавим "черную дыру" для ошибки RouterOS, если интерфейс выходит из строя (не уверен, нужна ли она в текущей версии RouterOS):
`add dst-address=4.2.2.2 type=blackhole distance=20`
`add dst-address=4.2.2.3 type=blackhole distance=20`
`add dst-address=8.8.4.4 type=blackhole distance=20`
`add dst-address=151.164.1.8 type=blackhole distance=20`
Обязательно установите `in-interface=` для правильных имен интерфейсов.
`/ip firewall mangle`
`add action=mark-connection chain=input comment="mark ISP1_conn" disabled=no in-interface=ether1-gw-att new-connection-mark=ISP1_conn passthrough=yes`
Этот должен быть выходной цепочкой.
`add action=mark-routing chain=output comment="mark routing isp1_conn" connection-mark=ISP1_conn disabled=no new-routing-mark=to_ISP1 passthrough=no`
`add action=mark-routing chain=prerouting comment="mark routing to_ISP1" connection-mark=ISP1_conn disabled=no in-interface=ether5-LAN new-routing-mark=to_ISP1 passthrough=yes`
`add action=mark-connection chain=input comment="mark ISP2_conn" disabled=no in-interface=ether2-gw-tw new-connection-mark=ISP2_conn passthrough=yes`
Этот должен быть выходной цепочкой.
`add action=mark-routing chain=output comment="mark routing isp2_conn" connection-mark=ISP2_conn disabled=no new-routing-mark=to_ISP2 passthrough=no`
`add action=mark-routing chain=prerouting comment="mark routing to_ISP2" connection-mark=ISP2_conn disabled=no in-interface=ether5-LAN new-routing-mark=to_ISP2 passthrough=yes`
Адаптировано с . Измените `gateway=` на правильные IP-адреса шлюза и `in-interface=` в правилах фильтрации пакетов `/ip route`.
Нужны IP-адреса для тестирования, находятся в США. Изменены на менее используемые сайты, но всегда доступные. Если вы их меняете, нужно изменить все соответствующие IP-адреса ниже.
`b.resolvers.Level3.net`
`add dst-address=4.2.2.2 gateway=192.168.10.1 scope=10`
`c.resolvers.Level3.net`
`add dst-address=4.2.2.3 gateway=192.168.202.1 scope=10`
`google-public-dns-a.google.com`
`add dst-address=8.8.4.4 gateway=192.168.10.1 scope=10`
`dns1.rcsntx.sbcglobal.net`
`add dst-address=151.164.1.8 gateway=192.168.202.1 scope=10`
Теперь создадим правила для маршрутизатора ISP1:
маршрутная метка:
`add distance=1 gateway=4.2.2.2 routing-mark=to_ISP1 check-gateway=ping`
`add distance=2 gateway=8.8.4.4 routing-mark=to_ISP1 check-gateway=ping`
Создадим правила для маршрутизатора ISP2:
маршрутная метка:
`add distance=1 gateway=4.2.2.3 routing-mark=to_ISP2 check-gateway=ping`
`add distance=2 gateway=151.164.1.8 routing-mark=to_ISP2 check-gateway=ping`
Создадим "виртуальные" маршруты ISP1 для дальнейшего использования в маршрутах:
`add dst-address=10.8.8.1 gateway=4.2.2.2 scope=10 target-scope=10 check-gateway=ping`
`add dst-address=10.8.8.1 gateway=8.8.4.4 scope=10 target-scope=10 check-gateway=ping`
Создадим "виртуальные" маршруты ISP2 для дальнейшего использования в маршрутах:
`add dst-address=10.4.4.1 gateway=4.2.2.3 scope=10 target-scope=10 check-gateway=ping`
`add dst-address=10.4.4.1 gateway=151.164.1.8 scope=10 target-scope=10 check-gateway=ping`
Добавим маршруты по умолчанию:
`add distance=2 gateway=10.8.8.1 routing-mark=to_ISP1`
`add distance=1 gateway=10.4.4.1 routing-mark=to_ISP2`
Добавим маршруты по умолчанию без маршрутных меток, расстояние 1 для маршрутизатора:
`add distance=2 gateway=10.8.8.1`
`add distance=1 gateway=10.4.4.1`
Добавим "черную дыру" для ошибки RouterOS, если интерфейс выходит из строя (не уверен, нужна ли она в текущей версии RouterOS):
`add dst-address=4.2.2.2 type=blackhole distance=20`
`add dst-address=4.2.2.3 type=blackhole distance=20`
`add dst-address=8.8.4.4 type=blackhole distance=20`
`add dst-address=151.164.1.8 type=blackhole distance=20`
Обязательно установите `in-interface=` для правильных имен интерфейсов.
`/ip firewall mangle`
`add action=mark-connection chain=input comment="mark ISP1_conn" disabled=no in-interface=ether1-gw-att new-connection-mark=ISP1_conn passthrough=yes`
Этот должен быть выходной цепочкой.
`add action=mark-routing chain=output comment="mark routing isp1_conn" connection-mark=ISP1_conn disabled=no new-routing-mark=to_ISP1 passthrough=no`
`add action=mark-routing chain=prerouting comment="mark routing to_ISP1" connection-mark=ISP1_conn disabled=no in-interface=ether5-LAN new-routing-mark=to_ISP1 passthrough=yes`
`add action=mark-connection chain=input comment="mark ISP2_conn" disabled=no in-interface=ether2-gw-tw new-connection-mark=ISP2_conn passthrough=yes`
Этот должен быть выходной цепочкой.
`add action=mark-routing chain=output comment="mark routing isp2_conn" connection-mark=ISP2_conn disabled=no new-routing-mark=to_ISP2 passthrough=no`
`add action=mark-routing chain=prerouting comment="mark routing to_ISP2" connection-mark=ISP2_conn disabled=no in-interface=ether5-LAN new-routing-mark=to_ISP2 passthrough=yes`

После этого удали свой статический маршрут с dst-address=8.8.8.8 – он должен появиться сам собой, когда pppoe подключится.