LINUX.ORG.RU
ФорумAdmin

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

 


0

1

Добрый день. Прошу не пинать, - новичек). Суть вопроса: Есть 2 провайдера, которые у нас в локалке в одной подсети (172.24.25.254 и 172.24.25.253). Нужно сделать так, чтоб при отсутствии инета у одного из пров-ров, пользоваться другим. (Ну в идеале хотелось бы чтоб при появлении основного канала, снова на основной прыгать, хоть второй и есть). Т.е. кроме первых двух, поставить еще 1 железяку с адресом к примеру 172.24.25.251, на которую будут смотреть все машины в локалке, а та в свою очередь автоматически будет переключается между первыми двумя при отсутствии инета на какой-нибудь из них. Для этих целей достал D-Link dir-300, поставил на него OpenWRT. Полазил в инете, ничего не нашёл по моему решению, нашел похожее, из чего состряпал свой скрипт (вернее попытался - до этого ни разу не писал скрипт, что наверное и видно), но не работает. Прошу помочь/подсказать.

Вот скрипт:

#!/bin/sh

label1(){

echo --------------- --------------- --------------- --

echo WAN CONTROLL addroutedefault

echo --------------- --------------- --------------- --

PINGRESORCE1=«ya.ru»

PINGRESORCE2=«google.com»

PINGRESORCE3=«8.8.8.8»

currentISP=«253»

if (! ping -q -c3 ${PINGRESORCE1} > /dev/null 2>&1)

then

if (! ping -q -c3 ${PINGRESORCE2} > /dev/null 2>&1)

then

if (! ping -q -c3 ${PINGRESORCE3} > /dev/null 2>&1)

then

if currentISP=253

then

route add default gw 172.24.25.254 metric 0

currentISP=«254»

echo 'changing gw to' currentISP

else

route add default gw 172.24.25.253 metric 0

currentISP=«253»

echo 'changing gw to' currentISP

fi

else

echo 'internet ok'

fi

else

echo 'internet ok'

fi

else

echo 'internet ok'

fi

}

label1

(Этот скрипт вставил в Local Startup в вэб-фейсе)

кроме первых двух, поставить еще 1 железяку

Может в качестве железки лучше выбрать mikrotik с его routeros? Или обязательно надо openwrt?

Много что умеет, просто и красиво настраивается. Для routeros вопрос объединения провайдеров в один канал, подключения резервного канала описан практически на кажом форуме в интернете и в документации.

samson ★★ ()
Ответ на: комментарий от samson

Вопрос в финансовой составляющей, а именно в том что железяка уже есть, покупать ничего не нужно. За микротик да, наслышан конечно, но исходя из того что есть. И я так полагаю, вопрос с данной задачей в опенврт не сложный для опытных людей.

igorek333 ()
Ответ на: комментарий от igorek333

а как правильно написать?

Ну здрасти, я то думал у вас глаз замылился, а так — не интересно. Либо пишите на том, что знаете, либо учите то, на чем пишите. А потом уже приходите с вопросами «не работает».

vodz ★★★★★ ()
Ответ на: комментарий от vodz

Я ж сразу чистосердечно признался, что писать не умею). В последний раз писал на си в техникуме, это лет так 15 назад (и то по учебной программе курса предмета...). Поэтому и написал как сумел. А ради одного скрипта изучать...понимаю конечно что знания лишними не будут, но всё же время. Если не сложно подскажите, буду признателен, а если сложно, тогда спасибо за внимание.

igorek333 ()

Есть навороченный самописный скрипт для linux/iptables/iproute Работает ровно так, как «запрошено», и, кроме этого, «разруливает» входящие подключения. Если надо, могу скинуть. Но под Openwrt не пойдет, хотя, если постараться...

shamus24 ()
Ответ на: комментарий от shamus24

Да, скиньте, пожалуйста. Может что-то и получится с него скопировать, применить или ,кто знает, может даже полностью использовать). ibdrv@rambler.ru

igorek333 ()
Ответ на: комментарий от vodz

так, почитал тут http://citforum.ck.ua/programming/shell/gl5.shtml#2 потратил время, и понял как нужно вместо if currentISP=253 нужно if [ 253 = «$currentISP» ] на то чтоб найти как нужно потратил пол часа а опытному человеку поправить пол минуты на то чтоб написать сообщение. Но всё-равно за подсказку спасибо!

скрипт уже на работе буду проверять

igorek333 ()

посмотрел на счёт зацикливания по той же ссылке, и исправил. теперь выглядит так.

#!/bin/sh echo --------------- --------------- --------------- -- echo WAN CONTROLL addroutedefault echo --------------- --------------- --------------- -- PINGRESORCE1=«ya.ru» PINGRESORCE2=«google.com» PINGRESORCE3=«8.8.8.8» currentISP=«253» zacicl=«1» until [ 123 = «$zacicl» ] do zacicl=«1» if (! ping -q -c3 ${PINGRESORCE1} > /dev/null 2>&1) then if (! ping -q -c3 ${PINGRESORCE2} > /dev/null 2>&1) then if (! ping -q -c3 ${PINGRESORCE3} > /dev/null 2>&1) then if [ 253 = «$currentISP» ] then route add default gw 172.24.25.254 metric 0 currentISP=«254» echo 'changing gw to' $currentISP else route add default gw 172.24.25.253 metric 0 currentISP=«253» echo 'changing gw to' $currentISP fi else echo 'internet ok' fi else echo 'internet ok' fi else echo 'internet ok' fi sleep 8 done

о результате отпишусь

igorek333 ()
Ответ на: комментарий от igorek333

Проверил на работе работу скрипта - всё ок, переключает. Всем спасибо. Кому нужно, копируйте, может пригодится.

igorek333 ()
Ответ на: комментарий от pekmop1024

Вот на счет «собери из исходников» - ни разу из исходников ничего не собирал, и для меня это кажется длинным и сложным процессом, но спасибо за совет. Хоть основную задачу и решил скриптом, но можно попробовать заморочится, если оно того стоит.

igorek333 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.