Быстрый переключатель WAN

Для быстрого ручного переключения между провайдерами я использую скрипты, которые меняют distans маршрута. Это дополнение к рекурсивной маршрутизации, при которой иногда нужно ручное управление.

Заказав настройку MikroTik, вы получите 100% проработанное решение от опытного сетевого инженера.

Для его работы нужно проставить комментарии на нужные маршруты:

  • 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"]