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

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

Рейтинг:  5 / 5

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

Скрипт для автоматического переключения на резервный канал при двух интернет-провайдерах.

 

Этот скрипт настроен под пример "MikroTik и два канала в интернет"  Часть1, Часть 2 и Часть 3, поэтому у вас уже должно быть настроено два шлюза, активный от первого провайдера (основной) с комментариями "gw1" и отключенным для второго провайдера "gw2" (резервный). Также в скрипте для проверки наличия канала пингуются два ip адреса, по одному от каждого провайдера. Это адреса их DNS серверов, и для каждого из них также должен быть прописана статическая маршрутизация.
Также для отправки сообщения по почте необходимо настроить адрес почтового сервера и адрес отправителя. Тутрассказано как это сделать.

Скрипт необходимо засунуть в MikroTik, и пускать, скажем, каждых 30 секунд через встроенный шедулер.

Собственно сам скрипт:

##########################################################################
#Name:           2isp
#Version:       1.0
#Created:       Alexander Gerasimov
#Web:              http://papa-admin.ru
#Date:           01.2011
#Description:  failover for 2 ISP (main & backup) with e-mail notification
##########################################################################

:local PingCount 3;

:local CheckIp1 82.199.96.143;
:local CheckIp2 83.242.139.10;

:local eTo "Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.";

:local rName [/system identity get name];
:local rDate [/system clock get date];
:local rTime [/system clock get time];
:local eSubj ($rName . " " . $rDate . " " . $rTime);

:local isp1 [/ping $CheckIp1 count=$PingCount];
:local isp2 [/ping $CheckIp2 count=$PingCount];

:local BackGw [/ip route get [find comment="gw2"] disable];
#if main ISP is DOWN and backup ISP is UP then:
:if (($isp1=0) && ($isp2=$PingCount) && ($BackGw=true)) do={
:log warning "Set routes to backup ISP";
/ip route disable [find comment="gw1"];
/ip route enable [find comment="gw2"];
/tool e-mail send to=$eTo subject=($eSubj . " Main ISP is DOWN") body="Set routes to backup ISP";
}

:local MainGw [/ip route get [find comment="gw1"] disable];
#if main ISP is UP then:
:if (($isp1=$PingCount) && ($MainGw=true)) do={
:log warning "Set routes to main ISP";
/ip route enable [find comment="gw1"];
/ip route disable [find comment="gw2"];
/tool e-mail send to=$eTo subject=($eSubj . " Main ISP is UP") body="Set routes to main ISP";
}

 

Комментарии  

+1 # evgeniy 19.08.2015 10:21
А как переделать скрипт чтобы пинговал два хоста каждого провайдера

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