Страница 1 из 1

Скрипт для восстановления зависших туннелей IPSec

Добавлено: 02 апр 2013, 16:58
Frozer
Довольно часто в сети встречаются жалобы на то, что туннели IPSec зависают. Следит за этим призваны опции DPD (Interval и Maximum Features) в настройках туннеля. Манипулирую этими настройками мне не удалось добиться положительных результатов и туннели периодически зависают, особенно при нестабильных каналах связи - помогает только перезагрузка роутеров или очистка Installed SAs. Приведенный ниже скрипт будет сам очищать Installed SAs, если туннель зависнет. Данный скрипт нужно разместить на обоих роутерах.

Я запускаю данный скрипт каждую минуту через планировщик.

# IPSEC TESTING SCRIPT V.1.0
# Author: Sergey Krivosheyev (frozer@mail.ru)

:local PingCount 5;
# Укажите IP адрес роутера, отличный от того, который обозначает начало туннеля IPSEC (у вас должно быть настроено правило IPSec, по которому обращение этого роутера к другому пойдет через туннель):
:local LocalRouterIP 10.25.25.1;

# Укажите имя туннеля, которое будет отображаться в логах:
:local Name "Office 2";
# Укажите IP адрес начала туннеля (SA Src. Address)
:local LocalTunnelIP 192.168.60.2;
# Укажите IP адрес конца туннеля (SA Dst. Address)
:local RemoteTunnelIP 192.168.60.1;

:local CheckTunnel [/ping $RemoteTunnelIP count=$PingCount src-address $LocalTunnelIP];
:if ($CheckTunnel>0) do={
:local CheckTunnel [/ping $RemoteTunnelIP count=$PingCount src-address $LocalRouterIP];
:local CheckPeer [/ip ipsec remote-peers find remote-address=$RemoteTunnelIP local-address=$LocalTunnelIP state="established"];
:if (($CheckTunnel=0) || ($CheckPeer="")) do={
/ip ipsec installed-sa flush;
:log info ($Name . " tunnel is down - flushing installed SAs");
}
}