Резервирование Интернет каналов на Linux

Team of people carrying an Internet cable.

Сейчас я вкратце опишу, как я сделал у себя резервирование Интернет каналов на Debian.

Основной скрипт, который мониторит доступность интернета и переключает маршруты выглядит так:

# cat ./reserv_chan

####################################################################################################################
#!/bin/bash
# Доступность этого хоста будет означать корректную работу основного канала
HOST="8.8.4.4"
# Файл-флаг. Появляется при переключении на резервный канал
LOCKFILE="/tmp/internet.lock"
# Файл журнала
LOGFILE="/var/log/internet.log"
# Пингуем проверочный хост через основной канал
ping -I eth0 -c 3 -n -q ${HOST} > /dev/null
# Если возникла ошибка (хост не доступен)
if [ $? -ne "0" ]; then
# Если нет файла-флага
if [ ! -f ${LOCKFILE} ]; then
# Меняем маршрут по умолчанию в основной таблице роутинга
/root/route_3g
# Создаём файл флаг
touch ${LOCKFILE}
# Делаем запись в файл журнала
echo `date +'%Y/%m/%d %H:%M:%S'` Internet connection changed to 3G >> ${LOGFILE}
fi

# Если же всё хорошо
else
# Если есть файл-флаг
if [ -f ${LOCKFILE} ]; then
# Меняем маршрут по умолчанию в основой таблице роутинга
/root/route_lan
# Удаляем файл-флаг
rm -f ${LOCKFILE}
# Записываем событие в файл журнала
echo `date +'%Y/%m/%d %H:%M:%S'` Internet connetction changed to LAN >> ${LOGFILE}
fi
fi

################################################################

Скрипты изменения маршрута:

# cat ./route_3g

route add default gw 10.0.0.1

# cat ./route_lan

route del default

И сам скрипт, который мы закинем в cron (он будет каждые 5 секунд проверять доступность назначенного узла):

# cat ./inet_check
while (true)
do /root/reserv_chan;
sleep 5;
done;

Запишем его в cron:
# crontab -e

@reboot /root/inet_check

На всякий случай в я прописал в /etc/network/interfaces

up route add -net 8.8.4.4/32 gw 192.168.1.1 dev eth0

Чтобы наш проверочный хост (8.8.4.4) пинговался именно через eth0, хоть эту и указывается в скрипте (ping -I eth0)

Главное, что в /etc/network/interfaces у нас 192.168.1.1 был просто gateway, а не defaultgateway. Иначе нужно будет изменять переключающие скрипты. Вот и все. Теперь при пропадании 8.8.4.4 на eth0 мы переключимся на 3G и обрачно, когда интернет появится на канале Lan.


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Unlix © Все права защищены 2023

Копирование материалов с сайта Unlix.ru без указания полной ссылки на источник ЗАПРЕЩЕНО!