Для быстрого ручного переключения между провайдерами я использую скрипты, которые меняют distans маршрута. Это дополнение к рекурсивной маршрутизации, при которой иногда нужно ручное управление.
Профессиональная настройка MikroTik
Без предоплаты
Telegram: @Engineer_MikroTik
Для его работы нужно проставить комментарии на нужные маршруты:
- WAN1_Recursive
- WAN2_Recursive
- WAN3_Recursive
Либо настроить MultiWAN по статье:
/system script
add dont-require-permissions=no name=WAN1>WAN2>WAN3 owner=WinBox policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":local result 0;\r\
\n\r\
\n:set result [/ip route get [find comment=\"WAN3_Recursive\"] distance]\r\
\nif (\$result != 30) do={\r\
\n /ip route set [find comment=\"WAN3_Recursive\"] distance=30;\r\
\n}\r\
\n\r\
\n:set result [/ip route get [find comment=\"WAN2_Recursive\"] distance]\r\
\nif (\$result != 20) do={\r\
\n /ip route set [find comment=\"WAN2_Recursive\"] distance=20;\r\
\n}\r\
\n\r\
\n:set result [/ip route get [find comment=\"WAN1_Recursive\"] distance]\r\
\nif (\$result != 10) do={\r\
\n /ip route set [find comment=\"WAN1_Recursive\"] distance=10;\r\
\n}"
add dont-require-permissions=no name=WAN1>WAN3>WAN2 owner=WinBox policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":local result 0;\r\
\n\r\
\n:set result [/ip route get [find comment=\"WAN2_Recursive\"] distance]\r\
\nif (\$result != 20) do={\r\
\n /ip route set [find comment=\"WAN2_Recursive\"] distance=30;\r\
\n}\r\
\n\r\
\n:set result [/ip route get [find comment=\"WAN3_Recursive\"] distance]\r\
\nif (\$result != 30) do={\r\
\n /ip route set [find comment=\"WAN3_Recursive\"] distance=20;\r\
\n}\r\
\n\r\
\n:set result [/ip route get [find comment=\"WAN1_Recursive\"] distance]\r\
\nif (\$result != 10) do={\r\
\n /ip route set [find comment=\"WAN1_Recursive\"] distance=10;\r\
\n}"
add dont-require-permissions=no name=WAN2>WAN1>WAN3 owner=WinBox policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":local result 0;\r\
\n\r\
\n:set result [/ip route get [find comment=\"WAN3_Recursive\"] distance]\r\
\nif (\$result != 30) do={\r\
\n /ip route set [find comment=\"WAN3_Recursive\"] distance=30;\r\
\n}\r\
\n\r\
\n:set result [/ip route get [find comment=\"WAN1_Recursive\"] distance]\r\
\nif (\$result != 20) do={\r\
\n /ip route set [find comment=\"WAN1_Recursive\"] distance=20;\r\
\n}\r\
\n\r\
\n:set result [/ip route get [find comment=\"WAN2_Recursive\"] distance]\r\
\nif (\$result != 10) do={\r\
\n /ip route set [find comment=\"WAN2_Recursive\"] distance=10;\r\
\n}"
add dont-require-permissions=no name=WAN2>WAN3>WAN1 owner=WinBox policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":local result 0;\r\
\n\r\
\n:set result [/ip route get [find comment=\"WAN1_Recursive\"] distance]\r\
\nif (\$result != 30) do={\r\
\n /ip route set [find comment=\"WAN1_Recursive\"] distance=30;\r\
\n}\r\
\n\r\
\n:set result [/ip route get [find comment=\"WAN3_Recursive\"] distance]\r\
\nif (\$result != 20) do={\r\
\n /ip route set [find comment=\"WAN3_Recursive\"] distance=20;\r\
\n}\r\
\n\r\
\n:set result [/ip route get [find comment=\"WAN2_Recursive\"] distance]\r\
\nif (\$result != 10) do={\r\
\n /ip route set [find comment=\"WAN2_Recursive\"] distance=10;\r\
\n}"
add dont-require-permissions=no name=WAN3>WAN1>WAN2 owner=WinBox policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":local result 0;\r\
\n\r\
\n:set result [/ip route get [find comment=\"WAN2_Recursive\"] distance]\r\
\nif (\$result != 30) do={\r\
\n /ip route set [find comment=\"WAN2_Recursive\"] distance=30;\r\
\n}\r\
\n\r\
\n:set result [/ip route get [find comment=\"WAN1_Recursive\"] distance]\r\
\nif (\$result != 20) do={\r\
\n /ip route set [find comment=\"WAN1_Recursive\"] distance=20;\r\
\n}\r\
\n\r\
\n:set result [/ip route get [find comment=\"WAN3_Recursive\"] distance]\r\
\nif (\$result != 10) do={\r\
\n /ip route set [find comment=\"WAN3_Recursive\"] distance=10;\r\
\n}"
add dont-require-permissions=no name=WAN3>WAN2>WAN1 owner=WinBox policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":local result 0;\r\
\n\r\
\n:set result [/ip route get [find comment=\"WAN1_Recursive\"] distance]\r\
\nif (\$result != 30) do={\r\
\n /ip route set [find comment=\"WAN3_Recursive\"] distance=30;\r\
\n}\r\
\n\r\
\n:set result [/ip route get [find comment=\"WAN2_Recursive\"] distance]\r\
\nif (\$result != 20) do={\r\
\n /ip route set [find comment=\"WAN2_Recursive\"] distance=20;\r\
\n}\r\
\n\r\
\n:set result [/ip route get [find comment=\"WAN3_Recursive\"] distance]\r\
\nif (\$result != 10) do={\r\
\n /ip route set [find comment=\"WAN3_Recursive\"] distance=10;\r\
\n}"
add dont-require-permissions=no name=check-gateway_OFF owner=WinBox policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\
"/ip route unset [find comment=\"WAN1_Recursive\"] check-gateway\r\
\n/ip route unset [find comment=\"WAN2_Recursive\"] check-gateway\r\
\n/ip route unset [find comment=\"WAN3_Recursive\"] check-gateway"
Скрипт проверяет, что дистанция отличается и только после этого ее меняет. Дополнительный крипт check-gateway_OFF служит для отключения опции Check Gateway на всех маршрутах.
После переключения WAN можно добавить команды сброса соединений. Но это все делается индивидуально. Критичный трафик маркируется и сброс делается по метке соединения. Например для SIP не через туннель.
/ip firewall connection remove [find connection-mark="SIP"]
Или при восстановлении работы WAN1
/ip firewall connection remove [find connection-mark="con-WAN1"]