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


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

Автор Тема: переключение на резервный канал интернета  (Прочитано 15031 раз)

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

Оффлайн VerstaK

  • Автор темы
  • Любитель
  • *
  • Сообщений: 53
    • Просмотр профиля
Добый денб.

Есть Ubuntu, в которой стоит три сетевухи:
eth0 82.***.***.** - интернет от провайдера 1
eth1 94.***.***.** - интернет от провайдера 2
eth2 192.168.1.100 -локалка.

пользователи через поднятый SAMS ходят в интернет по каналу от провайдера 2, как сделать так, чтобы при пропадании связи на нем автоматом подхватывался провайдер 1. При восстановлении связи с провайдером 1 снова пользователи ходили через 2 провайдера.

стоит Firestarter, с его помощью поднят NAT. Proftpd слушает оба инет-интерфейса

Придется писать скрипт, который будет пинговать опр. IP и при провадании связи от провайдера 2 переключать на пров.1. Или можно это сделать с помощью какого-нибудь GUI? В линуксе новичок, сильно не пинайте

Оффлайн sephiroth

  • Новичок
  • *
  • Сообщений: 34
  • war, war never changes...
    • Просмотр профиля
Re: переключение на резервный канал интернета
« Ответ #1 : 14 Октября 2009, 13:14:27 »
сам ищу решение данного вопроса.
вот вроде как полезный топик, но еще не пробовал по таком методу:
http://www.opennet.ru/base/net/int_switcher.txt.html

апд:
ссылка на скрипт в конце статьи битая. вот рабочая - http://asplinux.net/files/forum/hotchannel.zip
« Последнее редактирование: 14 Октября 2009, 15:24:55 от sephiroth »

Оффлайн Unreg

  • Активист
  • *
  • Сообщений: 751
  • Ubuntu 8.04 / Acer Aspire One 110 > Debian 5.04
    • Просмотр профиля
    • LJ

Оффлайн VerstaK

  • Автор темы
  • Любитель
  • *
  • Сообщений: 53
    • Просмотр профиля
Re: переключение на резервный канал интернета
« Ответ #3 : 15 Октября 2009, 14:05:21 »
Дело в том, что я правила файрвола создавал с помощью GUI убунтовского... Получается - мне надо эти правила переписывать и вставлять в скрипты?

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: переключение на резервный канал интернета
« Ответ #4 : 15 Октября 2009, 14:37:43 »
Получается, тебе надо почитать man iptables (особенно его конец, в часть see-also).
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн VerstaK

  • Автор темы
  • Любитель
  • *
  • Сообщений: 53
    • Просмотр профиля
Re: переключение на резервный канал интернета
« Ответ #5 : 21 Октября 2009, 13:31:59 »
Нашел такой скриптик...

#!/bin/bash
GW_PRIM='192.168.4.1' #наш главный шлюз
GW_RES='192.168.4.2'  #наш резервный шлюз
test_host='78.109.22.22' #появляется только при переходе на резервный канал
HOST1='ya.ru' #хосты для проверки
HOST2='google.com'
HOST3='ukr.net'
R1='ok'
R2='false'
log='/tmp/gw_change.log'
OK="Всё ок - ничё не делаем"
BAD="Каналья нет!!! Пробуем что-то делать"
 
if [ -f /tmp/gw_change ]
 
then
{
        if /bin/ping -c 3 $test_host &> /dev/null
        then
        {
        route del default && echo удаляем резервный маршрут
        route add default gw $GW_PRIM && echo добавляем основной маршрут
        rm -f /tmp/gw_change && echo удаляем фаил индикатор
        route del -host $test_host  gw $GW_PRIM && echo удаляем статический маршрут
        : > /tmp/gw_change.log
        }
 
        fi
}
elif /bin/ping -c 3 $HOST1 &> /dev/null && echo $HOST1 $R1
 
then echo $OK
 
elif
{
 echo $HOST1 $R2
/bin/ping -c 3 $HOST2 &> /dev/null && echo $HOST2 $R1
}
 then echo $OK
 
elif
{
 echo $HOST2 $R2
 /bin/ping -c 3 $HOST3 &> /dev/null && echo $HOST3 $R1
}
 then
echo $OK
 
else
{
echo $HOST3 $R2
route del default && echo "удаляем основной маршрут" >> $log
route add default gw $GW_RES && echo "добавляем резервный маршрут" >> $log
route add -host $test_host  gw $GW_PRIM && echo "добавляем статический маршрут" >> $log
echo > /tmp/gw_change
#mailx -s "ВНИМАНИЕ резервный канал на `hostname`" postmaster
echo $BAD $log
cat /tmp/gw_change.log | mailx -s "ВНИМАНИЕ резервный канал на `hostname`" postmaster
}
 
fi

Сохранятся ли настройки IPTABLES? Конкретно - какие порты открыты извне и снаружи, NAT?

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: переключение на резервный канал интернета
« Ответ #6 : 21 Октября 2009, 13:39:49 »
Обрати внимание, в скрипте нет ни слова про iptables...
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн VerstaK

  • Автор темы
  • Любитель
  • *
  • Сообщений: 53
    • Просмотр профиля
Re: переключение на резервный канал интернета
« Ответ #7 : 21 Октября 2009, 14:49:54 »
Потому и воспрошаю. Насколько я понимаю, скрипт меняет только шлюз.

Блин. Читаю мануалы по иптаблес и все равно не могу никак прозреть. Господа, помогите плизззз

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: переключение на резервный канал интернета
« Ответ #8 : 21 Октября 2009, 15:09:44 »
Он меняет маршрутизацию. iptables тут не затрагивается.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн VerstaK

  • Автор темы
  • Любитель
  • *
  • Сообщений: 53
    • Просмотр профиля
Re: переключение на резервный канал интернета
« Ответ #9 : 21 Октября 2009, 15:16:25 »
Значит, мои настройки IPtables будут действовать? А вот как быть с NAT?

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: переключение на резервный канал интернета
« Ответ #10 : 21 Октября 2009, 15:47:25 »
Расшифруй вопрос.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн VerstaK

  • Автор темы
  • Любитель
  • *
  • Сообщений: 53
    • Просмотр профиля
Re: переключение на резервный канал интернета
« Ответ #11 : 21 Октября 2009, 16:00:31 »
Насколько я знаю, при NAT все запросы от внутренних компов "робрасываются" на внешний интерфейс. При настройке я указываю - какой интерфейс является внешним и квлючаю НАТ. При смене GW, по логике, запросы должны пойти на другую сетевую карту, чтобы НАТ работал. Но в скрипте, как я вижу, это не реализовано.

пошу прощения, если сумбурно объясняю, просто привык я к видновому типу мышления, на Линуксе все по-другому, как другая религия :)

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: переключение на резервный канал интернета
« Ответ #12 : 21 Октября 2009, 16:05:37 »
Ты просто не владеешь терминологией, потому так сумбурно объясняешь.
IP - Internet Protocol - стек протоколов интернета - один для всех.

Если у тебя происходит преобразование адресов - показывай, как именно.
Посмотрим, что ты не понимаешь.

По сути, у тебя должно быть настроено постоянное преобразование для обоих внешних интерфейсов, это независимая от маршрутизации задача, хотя и смежная.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн VerstaK

  • Автор темы
  • Любитель
  • *
  • Сообщений: 53
    • Просмотр профиля
Re: переключение на резервный канал интерне&#
« Ответ #13 : 22 Октября 2009, 13:57:58 »
правила я настраивал через Firestarter, там указал "сделать НАТ", запретил 80 порт для локалки, открыл фтп, vnc, smtp и pop3. Открыл 3128 для squid-а.Вот и все. Доступа к машине пока нет, поэтому выложить конфиг не могу...
« Последнее редактирование: 22 Октября 2009, 14:27:39 от VerstaK »

Оффлайн Tokh

  • Активист
  • *
  • Сообщений: 705
    • Просмотр профиля
Re: переключение на резервный канал интернета
« Ответ #14 : 22 Октября 2009, 20:09:43 »
Значит, мои настройки IPtables будут действовать? А вот как быть с NAT?

Надо в скрипт дописать удаление NAT правила iptables и добавление нового правила NAT, с новым адресом для NAT. См. справку по iptables.

Какое правило удалять, как определить какой сейчас адрес в этом правиле? Можно детектить прямо, писать скрипт, например, для разбора вывода "iptables -S". Не самый простой скрипт, нужны grep, awk, bash команда read...
Или выстроить логику скриптов, чтобы было заранее известно какой адрес стоит в правиле.

Или можно в файл сбрасывать текущий адрес, сразу при задании правил и потом читать оттуда.

Вот это пишет в файл адрес из addr_value в файл, читает из файла в переменную out_ip_addr, выводит на экран значение переменной out_ip_addr:
#!/bin/bash
addr_value="192.168.0.1"
echo $addr_value > /home/tmp/out-addr.txt
read out_ip_addr < /home/tmp/out-addr.txt
echo $out_ip_addr

Только Firestarter сам всё делает, у него может быть есть описанный в документации на него свой скрипт перезапуска. Т.е. сменить маршруты и рестартовать Firestarter, а он типа тогда сам NAT пернастроит. Я подозреваю... Уж больно Firestarter сильно самостоятельная штука.
« Последнее редактирование: 22 Октября 2009, 20:12:03 от u-375 »
StarDict и Mueller помогут против английского мануала.

 

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