x-system Posted November 20, 2012 (edited) Добро время суток. Есть две точки, подключенные через интернет, между ними поднимается openvpn. На первой точке - роутер Mikrotik 943g, на другой коммутатор и еще одно сетевое устройство. На первой точке так же имеется IRZ RUH2 3g-Router, который подключается к инету по 3г и потом через него поднимается openvpn. Надо сделать следующее: на тике создать скрипт, который будет отслеживать основной канал, и если он порвался, то пускать соединение через 3g. Вроде скрипт написали, но примерно через сутки он перестает работать( ## time settings :global checkInterval 5 :global vpnTimeout 1 ## network settings :global gateway1=201.0.0.2 :global remoteVpnIp=172.20.0.1 # ip to check first connection # must have direct route via $gateway1 :global ipCheck1=8.8.8.8 :global gateway2=202.0.0.2 # ip to check second connection # must have direct route via $gateway2 :global ipCheck2=8.8.8.8 ## armada interaction :global armadaUrl="http://172.20.200.21/armada/conn_status/" :global armadaUser="user" :global armadaPassword="password" ## pre-defined variables for infinite cycle :global status # next connection to try :global nextGateway $gateway2 :while (true) { # if slow connection - try to re-establish with fast connection :if ($status = "connection_2_ok") do={ :if ( [ ping interval=0.5 count=2 $ipCheck1 ] != 0 ) /ip route set dst-address=0.0.0.0/0 gateway=$gateway1 /interface ovpn-client set ovpn1 disabled=yes /interface ovpn-client set ovpn1 disabled=no } :global avail ( [/ping interval=0.5 count=2 $remoteVpnIp] != 0 ) :global current_gw [/ip route get [/ip route find dst-address=0.0.0.0/0] gateway ] :if ( avail ) do={ :if (current_gw = gateway1) do={ :global currentStatus="connection_1_ok" } else={ :global currentStatus="connection_2_ok" } :if ($status != $currentStatus) do={ :global status $currentStatus /tool fetch url="$armadaUrl$status" user="$armadaUser" password="$armadaPassword" keep-result=no } :delay $checkInterval } else={ :global currentStatus="no_network" :if ($status != $currentStatus) do={ :global status $current_status /tool fetch url="$armadaUrl$status" user="$armadaUser" password="$armadaPassword" keep-result=no } # try to use next connection /ip route set dst-address=0.0.0.0/0 gateway=$nextGateway /interface ovpn-client set ovpn1 disabled=yes :delay 0.5 /interface ovpn-client set ovpn1 disabled=no :delay $vpnTimeout :if ( $nextGateway = $gateway1 ) do={ :global nextGateway $gateway2 } else={ :global nextGateway $gateway1 } } } В чем может быть проблема?( Идея о том, что бы пустить одновременно два тунеля и прыгать между ними через stp - полностью отмели, из-за дороговизны сотовой связи. Edited November 20, 2012 by x-system Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
t1bur1an Posted November 20, 2012 http://wiki.mikrotik.com/wiki/Advanced_Routing_Failover_without_Scripting Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Saab95 Posted November 20, 2012 Поднимите 2 туннеля. Один пойдет через дефолтный маршрут, для второго пропишите отдельно маршрут только для конкретного адреса. По туннелям запустите OSPF. Пропишите веса для маршрутов. Поднимите туннель. Теперь все будет работать автоматически без скриптов и вмешательств со стороны. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
x-system Posted November 20, 2012 Saab95 Это первое, до чего я додумался))) OSPF - это чудно и очень красиво. Но заказчик не хочет, что бы какой либо трафик ходил через 3г пока основной канал работает, так как 3г для него ооочень дорог. У нас как всегда все.. Вот и приходится костыль придумывать( Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
x-system Posted November 22, 2012 t1bur1an кстати, спасибо за идею. Не было времени. Сегодня - завтра поработаю над ней. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
x-system Posted November 26, 2012 t1bur1an check-gateway - вещь хорошая, но чекает она только шлюз провайдера. А если за шлюзом у провайдера по ломался инет?( Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
x-system Posted November 27, 2012 всем спасибо. Написал скрипт. Точнее, доработал найденный. Нужен кому-то? выложить? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
x-system Posted January 23, 2015 Если кому-то нужен скрипт - могу кинуть в личку. Пишите. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Diamont Posted January 23, 2015 А в чём была проблема? Почему скрипт не работал? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
mamontov Posted July 24, 2015 заводской брак или невнимательность,скорее всего.с каждым может случиться) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...