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


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

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

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

Оффлайн starxryak

  • Автор темы
  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
IP-балансировка
« : 25 Января 2012, 02:46:11 »
Настройка согласно Способа №2 https://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

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
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) [Выделить]
noauth
name wvdial
usepeerdns
Шлюз по умолчанию Вам добавлять не нужно, у Вас специфический default route, поэтому в /etc/ppp/peers/wvdial добавим
Код: (text) [Выделить]
nodefaultrouteДобавим имя соединения, оно понадобиться в дальнейшем.
Код: (text) [Выделить]
ipparam wvdialВ общем подготовка закончена. Теперь нужно написать два скрипта, первый будет срабатывать при подъёме pppX, второй при отвале. Поскольку таблицы маршрутизации уже объявлены в /etc/iproute2/rt_tables, будем ссылаться на них в скриптах.
Код: (bash) [Выделить]
#!/bin/sh
# simple check connections, add route & route tables
# File:      /etc/ppp/ip-up.d/route
# Depends:   pppd, wvdial, iproute2
#
# Config
ethnet="10.15.1.0/29"
ethgw="10.15.1.1"
ethdev="eth0"
tbl1=""
tbl2=""
w1="1"
w2="1"
# Functions
addroute() {
  ip r a $ethnet dev $ethgw t $tbl1
  ip r a $4 dev $1 t $tbl2
  ip r a default via $ethgw dev $ethdev t $tbl1
  ip r a default $4 t $tbl2
}

addrule() {
  ip rule add from $ethnet t $tbl1
  ip rule add from $4 t $tbl2
}
# stuff

if [ $6 = "wvdial" ]; then
  addroute
  addrule
  ip r a default nexthop dev $1 weight $w1 nexthop via $ethgw dev $ethdev weight $w2
else
  ip r a default via $ethgw dev $ethdev
fi

exit 0
Код: (bash) [Выделить]
#!/bin/sh
# simple check connections, del route & route tables
# File:      /etc/ppp/ip-down.d/route
# Depends:   pppd, wvdial, iproute2
#
# Config
ethnet="10.15.1.0/29"
ethgw="10.15.1.1"
ethdev="eth0"
tbl1=""
tbl2=""
flushtables() {
  ip r f t $tbl1
  ip r f t $tbl2
  ip r f cache
}
 
flushrules() {
  ip rule del from $ethnet t $tbl1
  ip rule del from $4 t $tbl2
}
# stuff
if [ $6 = "wvdial" ]; then
  flushtables
  flushrules
  ip r d default
  ip r a default via $ethgw dev $ethdev
fi

exit 0
Вот впринципе простейшая проверка на поднятие pppd и запись|удаление нужных маршрутов.
Теперь некоторые пояснения относительно роутинга в скриптах:
Шлюз на ppp0 не нужен, поскольку туннельное соединение предполагает маску 32, поэтому шлюз может быть каким угодно или не быть вовсе - это не имеет значения.
И еще, эти скрипты не готовое решение, а лишь пример другой реализации, при котором выбор канала будет зависеть от того поднялся pppd или нет.
Проверку каналов и выбор маршрутов можно также осуществлять тем же костылём check.sh, доработанным под такую конфигурацию. На практике мне это не понадобилось.

Пользователь решил продолжить мысль 25 Января 2012, 11:21:12:
И да, ошибку в interfaces вижу я
Код: (bash) [Выделить]
# auto ether
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) [Выделить]
# auto ether
auto eth0
- это я случайно не правильно удалил закоментированные строки перед тем как выклал
в действительности там стоит auto eth0Насколько я понял - эти скрипты выбирают один канал?
« Последнее редактирование: 25 Января 2012, 15:00:48 от starxryak »

Оффлайн ivsatel

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

 

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