Скрипт для автоматического переключение на резервный 3G модем

. Просмотров: 13801

Рейтинг:  5 / 5

Звезда активнаЗвезда активнаЗвезда активнаЗвезда активнаЗвезда активна
 

В одной из прошлых моих статей (Настройка MikroTik и 3G модема в качестве резервного канала) был предложен вариант автоматического переключения на резервный канал на маршрутизаторе MikroTik. Но в этом решении есть один неприятный момент, на который обратил внимание один из посетителей сайта. В случае если основной интерфейс физически не подключен (выдернут провод от провайдера или на другом конце выключено оборудование), то предложенное мною решение через Netwatch не будет работать.

Предлагаю вам альтернативное решение, которое лишено данного недостатка.

Вместо netwatch используем скрипт, который с помощью шедулера надо запускать, к примеру, каждые 10-30 секунд.

 

#Name:          backup3G
#Version:       1.0
#Created:       Gerasimov A.
#Web:           http://papa-admin.ru
#Date:          01.2014
#Description:  failover for 3G modem
#
:local PingCount 3;

:local InterfaceWan wan;
:local Interface3G ppp-3G;
:local CheckIp 8.8.4.4;
:local Use3G false;

:local WANstatus [/interface get [/interface find name="$InterfaceWan"] running];
:if ($WANstatus=false) do={
	:set Use3G true;
} else {
	:local CheckMainISP [/ping $CheckIp count=$PingCount interface=$InterfaceWan];
	:if ($CheckMainISP=3) do={
		:set Use3G false;
	} else {
		:set Use3G true;
	}
}
:local 3Gstatus [/interface get [/interface find name="$Interface3G"] running];
:if ($Use3G=true) do={
	if ($3Gstatus=false) do={
		/interface enable [find name="$Interface3G"];
		:log warning "Set routes to 3G ISP";
	}
} else {
	:if ($3Gstatus=true) do={
		/interface disable [find name="$Interface3G"];
		:log warning "Set routes to Main ISP";
	}
}

Немного пояснений:

InterfaceWan - основной интерфейс
Interface3G - резервный интерфейс 3G модема
CheckIP - ip адрес, пинг которого проверяется для работоспособности основного интерфейса, и маршрутизация которого настроена через основной интерфейс.

Чтобы прописать скрипт и шедулер подключаемся к маршрутизатору по ssh или через WinBox и New Terminal и вводим:

/system script
add name=backup3G policy=\
    ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive,api \
    source="#Name:          backup3G\r\
    \n#Version:       1.0\r\
    \n#Created:       Gerasimov A.\r\
    \n#Web:           http://papa-admin.ru\r\
    \n#Date:          01.2014\r\
    \n#Description:  failover for 3G modem\r\
    \n#\r\
    \n:local PingCount 3;\r\
    \n\r\
    \n:local InterfaceWan wan;\r\
    \n:local Interface3G ppp-3G;\r\
    \n:local CheckIp 8.8.4.4;\r\
    \n:local Use3G false;\r\
    \n\r\
    \n:local WANstatus [/interface get [/interface find name=\"\$InterfaceWan\
    \"] running];\r\
    \n:if (\$WANstatus=false) do={\r\
    \n\t:set Use3G true;\r\
    \n} else {\r\
    \n\t:local CheckMainISP [/ping \$CheckIp count=\$PingCount interface=\$InterfaceWan];\r\
    \n\t:if (\$CheckMainISP=3) do={\r\
    \n\t\t:set Use3G false;\r\
    \n\t} else {\r\
    \n\t\t:set Use3G true;\r\
    \n\t}\r\
    \n}\r\
    \n:local 3Gstatus [/interface get [/interface find name=\"\$Interface3G\"]\
    \_running];\r\
    \n:if (\$Use3G=true) do={\r\
    \n\tif (\$3Gstatus=false) do={\r\
    \n\t\t/interface enable [find name=\"\$Interface3G\"];\r\
    \n\t\t:log warning \"Set routes to 3G ISP\";\r\
    \n\t}\r\
    \n} else {\r\
    \n\t:if (\$3Gstatus=true) do={\r\
    \n\t\t/interface disable [find name=\"\$Interface3G\"];\r\
    \n\t\t:log warning \"Set routes to Main ISP\";\r\
    \n\t}\r\
    \n}\r\
    \n"
/system scheduler add interval=10s name=checkISP1 on-event=backup3G

Я поставил чтобы скрипт запускался каждые 10 секунд. Можете изменить на любое свое значение, но меньше 5 секунд лучше не ставить.

Работоспособность проверена на RB951G-2HnD и ROS 5.26.

Копирование и публикация материала из данной статьи разрешена только с письменного согласия автора

 

Комментарии  

0 # Ник 14.01.2014 16:20
Спасибо! Предложенное решение опробовано на Mikrotik 5.24 PC x86 (Intel desktop board D525MWV + 3Com 3C905CX + модем Мегафон-Huawei E-392) Всё работает.
+2 # alex 15.01.2014 09:41
Спасибо вам за развернутый ответ.
Раз статья оказалась полезной - оцените её (в конце статьи рейтинг со звездочками)
0 # Alexander 25.02.2014 13:47
Здравствуйте.
А если резервный канал подключается по PPPoE, то ваше решение можно использовать для его использования и как, если не секрет.
Я только начал разбиратья в этих аппаратах.
Спасибо.
0 # alex 25.02.2014 13:51
можно, с просто в названии резервного интерфейса укажите свой.
0 # Федор 11.03.2014 13:16
Не сбрасывается подключение 3G модема после подключения основного интерфейса (9 раз из 10, 1 раз срабатывает), подключается стабильно, а вот обратно никак. Можно ли что то поправить?
0 # Олег 09.04.2014 16:57
В статье "Настройка маршрутизатора MikroTik RB951G-2HnD с нуля"
в команде
/ip route add dst-address=0.0 .0.0/0 gateway=1.2.3.2 54 distance=2 comment="isp"
distance должно быть "1"
В WinBOX: IP --> Routes --> Редактировать правило ISP --> Установить distance "1"
0 # Александр 07.05.2014 10:40
это не будет работать, у вас после подключения 3g - он и станет основным(эктив + статик), а основной провайдер будет просто в статике, те пинг по интерфейсу основного провайдера уже больше не пойдет никак. После включения 3G вам его прийдется выключать ручками.

ПС. Проверил на ROS 6 - не работает
0 # Гость 29.05.2014 11:45
...а почему в EOS6 не работает?
0 # Гость 27.04.2014 23:54
Доброго времени.

Имеется ротер MikroTik RB2011UAS-2HnD- IN далее (MT).
Имеются провайдеры А и Б (они разные,статика) .По умолчанию всегда работает Б.
Поднят функционал (RouterOS 6): NAT,DHCP,WiFi.

Проблема. Если пропал/отключен провайдер "Б",то на клиентсих машинах пропадает
инет/пинг,но если вкл/выкл (передернуть) програмно сетевой адаптер на клиентских,то инет/пинг появляется,
т.е. клиенты видят инет "А"!?
Повторяем процедуру,подкл ючаем/появляетс я на MT "Б" - все ок, отключаем/пропа дает "Б" -
инет/пинг пропадает на клиентах. Раньше было все ок.

Перезагрузка роутера не помогла.
Клиентские машны все разные и с разными версиями win и отсутствием/нал ичием программ защиты,
подключенные непосредственно в MT или через свич HP.

Грешу на настройки MT,вопрос какие именно?
0 # Гость 27.04.2014 23:55
Забыл добавить,перекл ючением руководит Ваш крипт.
0 # Сержа 20.10.2014 17:22
Спасибо за статью
Но есть вопрос захожу через WinBox
копирую полностью код скрипта вставляю, мне в ответ
input does not match any value of policy
Как правильно скопировать код и вставить его для добавления скрипта???
0 # orz 25.12.2014 17:11
add name=backup3G policy=\ ftp,reboot,read ,write,policy,t est,password,sn iff,sensitive \
0 # orz 25.12.2014 17:23
Подскажите, почему-то после переключения на резервный канал 3G пропадает пинг (icmp) с клиентов, хотя на сайты они заходить могут. На самом микротике пинги проходят нормально при переключении на резервный канал 3G. NAT на интерфейсе ppp-3G прописан. В чем может быть дело?
0 # Антон 23.05.2015 16:47
Дело видимо в том, что в новой версии Winbox (у меня 6.28) нет политик winbox и api в перечне доступных для скрипта, вот он и ругается что не совпадает значение политики (value of policy). Напишите эту строку без данных политик: ftp,reboot,read ,write,policy,t est,password,sn iff,sensitive\
0 # MAXX 02.02.2015 17:07
Не работает на 6,25
Точнее не совсем. Переключение при остутсвии пинга на 3G происходит, но интернет не работает.
Работает если провод WAN выдернуть физически или через WinBox интерфейс запретить.
0 # Kartograf 12.09.2016 12:38
считаю что нужно копать в сторону Distace в свойствах соединения 3G модема
0 # Kartograf 12.09.2016 12:36
лучше изменить значение $CheckMainISP=3 , на $CheckMainISP!= 0 т.к. если хотя бы 1 пакет теряется из трех то происходит включение резерва (:
0 # igor 09.04.2017 16:07
скрипт на резервный канал переключает а вот назад не хочет.Приходитс я переключать только в ручную.Если кто знает как исправить то помогите советом или киньте пожалуйста скрипт.

Недостаточно прав для комментирования