Скрипт переключения каналов интернет Debian Linux

Раздел: Linux
Написано: 27.12.2019
Автор: Antonio

В 2016 году я писал о скрипте, который использую на FreeBSD-роутере для переключения основного канала интернет на резервный.

cat internet off, кот отключили интернет

Не так давно (в 2019 году) один из линуксоидов переделал скрипт для использования в Linux Debian, и я решил опубликовать его у себя, чтобы вам было проще и не нужно было искать аналоги команд для Linux при адаптации. Так как Linux все-таки больше распространено плюс лучше работает в виртуальных системах и новые проекты я уже давно делаю на Linux, обычно это Debian.


В скрипте я ничего не менял, даже IP-адреса Яндекс (некоторые его очень не любят), конечно нужно указать адреса тех сервисов, которые авторитетны и доступны именно для вас.

#!/bin/sh
 
# Основной Оптика
GW1=10.0.0.2
# Резервный Радио
GW2=10.0.0.3
 
# Устанавливаем в переменную время и дату в нужном нам формате
DT=`date +"%T %d.%m.%Y"`
 
# Для проверки каналов интернет на работоспособность используем пинг на сервисы Yandex, разные IP для разных каналов
# вы можете использовать свои эталонные адреса для проверки
 
# Проверяем добавлены ли маршруты на эталонные IP для проверки, если нет, то добавляем
check_node=`netstat -rn | grep "77.88.8.1" | awk '{print $1}'`
    if [ "$check_node" != "77.88.8.1" ]; then
    # добавляем маршрут для Яндекса через оптику для проверки
    /sbin/route add 77.88.8.8 $GW1
    # через Радио
    /sbin/route add 77.88.8.1 $GW2
    else
    fi
 
# Проверяем, если включен основной интернет и файл состояния установлен на резервный канал, то стираем файл состояния
# Такая ситуация может возникнуть, например, если сервер был на резервном и потом его резко выключили,
# А после включения опять включился основной канал (маршрут по-умолчанию)
check_gw=`netstat -rn | grep default | awk '{print $2}'`
    if [ "$check_gw" = "10.0.0.2" ]; then
 
    if [ -f /tmp/.inet_reserv_work ]; then
    /bin/rm /tmp/.inet_reserv_work
    /bin/echo Стираем файл .inet_reserv_work $DT, так как шлюз $GW1, а не резервный $GW2! >> /data/scripts/inet_change.log
    else
    fi
 
    else
    fi
 
# Проверяем работает ли основной канал
    is=`/sbin/ping -c 7 77.88.8.8 | grep -c "64 bytes"`
    if (/bin/test $is -gt "4") then
 
# Если основной канал работает и файл состояния резервного канала существует, то стираем файл состояния и переключаемся
# на основной канал, пишем запись в лог и отправляем письмо администратору о переключении
    if [ -f /tmp/.inet_reserv_work ]; then
    /sbin/route change default $GW1
    /bin/rm /tmp/.inet_reserv_work
    /bin/echo Основной канал [Оптика] включен $DT >> /data/scripts/inet_change.log
    echo "$DT Переключились на Оптику" | mail -s "Интернет переключился" [email protected] -f [email protected]
    else
    exit
    fi
 
else
 
# Если основной не работает, то проверяем резервный и переключаемся на него
    is2=`/sbin/ping -c 7 77.88.8.1 | grep -c "64 bytes"`
    if (/bin/test $is -gt "4" || /bin/test $is2 -gt "4") then
 
    if ! [ -f /tmp/.inet_reserv_work ]; then
    /sbin/route change default $GW2
    /usr/bin/touch /tmp/.inet_reserv_work
    /bin/echo Резервный канал [Радио] включен $DT >> /data/scripts/inet_change.log
    echo "$DT Переключились на Радио" | mail -s "Интернет переключился" [email protected] -f [email protected]
    fi
    fi

Добавляем скрипт в планировщик крон.

### Переключение каналов
*/1 *  * * *   root   cd /data/ && ./inet_change.sh > 1>/dev/null 2>&1

Спасибо за linux-версию скрипта ссылка

Фразы: как переключать интернет на резервный автоматически в Linux, Линукс и резервный интернет, доработанный скрипт переключения каналов.

P.S. Давно не было острой необходимости в резервировании каналов, так как сейчас уже во многие офисные здания приходит оптика от провайдера, такие подключения являются более скоростными и стабильными, однако проблемы все равно бывают.

Поэтому рекомендую познакомится с технологией OpenMPTCProuter, которая позволяет использование нескольких каналов интернет одновременно.

И это действительно честное «одновременное», не такое как у многих производителей оборудования с мульти WAN портами.

Поделиться с друзьями или в соц.сетях (спасибо)
Ещё похожие заметки:

Написать

Копирование информации с сайта возможно только с указанием прямой ссылки - https://nemcd.com