Микротик резервирование

проверяет по 3 адреса на каждом канале и при недоступности более 2/3 пакетов считает этот канал недоступным, переключает дистанции основных маршрутов и отключает балансировку на этом канале


:local IP1 8.8.8.8
:local IP2 91.219.241.37
:local IP3 213.59.5.110
:local IP4 80.68.243.243
:local IP5 213.180.193.3
:local IP6 8.8.4.4
#Для теста, делаем недоступным один из каналов
#:local IP1 1.1.1.1
#:local IP2 1.1.1.1
#:local IP3 1.1.1.1
#:local IP4 2.2.2.2
#:local IP5 2.2.2.2
#:local IP6 2.2.2.2

:local COUNT 3
:local INTERFACE1 ether11
:local INTERFACE2 PCT

:local RESULT1 false;
:local STATUS1 ([/ping $IP1 interface=$INTERFACE1 count=$COUNT])
:local STATUS2 ([/ping $IP2 interface=$INTERFACE1 count=$COUNT])
:local STATUS3 ([/ping $IP3 interface=$INTERFACE1 count=$COUNT])
:set RESULT1 (($STATUS1 + $STATUS2 + $STATUS3) >= (2 * $COUNT))

:local RESULT2 false;
:local STATUS1 ([/ping $IP4 interface=$INTERFACE2 count=$COUNT])
:local STATUS2 ([/ping $IP5 interface=$INTERFACE2 count=$COUNT])
:local STATUS3 ([/ping $IP6 interface=$INTERFACE2 count=$COUNT])
:set RESULT2 (($STATUS1 + $STATUS2 + $STATUS3) >= (2 * $COUNT))

#Для быстрого переключения
#:local RESULT1 false;
#:local RESULT2 false;

#Для теста результатов проверки адресов
#/ log info message=$RESULT1
#/ log info message=$RESULT2

:global STATUSBALANCING
#Если доступны оба канала
if ($RESULT1 && $RESULT2 && $STATUSBALANCING!=1) do={
/ ip route set [find comment="gw1"] distance=1
/ ip route set [find comment="gw2"] distance=2
/ ip firewall mangle set [find comment=RealIP]  disabled=yes
/ system scheduler enable balancingConnections
/ log warning message="balancing enabled"
/ ip firewall mangle set [find comment="address list to isp1"] disabled=no
/ ip firewall mangle set [find comment="address list to isp2"] disabled=no
:global STATUSBALANCING 1
} else {

#ISP1 недоступен, ISP2 доступен
if (!$RESULT1 && $RESULT2 && $STATUSBALANCING!=2) do={
/ip route set [find comment="gw1"] distance=2
/ip route set [find comment="gw2"] distance=1
/log error message="$INTERFACE1 disabled"
/ip firewall mangle set [find comment=RealIP]  disabled=no
/log error message="Real IP NAT for $INTERFACE2"
/ system scheduler disable balancingConnections
/ log error message="balancing disabled"
/ ip firewall mangle set [find comment=multiConnectons] new-connection-mark=inet_con_isp2
/ ip firewall mangle set [find comment="address list to isp1"] disabled=yes
/ ip firewall mangle set [find comment="address list to isp2"] disabled=no
/ interface disable $INTERFACE1
/ip firewall connection tracking set enabled=no
#/ ip firewall connection {:foreach r in=[find connection-mark="inet_con_isp1"] do={remove $r}}
/ delay 5
/ip firewall connection tracking set enabled=yes
/ interface enable $INTERFACE1
:global STATUSBALANCING 2
} else {

#ISP1 доступен, ISP2 недоступен
if ($RESULT1 && !$RESULT2 && $STATUSBALANCING!=3) do={
/ ip route set [find comment="gw1"] distance=1
/ ip route set [find comment="gw2"] distance=2
/ log error message="$INTERFACE2 disabled"
/ ip firewall mangle set [find comment=RealIP]  disabled=yes
/ system scheduler disable balancingConnections
/ log error message="balancing disabled"
/ ip firewall mangle set [find comment="address list to isp1"] disabled=no
/ ip firewall mangle set [find comment="address list to isp2"] disabled=yes
/ ip firewall mangle set [find comment=multiConnectons] new-connection-mark=inet_con_isp1
/ interface disable $INTERFACE2
/ip firewall connection tracking set enabled=no
#/ ip firewall connection {:foreach r in=[find connection-mark="inet_con_isp2"] do={remove $r}}
/ delay 5
/ip firewall connection tracking set enabled=yes
/ interface enable $INTERFACE2
:global STATUSBALANCING 3
}
}
}


Комментарии

Популярные сообщения из этого блога

Accel-ppp команды

mikbill расшифровка завершений сессий

Zabbix agent установка и настройка