zhnikita 19.12.2010 23:18
Есть вопрос! — Два провайдера в одной сети - как им ужиться вместе?
Подключил я себе на днях второго провайдера. В качестве резерва. (основной - 10 MBit в обе стороны, резервный - 1,0/0,5)Сейчас в домашней сети я настроил IP адреса статически. Роутер основного прова - 192.168.1.111. Резервного - 192.168.1.222. На компах всё прописано в /etc/network/interfaces и /etc/resolv.conf. Если надо заюзать другого провайдера, то меняю ручками значения в этих файлах.
Отсюда вопросы:
1) Как бы автоматизировать это действо (в консоле или через ГУЙ)?
2) Что делать с DNS? (у основного прова пинг до них 1,5-2 мс, до всяких гуглов - 55-60 мс)
3) Возможно ли использовать сразу оба канала с хоть какой-нибудь балансировкой?
Спасибо!
P.S. В основной комп могу воткнуть вторую сетевушку, но мне кажется, что это не наш метод...
UPD1:
Топология сети.
Основной пров - LAN (PPPoE). Приходит в роутер. На выходе - комп, ноут и PS3.
Резервный пров - ADSL. Приходит в ADSL-роутер. Выход из этого роутера воткнут в один из 4-х LAN выходов первого роутера. То есть первый роутер используется как свич для второго. И весь этот зоопарк в одной подсети 192.168.1.0/24
UPD2
Теперь первый пров другой (Onlime). У него подключение - просто LAN, без ничего!
А кабель второго прова просто валяется рядом. Ждёт своего часа икс...
Спасибо, посмотрю на днях.
Основная идея всего этого действа - не прибавка скорости. За 99 рублей в месяц (ИМХО - это не деньги!) я получаю ещё один безлимитный канал на 1 MBit. Просто чтоб был. Если вдруг основной канал падает, а такое бывает крайне редко, мне не надо заморачиваться с мобилой и GPRS.
Основная идея всего этого действа - не прибавка скорости. За 99 рублей в месяц (ИМХО - это не деньги!) я получаю ещё один безлимитный канал на 1 MBit. Просто чтоб был. Если вдруг основной канал падает, а такое бывает крайне редко, мне не надо заморачиваться с мобилой и GPRS.
я получаю ещё один безлимитный канал
вот-вот. именно это я и настраивал.
как по мне - так результат никакой.
если сделаешь что-нить толковое - отпишись, плз.
Скорее даже вот так:
Через несколько дней отпишусь в посте, как я сделаю.
я получаю ещё безлимитный резервный канал
Через несколько дней отпишусь в посте, как я сделаю.
У нас в университете такая штука применяется. В итоге когда сидишь на сайте который использует сессии -- стращная фигня. Выкидывает из аккаунтов постоянно. Слава Богу, для бедных студентов они подняли кривые прокси, и если ходить через них -- шлюз стационарен и канал не меняется. Скоро поднимут vpn, можно будет полноценно работать)
Вот мануал по всему роутингу в linux http://lartc.org/howto/
А вот ваш случай: http://lartc.org/howto/lartc.rpdb.multiple-links.html
Проблема возникает с автоматизацией другого плана - если один интерфейс отвалился, то отваливаются все маршруты по данному интерфейсу. Я пока что не занимался решением, так как времени не хватает. Если вы решите и выложите, то будет замечательно!
А вот ваш случай: http://lartc.org/howto/lartc.rpdb.multiple-links.html
Проблема возникает с автоматизацией другого плана - если один интерфейс отвалился, то отваливаются все маршруты по данному интерфейсу. Я пока что не занимался решением, так как времени не хватает. Если вы решите и выложите, то будет замечательно!
кстати, shorewall эту проблему решает.
копай в сторону шоревола и мульти-провайдера
копай в сторону шоревола и мульти-провайдера
1) Может помочь NetworkManager - позволяет переключаться на другую сеть в 2 клика
Тоже вариант. Но у меня на кухне стоит ноут Пень3 с памятью 256 метров - для него это будет тяжеловато. Там и так убунта урезана настолько, что стала легче дебиана. :-)
А просто маршрутизацией через метрику не прокатит?
Не пробовал, возможности не было.
Типо:
route add 0.0.0.0 netmask 0.0.0.0 gw 192.168.1.111
route add 0.0.0.0 netmask 0.0.0.0 gw 192.168.34.222 metric 10
Не пробовал, возможности не было.
Типо:
route add 0.0.0.0 netmask 0.0.0.0 gw 192.168.1.111
route add 0.0.0.0 netmask 0.0.0.0 gw 192.168.34.222 metric 10
Чет я отвлекся.
Про балансировка вот тут есть:
help.ubuntu.ru/wiki/ip_balancing
Про балансировка вот тут есть:
help.ubuntu.ru/wiki/ip_balancing
Не понятно как устроена Ваша домашняя сеть! Есть ли выделенная машина (аля home-сервер) или какой-нить роутер. Есть вот такая штучка pfSense, правда на основе FreeBSD, а не линукса и к ней статья тыц. Правда сам не пробовал, тупо негде :(
При более подробном описании входных данных, можно подумать и ещё варианты к уже написанным выше
При более подробном описании входных данных, можно подумать и ещё варианты к уже написанным выше
Я что-то тоже не совсем осознал конфигурацию, но, кажется, речь идёт о bounding.
Думаю что bonding здесь как раз не нужен, т к это объединение 2-х и более физических интерфейсов для увеличения пропускной способности. Т е два разных ethernet интерфейса, например по 100Мбит/с каждый, станут одним с пропускной способностью 200мбит/с.
Но бондинг работает на 2-м уровне, в то время как здесь нужна балансировка как минимум 3-го.
Но бондинг работает на 2-м уровне, в то время как здесь нужна балансировка как минимум 3-го.
Вот мое мнение по всем этим вопросам.
1. Можно написать скрипт, который будет переключать каналы при падении какого-то одного. Только нужно выбрать критерии переключения в ту или иную сторону. Например это будет ping. А каждую ночь в 2.00 переключать обратно... и т. д.
2. Смотря где именно располагаются DNS сервера по отношению к вам. Здесь можно хорошо растекаться мыслью по древу, но я бы порекомендовал поступить так: Поднять днс-форвардер, например Bind. Потом прописать в нем днс в следующем порядке:
днс 1 первого прова
днс 1 второго прова
днс 2 первого прова
днс 2 второго прова
гугловские днс
3. Сделать конечно можно. Балансировку маршрутами настроить не сложно. Вам уже давали ссылку на LARTC ( ). Но имхо этого лучше не делать, т к это может принести различные проблемы. Одно время я использовал такой способ и могу сказать, что некоторые сервисы, которые отслеживают ip клиента(например онлайн игры всякие) могут оборвать соединение при смене ip с одного канала на другой. Также некоторые сайты этим тоже грешат(особенно те, что через https).
1. Можно написать скрипт, который будет переключать каналы при падении какого-то одного. Только нужно выбрать критерии переключения в ту или иную сторону. Например это будет ping. А каждую ночь в 2.00 переключать обратно... и т. д.
2. Смотря где именно располагаются DNS сервера по отношению к вам. Здесь можно хорошо растекаться мыслью по древу, но я бы порекомендовал поступить так: Поднять днс-форвардер, например Bind. Потом прописать в нем днс в следующем порядке:
днс 1 первого прова
днс 1 второго прова
днс 2 первого прова
днс 2 второго прова
гугловские днс
3. Сделать конечно можно. Балансировку маршрутами настроить не сложно. Вам уже давали ссылку на LARTC ( ). Но имхо этого лучше не делать, т к это может принести различные проблемы. Одно время я использовал такой способ и могу сказать, что некоторые сервисы, которые отслеживают ip клиента(например онлайн игры всякие) могут оборвать соединение при смене ip с одного канала на другой. Также некоторые сайты этим тоже грешат(особенно те, что через https).
Можно написать скрипт, который будет переключать каналы при падении какого-то одного. Только нужно выбрать критерии переключения в ту или иную сторону. Например это будет ping. А каждую ночь в 2.00 переключать обратно... и т. д.
Наверно это мой вариант. Только куда направлять пинг? И как часто?
Пиновать нужно какой-нить постоянно доступный ресурс. Например www.ru(194.87.0.50), гугловские dns(8.8.8.8 и 8.8.4.4) или еще что-то. Чтобы не заморачиваться на днс-сервера пинговать лучше по адресу. Кроме того можно организовать пинг нескольких ресурсов по очереди и только при недоступности всех сразу...
Навернуть можно много всего. Зависит от используемых инструментов. Например вот на баше кусок скрипта:
fail=0; for ip in {"8.8.8.8","8.8.4.4","194.87.0.50"}; do ping -c1 $ip &>/dev/null; < $? -eq 0 > && < $fail -ne 1 > && fail=0 || fail=1; done; echo $fail
вернет 1 если хотя бы один из адресов недоступен.
Навернуть можно много всего. Зависит от используемых инструментов. Например вот на баше кусок скрипта:
fail=0; for ip in {"8.8.8.8","8.8.4.4","194.87.0.50"}; do ping -c1 $ip &>/dev/null; < $? -eq 0 > && < $fail -ne 1 > && fail=0 || fail=1; done; echo $fail
вернет 1 если хотя бы один из адресов недоступен.
как часто, это в принципе зависит от того, сколько вы готовы ждать в случае сбоя. Можно например для первого раза поставить на 3 мин. Т е по крону запускать раз в 3 мин.
балансировку нагрузки можно сделать через ip ... equalize ...
но в твоём случае это не самое хорошее решение -- сильно разная скорость, + добавиться гемор с прилодениями, работающими на сессиях (https, icq, ...)
для твоего случая лучше использовать скрипт по крону (раз в 5 минут например).
я использовал такой:
тебе только нужно поправить под свои условия...
например маршрут по умолчанию у тебя будет записываться как
будут вопросы -- звони, пиши :-)
но в твоём случае это не самое хорошее решение -- сильно разная скорость, + добавиться гемор с прилодениями, работающими на сессиях (https, icq, ...)
для твоего случая лучше использовать скрипт по крону (раз в 5 минут например).
я использовал такой:
#!/bin/bash
PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin
ip="8.8.8.8" # ip для проверки
provu="eth1" # первый провайдер
ifu="eth1"
ipu="192.168.0.2"
gwu="192.168.0.1"
prove="ppp1" # второй провайдер
ife="ppp1"
flagU=/tmp/routeU
flagE=/tmp/routeE
/sbin/ip route add default dev $ife > /dev/null 2>&1
ping -q -n -c 1 -W 1 -I $ife $ip > /dev/null 2>&1
#ping -q -n -c 1 -W 1 $ip > /dev/null 2>&1
if < $? -ne 0 > ; then
echo "Change route from E to U `date '+%F %T'`" >> /var/log/ckroute.log
/sbin/ip route delete default >> /var/log/ckroute.log 2>&1
/sbin/ip route add default via ${gwu} dev ${ifu} >> /var/log/ckroute.log
touch $flagU
rm -f $flagE
else
if < -e $flagU > ; then
echo "Change route from U to E `date '+%F %T'`" >> /var/log/ckroute.log
/sbin/ip route delete default >> /var/log/ckroute.log 2>&1
/sbin/ip route add default dev ${ife} >> /var/log/ckroute.log 2>&1
rm -f $flagU
touch $flagE
fi
fi
тебе только нужно поправить под свои условия...
например маршрут по умолчанию у тебя будет записываться как
ip route add default via $prov_ip
будут вопросы -- звони, пиши :-)
там можно настроить нескольких провайдеров.
я настраивал объединение каналов. как по мне - никаких особых надбавок в скорости или преимуществ в надежности не получил.
субъективно - получил только падение скорости.