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


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: IPROUTE2 + 2 провайдера  (Прочитано 50518 раз)

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

Оффлайн wida

  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #180 : 12 Декабря 2009, 00:11:39 »
Подскажите пожалуйста что не так делаю.

Имеется:
 Ubuntu-server 9.10,  2-а pppoe соединения с динамическими адресами вида
Цитировать
ppp0      Link encap:Point-to-Point Protocol
          inet addr:86.57.235.13  P-t-P:82.209.253.222  Mask:255.255.255.255
Шлюзы у pppoe могут быть одинаковыми, а могут и разными.
и eth1 192.168.100.0/24 смотрящий в проводную сеть.

Задача:
соединить(сбалансировать) два соединения в одно и раздать в проводную сеть(eth1). Соединять нужно для всего трафика, по портам ничего делить не надо.

Что делаю:
Исхожу из этого howto https://help.ubuntu.ru/wiki/ip_balancing.
Делаю описанным там 1-м способом. После поднятия руками двух pppoe запускаю скрипт /etc/dualppp.sh следующего содержания:
#!/bin/sh


################### CONFIG ############
FreeNet="/etc/routing/FreeNet.list"
### Home Network
l_eth=eth1
l_ip=192.168.100.1
l_net=192.168.100.0/24

########### Local ISP Network #########
li_net=10.0.0.0/8

########### ISP1 ######################
i1_eth=ppp0
i1_ip=`ip address show | grep ppp0 | sed '1d' | awk '{print $2}'`
i1_net=`ip route show dev ppp0 | awk '/r/ { print $1 }'`/32
i1_gw=`ip route show dev ppp0 | awk '/r/ { print $1 }'`

########### ISP2 ######################
i2_eth=ppp1
i2_ip="`ip address show | grep ppp1 | sed '1d' | awk '{print $2}'`"
i2_net=`ip route show dev ppp1 | awk '/r/ { print $1 }'`/32
i2_gw="`ip route show dev ppp1 | awk '/r/ { print $1 }'`"


echo "ppp0 ip $i1_ip"
echo "pppo gw $i1_gw"
echo "ppp0 net $i1_net"

#########ip route2 tables##############
t1=101
t2=102
#######################################

########### Flushing ##################
iptables -t mangle -F NEW_OUT_CONN
iptables -t mangle -F PREROUTING
iptables -t mangle -F OUTPUT
iptables -t mangle -X NEW_OUT_CONN
echo "метка001"
ip route flush table $t2
ip rule del table $t2
ip route flush table $t1
ip rule del table $t1
echo "метка01"
ip route flush cache
#######################################

echo "метка1"
iptables -t mangle -N NEW_OUT_CONN
iptables -t mangle -A NEW_OUT_CONN -j CONNMARK --set-mark 1
iptables -t mangle -A NEW_OUT_CONN -m statistic --mode random --probability 0.50 -j RETURN
iptables -t mangle -A NEW_OUT_CONN -j CONNMARK --set-mark 2
echo "метка2"
for file in $FreeNet; do
if [ -f "$file" ]; then
{ cat "$file" ; echo ; } | while read ip_addr; do
if [ "$ip_addr" != "" ]; then
echo "Статическая маршрутизация для $ip_addr"
iptables -t mangle -A NEW_OUT_CONN -d $ip_addr -j CONNMARK --set-mark 1
fi
done
fi
done
echo "метка3"
iptables -t mangle -A PREROUTING -d $l_net -j RETURN
iptables -t mangle -A PREROUTING -d $li_net -j RETURN
echo "метка4"
iptables -t mangle -A PREROUTING -s $l_net -m state --state new,related -j NEW_OUT_CONN
iptables -t mangle -A PREROUTING -s $l_net -j CONNMARK --restore-mark
echo "метка5"
iptables -t mangle -A OUTPUT -d $l_net -j RETURN
iptables -t mangle -A OUTPUT -d $li_net -j RETURN
echo "метка6"
iptables -t mangle -A OUTPUT -s $l_net -m state --state new,related -j NEW_OUT_CONN
iptables -t mangle -A OUTPUT -s $li_net -j CONNMARK --restore-mark
echo "метка7"
ip route add $l_net dev $l_eth scope link table $t1
ip route add $i2_net dev $i2_eth scope link table $t1
ip route add $i1_net dev $i1_eth scope link src $i1_ip table $t1
ip route add 127.0.0.0/8 dev lo scope link table $t1
ip route add default via $i1_gw table $t1
echo "метка8"
ip rule add prio 51 fwmark 1 table $t1
ip rule add from $i1_ip table $t1
echo "метка9"
ip route add $l_net dev $l_eth scope link table $t2
ip route add $i1_net dev $i1_eth scope link table $t2
ip route add $i2_net dev $i2_eth scope link src $i2_ip table $t2
ip route add 127.0.0.0/8 dev lo scope link table $t2
ip route add default via $i2_gw table $t2
echo "метка10"
ip rule add prio 52 fwmark 2 table $t2
ip rule add from $i2_ip table $t2
echo "метка11"
ip route flush cache

В /etc/iproute2/rt_tables как указано внес изминения:
#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep
101 FreeNet
102 NLine

Файл /etc/routing/FreeNet.list содержит только одну запись:
86.57.250.18
Но после запуска в консоли скрипта /etc/dualppp.sh получаю следующие ошибки:
Цитировать
root@server:~# /etc/dualppp.sh
ppp0 ip 86.57.235.13
pppo gw 82.209.253.222
ppp0 net 82.209.253.222/32
ppp0 ip 93.85.234.204
pppo gw 82.209.255.246
ppp0 net 82.209.255.246/32
iptables: No chain/target/match by that name.
iptables: No chain/target/match by that name.
метка001
RTNETLINK answers: No such file or directory
RTNETLINK answers: No such file or directory
метка01
метка1
метка2
Статическая маршрутизация для 86.57.250.18
метка3
метка4
метка5
метка6
метка7
метка8
метка9
метка10
метка11
Метки специально расставил, что бы было видно где запинается скрипт.

Подскажите пожалуйста, что я не так делаю?

Оффлайн Lion-Simba

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #181 : 12 Декабря 2009, 10:34:20 »
Метки специально расставил, что бы было видно где запинается скрипт.
Подскажите пожалуйста, что я не так делаю?
Нигде не запинается - нормально отрабатывает.

Первые две ошибки "iptables: No chain/target/match by that name" говорят о том, что он не смог найти и удалить цепочку NEW_OUT_CONN, но ведь у вас её наверное и не было?

Вторые две ошибки "RTNETLINK answers: No such file or directory" говорят о том же самом, но для таблиц маршрутизации $t1 и $t2.

Ошибок при создании цепочки и таблиц, как видно из вывода скрипта, не возникает.
Оказываю индивидуальную платную техподдержку широкого профиля. Обращаться в ЛС или Jabber.

Оффлайн wida

  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #182 : 12 Декабря 2009, 14:28:31 »
Хм, если скрипт отрабатывает правильно, то на сервере должно качатся в 2 раза быстрее, так? А на сервере скорость не изменяется. Качает строго через последнее соединение. Значит в самом скрипте что то не так? Не подскажите что подправить?

И подскажите как этот склеинный интернет раздать в проводную сеть(в eth1) ?

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #183 : 12 Декабря 2009, 21:40:11 »
Один источник оно будет качать через один канал. Всегда.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

Оффлайн wida

  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #184 : 13 Декабря 2009, 00:01:47 »
Один источник оно будет качать через один канал. Всегда.
т.е. что бы качало быстрее нужно качать в несколько потоков, ясно. Тоже самое было и на винде, а я думал линукс будет получше склеивать :(

А как раздать склеинный инет? Если пропишу это:
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
то раздаваться будет только с первого подключения? А как что бы с двух сразу?

Оффлайн Nesmit

  • Старожил
  • *
  • Сообщений: 1296
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #185 : 13 Декабря 2009, 12:17:50 »
next hop тебе поможет, что бы качатбь в несколько потоков.

Оффлайн wida

  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #186 : 13 Декабря 2009, 15:35:57 »
способ с next hop плох тем что кэширует маршруты. Но его я тоже попробовал, скрипт пишет both chanel но скорость не увеличивается, качается все равно все через один канал(качаю в несколько потоков).

Пробовал и третий метод, через пересборку ядра, не получается пропатчить iptables1.4.4 патчем patch-o-matic-ng, ругается что не те исходники iptables :(. Пробывал разные patch-o-matic-ng и первые и почти последние(те что больше 100кб).

Уже не знаю что и делать. Подскажите пожалуйста как соединить 2 pppoe канала в один и раздать в сеть. Не хочу из за этого на винду возвращаться..:(

Оффлайн Nesmit

  • Старожил
  • *
  • Сообщений: 1296
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #187 : 13 Декабря 2009, 16:20:19 »
Все зависит от того что качаешь и чем. Торрентам фиолетово.
Конечно, если сессии раскидывать 50\50 будет эффективнее.

Оффлайн wida

  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #188 : 13 Декабря 2009, 21:24:08 »
Суть в том и состоит, что бы два одинаковых pppoe соединения сложить в одно. 50/50. И получить удвоение скорости при скачке тех же торрентов, при скачке большого файла в несколько потоков....

Подскажите пожалуйста как это правильнее всего настроить, а то ни по одному из способов не получается, может есть где нибудь подробный howto?

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #189 : 13 Декабря 2009, 21:27:25 »
При скачке одного файла в несколько потоков через разные внешние IP ты запросто можешь получить фигу.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

Оффлайн wida

  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #190 : 13 Декабря 2009, 23:56:09 »
Нет! 2 месяца работала эта схема на винде через kerio. Качало ровненько через 2 соединения. Каналы загружались на 100% и скорость была равна общей сумме двух каналов. Никаких проблем при скачке файлов в несколько потоков с разных ип никогда не было!

Читал много что в линуксе это делается проще и качественее, Windows есть Windows... Но на практике получается обратное. На винде все настраивается хоть и сторонним софтом, но намного проще:( Стабильность проверить не могу еще, но на винде были свои проблемы.

Так кто нибудь может подсказать по какому нибудь из трех способов?

Оффлайн Nesmit

  • Старожил
  • *
  • Сообщений: 1296
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #191 : 14 Декабря 2009, 09:46:41 »
При скачке одного файла в несколько потоков через разные внешние IP ты запросто можешь получить фигу.
если есть зеркала, то без проблем.
Нет! 2 месяца работала эта схема на винде через kerio. Качало ровненько через 2 соединения. Каналы загружались на 100% и скорость была равна общей сумме двух каналов. Никаких проблем при скачке файлов в несколько потоков с разных ип никогда не было!
по сессиям расскидывай и все.
у мя тут железка от длинка лежит, di604LB. То же склеивает 2 канала без проблем. Но, через 1-2 часа склеивает ласты. После глюк на глюке.

Оффлайн wida

  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #192 : 14 Декабря 2009, 16:50:20 »
По первому и второму способу что не так делаю? где косяк?
По третему способу, как иптаблес пропатчить?

Оффлайн Nesmit

  • Старожил
  • *
  • Сообщений: 1296
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #193 : 14 Декабря 2009, 19:02:27 »
Эта ветка должна помочь
https://forum.ubuntu.ru/index.php?topic=37515.0

Пользователь решил продолжить мысль 16 Декабря 2009, 08:48:14:

Еще одна схемка
http://l7-filter.sourceforge.net/PacketFlow.png
« Последнее редактирование: 16 Декабря 2009, 12:50:04 от Nesmit »

Оффлайн Dimiurg

  • Новичок
  • *
  • Сообщений: 30
  • ХАЦ
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #194 : 19 Марта 2010, 02:32:26 »
Негде немогу найти информацию что делает equalize???
а также scope и global??
и как посоветуете маркировать

iptables -t mangle -N bind_connect # Создаем отдельную цепочку (для простоты управления)
# Следите за правильным соответствием значений меток и интерфейсов!
iptables -t mangle -A bind_connect -i $IFOUT1 -j CONNMARK --set-mark 101
iptables -t mangle -A bind_connect -i $IFOUT2 -j CONNMARK --set-mark 102
iptables -t mangle -I INPUT -m conntrack --ctstate NEW -j bind_connect # Пропускаем через эту процедуру все новые соединения к нашему серверу

или

#iptables -A PREROUTING -i $IPOUT1 -t mangle -j MARK --set-mark 101
#iptables -A PREROUTING -i $IPOUT2 -t mangle -j MARK --set-mark 102
« Последнее редактирование: 19 Марта 2010, 13:20:31 от Dimiurg »
Acer Eee PC 1201HA

 

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