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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: IP-балансировка  (Прочитано 1049 раз)

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

Оффлайн starxryak

  • Автор темы
  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
IP-балансировка
« : 25 Январь 2012, 02:46:11 »
Настройка согласно Способа №2 http://help.ubuntu.ru/wiki/ip_balancing домашняя сетка
стоит Ubuntu 10.04.3 LTS
получаем инет  по 2 каналам:
1. с 20-00 до 8-00 и по праздникам c спутника- статика eth0 вход 1Мб отдача 64к
2. 3G модем - динамический ip (Gateway тоже меняеться) по ppp0,подымается (при загрузке и обрыве) автоматически wvdial вход приблизительно 1-2М отдача около 0,6М
оба канала переодически падают(3-5раз в сутки)

задача - по eth1 разбрасывать инет со всеми сервисами (isq,scype,msn,качалку торрентов и т.д.) по дому, по возможности по максимуму использовать оба канала
уровень новичка (может быть продвинутого) - всё это строилось путём нахождения в инет решений и применений по месту

в /etc/sysctl.conf раскомментирована строчка net.ipv4.ip_forward=1
wvdial
(Нажмите, чтобы показать/скрыть)
/etc/ppp/options
(Нажмите, чтобы показать/скрыть)
/etc/network/interfaces
(Нажмите, чтобы показать/скрыть)
ifconfig
(Нажмите, чтобы показать/скрыть)
netstat -rn   (сейчас канал eth0 лежит)
(Нажмите, чтобы показать/скрыть)
на данный момент запускаю с rc.local скрипт  check.sh
check.sh
(Нажмите, чтобы показать/скрыть)
routing.sh
(Нажмите, чтобы показать/скрыть)
vars
(Нажмите, чтобы показать/скрыть)
на сервере стоит squid3,dnsmasq,clamav havp,samba, ufw     /etc/ufw/before.rules   
(Нажмите, чтобы показать/скрыть)
в /etc/default/ufw применена строка DEFAULT_FORWARD_POLICY="ACCEPT"
« Последнее редактирование: 25 Январь 2012, 15:12:45 от starxryak »

Онлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 25960
    • Просмотр профиля
Re: IP-балансировка
« Ответ #1 : 25 Январь 2012, 03:31:08 »
Не ifconfig, a /etc/network/interfaces (впрочем, ifconfig тоже не был лишним)
Не /etc/ppp/options, а конкретный конфиг, по которому происходит соединение с ppp сервером.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

Гарри Кашпировский

  • Гость
Re: IP-балансировка
« Ответ #2 : 25 Январь 2012, 10:51:34 »
Вообще это всё есть в посте. Да, давненько я дела c wvdial не имел. Посему заглянул в man и достал Motorolla c350 :)
Что предлагаю я:
У Вас есть Ethernet-интерфейс и интерфейс, создаваемый pppd. Поскольку Ethernet-интерфейс никуда не денется, конфигурация его известна изменения роутинга лучше всего вносить при подъёме и падении pppX, в GNU\Linux pppd очень хорошо работает с ifupdown. Но прежде чем начать это делать, нужно подготовить сетевые настройки. Во первых, нужно убрать шлюз по-умолчанию на eth0. Во вторых необходимо внести изменения в /etc/ppp/peers/wvdial (на который и ссылается wvdial.conf, через ifupdown), по умолчанию файл выглядит примерно так.
/etc/ppp/peers/wvdial
Код: Text
  1. noauth
  2. name wvdial
  3. usepeerdns
  4.  
Шлюз по умолчанию Вам добавлять не нужно, у Вас специфический default route, поэтому в /etc/ppp/peers/wvdial добавим
Код: Text
  1. nodefaultroute
Добавим имя соединения, оно понадобиться в дальнейшем.
Код: Text
  1. ipparam wvdial
В общем подготовка закончена. Теперь нужно написать два скрипта, первый будет срабатывать при подъёме pppX, второй при отвале. Поскольку таблицы маршрутизации уже объявлены в /etc/iproute2/rt_tables, будем ссылаться на них в скриптах.
Код: Bash
  1. #!/bin/sh
  2. # simple check connections, add route & route tables
  3. # File:      /etc/ppp/ip-up.d/route
  4. # Depends:   pppd, wvdial, iproute2
  5. #
  6. # Config
  7. ethnet="10.15.1.0/29"
  8. ethgw="10.15.1.1"
  9. ethdev="eth0"
  10. tbl1=""
  11. tbl2=""
  12. w1="1"
  13. w2="1"
  14. # Functions
  15. addroute() {
  16.   ip r a $ethnet dev $ethgw t $tbl1
  17.   ip r a $4 dev $1 t $tbl2
  18.   ip r a default via $ethgw dev $ethdev t $tbl1
  19.   ip r a default $4 t $tbl2
  20. }
  21.  
  22. addrule() {
  23.   ip rule add from $ethnet t $tbl1
  24.   ip rule add from $4 t $tbl2
  25. }
  26. # stuff
  27.  
  28. if [ $6 = "wvdial" ]; then
  29.   addroute
  30.   addrule
  31.   ip r a default nexthop dev $1 weight $w1 nexthop via $ethgw dev $ethdev weight $w2
  32. else
  33.   ip r a default via $ethgw dev $ethdev
  34. fi
  35.  
  36. exit 0
  37.  
Код: Bash
  1. #!/bin/sh
  2. # simple check connections, del route & route tables
  3. # File:      /etc/ppp/ip-down.d/route
  4. # Depends:   pppd, wvdial, iproute2
  5. #
  6. # Config
  7. ethnet="10.15.1.0/29"
  8. ethgw="10.15.1.1"
  9. ethdev="eth0"
  10. tbl1=""
  11. tbl2=""
  12. flushtables() {
  13.   ip r f t $tbl1
  14.   ip r f t $tbl2
  15.   ip r f cache
  16. }
  17.  
  18. flushrules() {
  19.   ip rule del from $ethnet t $tbl1
  20.   ip rule del from $4 t $tbl2
  21. }
  22. # stuff
  23. if [ $6 = "wvdial" ]; then
  24.   flushtables
  25.   flushrules
  26.   ip r d default
  27.   ip r a default via $ethgw dev $ethdev
  28. fi
  29.  
  30. exit 0
Вот впринципе простейшая проверка на поднятие pppd и запись|удаление нужных маршрутов.
Теперь некоторые пояснения относительно роутинга в скриптах:
Шлюз на ppp0 не нужен, поскольку туннельное соединение предполагает маску 32, поэтому шлюз может быть каким угодно или не быть вовсе - это не имеет значения.
И еще, эти скрипты не готовое решение, а лишь пример другой реализации, при котором выбор канала будет зависеть от того поднялся pppd или нет.
Проверку каналов и выбор маршрутов можно также осуществлять тем же костылём check.sh, доработанным под такую конфигурацию. На практике мне это не понадобилось.

Пользователь решил продолжить мысль 25 Январь 2012, 11:21:12:
И да, ошибку в interfaces вижу я
Код: Bash
  1. # auto ether
  2. auto eth0
« Последнее редактирование: 25 Январь 2012, 11:21:12 от KT315 »

Оффлайн starxryak

  • Автор темы
  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Re: IP-балансировка
« Ответ #3 : 25 Январь 2012, 14:25:49 »
/etc/network/interfaces  - это я выложил

/etc/ppp/peers/cdma
(Нажмите, чтобы показать/скрыть)

/etc/ppp/peers/dsl-provider
(Нажмите, чтобы показать/скрыть)

 /etc/ppp/peers/provider
(Нажмите, чтобы показать/скрыть)

/etc/ppp/peers/wvdial
(Нажмите, чтобы показать/скрыть)

/etc/ppp/peers/wvdial-pipe
(Нажмите, чтобы показать/скрыть)
может, я не то выложил -соединение wvdial создавалось автоматом самой програмой, поэтому я точно не знаю, что и где он сконфигурировал


И да, ошибку в interfaces вижу я
Код: Bash
  1. # auto ether
  2. auto eth0
- это я случайно не правильно удалил закоментированные строки перед тем как выклал
в действительности там стоит auto eth0Насколько я понял - эти скрипты выбирают один канал?
« Последнее редактирование: 25 Январь 2012, 15:00:48 от starxryak »

Оффлайн ivsatel

  • Активист
  • *
  • Сообщений: 333
    • Просмотр профиля
Re: IP-балансировка
« Ответ #4 : 26 Январь 2012, 17:02:06 »
Цитировать
Насколько я понял - эти скрипты выбирают один канал?
Нет, скрипт объединяет каналы.

 

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