Всем привет! Прошу прощения, если я изобрёл велосипед! Но я искал скрипт, который бы мониторил IPSec-туннель и, если не мог достучаться до конечной точки, принудительно перезапускал туннель. К сожалению, я не нашёл готового скрипта, который делал бы именно то, что мне нужно, поэтому позаимствовал куски кода у разных людей из других скриптов и попробовал написать сам. Ниже то, что у меня получилось. Конструктивная критика приветствуется, но помните — это первый скрипт, который я когда-либо писал.
{
:log info “IPSec Watchdog Started”
Хост, который хотите пинговать######
:local HOST “Введите IP здесь”
Расположение хоста########
:local LOCATION “Название локации”
Интерфейс до удалённой сети#######
:local GW “интерфейс с маршрутом до хоста”
Таймаут пинга — увеличьте или уменьшите по необходимости
:local TIMEOUT “100ms”
Количество попыток
:local COUNT “10”
Если меньше 8 успешных ответов — перезапуск IPSec#####
:local LESSTHAN “8”
#################################
#НЕ МЕНЯЙТЕ КОД НИЖЕ###################################
:log info “Ищу $HOST в $LOCATION”
:log info “Маршрут до IPSec-конечной точки в $LOCATION проходит через $GW”
:if ([/ping interface=$GW $HOST interval=$TIMEOUT count=$COUNT]<$LESSTHAN) do={
log error “$HOST в $LOCATION недоступен. Туннель до $LOCATION упал. Принудительный перезапуск IPSec”;
/ip ipsec installed-sa flush
} else {
:log warning “IPSec-туннель до $LOCATION в порядке. Делать ничего не нужно”
}
}
{
:log info “IPSec Watchdog Started”
Хост, который хотите пинговать######
:local HOST “Введите IP здесь”
Расположение хоста########
:local LOCATION “Название локации”
Интерфейс до удалённой сети#######
:local GW “интерфейс с маршрутом до хоста”
Таймаут пинга — увеличьте или уменьшите по необходимости
:local TIMEOUT “100ms”
Количество попыток
:local COUNT “10”
Если меньше 8 успешных ответов — перезапуск IPSec#####
:local LESSTHAN “8”
#################################
#НЕ МЕНЯЙТЕ КОД НИЖЕ###################################
:log info “Ищу $HOST в $LOCATION”
:log info “Маршрут до IPSec-конечной точки в $LOCATION проходит через $GW”
:if ([/ping interface=$GW $HOST interval=$TIMEOUT count=$COUNT]<$LESSTHAN) do={
log error “$HOST в $LOCATION недоступен. Туннель до $LOCATION упал. Принудительный перезапуск IPSec”;
/ip ipsec installed-sa flush
} else {
:log warning “IPSec-туннель до $LOCATION в порядке. Делать ничего не нужно”
}
}
