Резервный провайдер на сервере
Задача:
В случае отключения основного канала, переключиться на резервный. Если основной канал восстанавливается, переключиться обратно.
Решение достаточно простое. Необходимо написать необльшой скрипт, контролирующий доступность соединения с провайдером и запустить его по Cron. Успешный ping роутера провайдера будем считать достаточным для принятия решения о том работает канал или нет.
Советую подправить маленько исходники ... что бы скрипт пинговал не роутер провайдера, а сайт в интернете (например бесплатные DNS фирмы Google - это 8.8.8.8), то после SECOND добавляем переменную
HOST=8.8.8.8 и в графе
if ping -c4 $MAIN > /dev/null 2>&1; then
$MAIN меняем на $HOST
Исходный текст
Так же можно скачать
MAIN - шлюз основного провайдера
SECOND - шлюз дополнительного провайдера
Сохраняем скрипт к примеру в /root/scripts/inet.sh
sudo nano /etc/crontab и добавляем строку в конце файла
* * * * * root /root/scripts/inet.sh
и сохраняем. Это даст запуск скрипта от имени root каждую минуту !
Далее приступим к настройке интерфейсов в файле /etc/network/interfaces
auto eth0
iface eth0 inet static
address xxx.xxx.xxx.xxx
netmask 255.255.255.xxx
gateway xxx.xxx.xxx.xxx
auto eth1
iface eth1 inet static
address yyy.yyy.yyy.yyy
netmask 255.255.255.yyy
После того как интерфейсы настроены нужно включить форвардинг пакетов!
ВАЖНО! В файерволе NAT должен быть на обеих выходных интерфейсах. Например, если выходные интерфейсы eth0 и eth1:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
Всё это можно внести в фал /etc/rc.local до графы exit 0
ПЕРЕЗАГРУЖАЕМСЯ И ПРОВЕРЯЕМ ))))
В случае отключения основного канала, переключиться на резервный. Если основной канал восстанавливается, переключиться обратно.
Решение достаточно простое. Необходимо написать необльшой скрипт, контролирующий доступность соединения с провайдером и запустить его по Cron. Успешный ping роутера провайдера будем считать достаточным для принятия решения о том работает канал или нет.
Советую подправить маленько исходники ... что бы скрипт пинговал не роутер провайдера, а сайт в интернете (например бесплатные DNS фирмы Google - это 8.8.8.8), то после SECOND добавляем переменную
HOST=8.8.8.8 и в графе
if ping -c4 $MAIN > /dev/null 2>&1; then
$MAIN меняем на $HOST
Исходный текст
Так же можно скачать
MAIN - шлюз основного провайдера
SECOND - шлюз дополнительного провайдера
Сохраняем скрипт к примеру в /root/scripts/inet.sh
sudo nano /etc/crontab и добавляем строку в конце файла
* * * * * root /root/scripts/inet.sh
и сохраняем. Это даст запуск скрипта от имени root каждую минуту !
Далее приступим к настройке интерфейсов в файле /etc/network/interfaces
auto eth0
iface eth0 inet static
address xxx.xxx.xxx.xxx
netmask 255.255.255.xxx
gateway xxx.xxx.xxx.xxx
auto eth1
iface eth1 inet static
address yyy.yyy.yyy.yyy
netmask 255.255.255.yyy
После того как интерфейсы настроены нужно включить форвардинг пакетов!
ВАЖНО! В файерволе NAT должен быть на обеих выходных интерфейсах. Например, если выходные интерфейсы eth0 и eth1:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
Всё это можно внести в фал /etc/rc.local до графы exit 0
ПЕРЕЗАГРУЖАЕМСЯ И ПРОВЕРЯЕМ ))))
Комментарии
Отправить комментарий