Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Резервный канал с проверкой по ip аддресу в интернете  (Прочитано 795 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Fil15

  • Автор темы
  • Новичок
  • *
  • Сообщений: 27
    • Просмотр профиля
Добрый день!
Есть два интернет канала от двух провайдеров. Проблема в резервировании канала. На первом провайдере шлюз может быть доступен, но самого интернета нет. Как сделать проверку в скрипте, что бы проверять не по шлюзу провайдера, а по предположим 8.8.8.8. Смотрел много скриптов, но там переключаются на основной канал и проверяют шлюз, а потом 8.8.8.8 в это время соответственно интернета нет. Как сделать то же безе переключения?

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13758
    • Просмотр профиля
Исправьте понравившийся скрипт и в бой.

Оффлайн Fil15

  • Автор темы
  • Новичок
  • *
  • Сообщений: 27
    • Просмотр профиля
Ну вот преположим:
HOST="109.254.164.1"

# Файл-флаг. Появляется при переключении на резервный канал
LOCKFILE="/tmp/check_internet.lock"

# Файл журнала
LOGFILE="/var/log/check_internet.log"

# Пингуем проверочный хост через основной канал
ping -I eth0 -c 3 -n -q ${HOST} > /dev/null 2>&1

# Если возникла ошибка (хост не доступен)
if [ $? -ne "0" ]; then
<------># Если нет файла-флага
        if [ ! -f ${LOCKFILE} ]; then
<------><------># Меняем маршрут по умолчанию в основной таблице роутинга
                route del default
                route add default gw 93.157.10.153
                # Создаём файл флаг
                touch ${LOCKFILE}
                # Делаем запись в файл журнала
                echo `date +'%Y/%m/%d %H:%M:%S'` Internet connection changet to Finix >> ${LOGFILE}
        fi
# Если же всё хорошо
else
     echo `date +'%Y/%m/%d %H:%M:%S'` NOT changed >> ${LOGFILE}
<------># Если есть файл-флаг
        if [ -f ${LOCKFILE} ]; then
<------><------># Меняем маршрут по умолчанию в основой таблице роутинга
                route del default
                route add default gw 109.254.164.1
                # Удаляем файл-флаг
                rm -f ${LOCKFILE}
                # Записываем событие в файл журнала
                echo `date +'%Y/%m/%d %H:%M:%S'` Internet connetction changed to Matrix >> ${LOGFILE}
        fi
fi

Здесь я пингую шлюз.
Как проверить вместо ping -I eth0 -c 3 -n -q ${HOST} > /dev/null 2>&1 чтобы пинг был через шлюз 109.254.164.1  на 8.8.8.8
route -n
0.0.0.0         93.157.10.153   0.0.0.0         UG    0      0        0 eth2.556
93.157.10.152   0.0.0.0         255.255.255.252 U     0      0        0 eth2.556
109.254.164.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth1


Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13758
    • Просмотр профиля
Если Вы занимаетесь шлюзом, то Ваш вопрос роняет Вашу карму админа ниже плинтуса.

Оффлайн Fil15

  • Автор темы
  • Новичок
  • *
  • Сообщений: 27
    • Просмотр профиля
Вот вы интересный человек. Нет бы подсказать иль толкнуть в нужную сторону - вы начинаете парафинить! Даже у профи своего дела бывают казусы, что не может найти ответ в самом простом.

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13758
    • Просмотр профиля
Хорошо толкаю (главное, чтобы не упали): создаёте маршрут на гуглоднс через основной канал и меняете переменную HOST
Но я бы:
1. вынес бы мозг провайдеру за такой канал
2. проводил проверку в 2 этапа - сначала проверял бы наличие шлюза, а потом уже работоспособность провайдерского оборудования (раз уж провайдер такой никудышный)

Оффлайн Fil15

  • Автор темы
  • Новичок
  • *
  • Сообщений: 27
    • Просмотр профиля
Спасибо огромное! Я на паблик днс тогда завяжу!
Рабочий скрипт с проверкой основного канала на доступность.
https://cloud.mail.ru/public/8iXM/GMnUPKKNh
« Последнее редактирование: 09 Октября 2015, 11:53:56 от Fil15 »

 

Страница сгенерирована за 0.05 секунд. Запросов: 25.