Блог

Bash: IPSec удаляем SA

bash-ipsec-udalyaem-sa

IPSec – популярный набор протоколов для построения туннелей по протоколу IP. При использовании данного набора нередко возникает ситуация, когда вследствие некачественного канала или оборудования, или иных причин одна из сторон создает новые Security Association (SA), после чего туннель может перестать работать. Решается данная проблема просто, необходимо удалить все SA для данного туннеля, однако это приходится делать вручную, а в данной статье мы рассмотрим скрипт позволяющий автоматизировать данное действие.

HOSTS="192.168.0.0"
COUNT=4
for myHost in $HOSTS
do
count=$(ping -c $COUNT $myHost | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }')
if [ $count -eq 0 ]; then
echo "Host: $myHost is down (ping failed) at $(date)"
echo "
deleteall 1.1.1.1 2.2.2.2 esp;
deleteall 2.2.2.2 1.1.1.1 esp;
" | setkey -c
echo "done"
fi
done

Здесь в переменной HOSTS указываем локальный адрес удаленного оборудования, а в условии (при не ответе локального адреса) используя утилиту setkey, удаляем все SA для данного туннеля (вместо 1.1.1.1 – указываем адрес нашего оборудования, а вместо 2.2.2.2 – адрес удаленного оборудования).

Представленный сценарий можно поместить в планировщик и выполнять его с необходимой периодичностью, данный способ должен подойти для всех UNIX-подобных систем.

Комментариев нет

Ваш комментарий