Перейти к содержимому
Калькуляторы

Резервирование канала через 3G. Mikrotik и IRZ RUH2 3g-Router

Добро время суток. Есть две точки, подключенные через интернет, между ними поднимается 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 - полностью отмели, из-за дороговизны сотовой связи.

Изменено пользователем x-system

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Поднимите 2 туннеля. Один пойдет через дефолтный маршрут, для второго пропишите отдельно маршрут только для конкретного адреса. По туннелям запустите OSPF. Пропишите веса для маршрутов. Поднимите туннель. Теперь все будет работать автоматически без скриптов и вмешательств со стороны.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Saab95

Это первое, до чего я додумался))) OSPF - это чудно и очень красиво.

Но заказчик не хочет, что бы какой либо трафик ходил через 3г пока основной канал работает, так как 3г для него ооочень дорог.

У нас как всегда все.. Вот и приходится костыль придумывать(

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

t1bur1an

кстати, спасибо за идею. Не было времени. Сегодня - завтра поработаю над ней.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

t1bur1an

check-gateway - вещь хорошая, но чекает она только шлюз провайдера. А если за шлюзом у провайдера по ломался инет?(

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

всем спасибо. Написал скрипт. Точнее, доработал найденный. Нужен кому-то? выложить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если кому-то нужен скрипт - могу кинуть в личку. Пишите.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А в чём была проблема? Почему скрипт не работал?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

заводской брак или невнимательность,скорее всего.с каждым может случиться)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.