объединение 2х каналов
Модератор: weec
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- проходил мимо
- Сообщения: 4
- Зарегистрирован: 2009-08-09 0:45:25
объединение 2х каналов
Привет, если может кто подсказать ....
Дано: домашний сервер CentOS 5.3, 2х100мбит канала от разных провайдеров,
Задача: получить результирующий траффик при скачивании инфы торрент сетями 2х100 ну или около того.
Собвственно вот Как и каким способом настроить грамотную балансировку траффика ?
Дано: домашний сервер CentOS 5.3, 2х100мбит канала от разных провайдеров,
Задача: получить результирующий траффик при скачивании инфы торрент сетями 2х100 ну или около того.
Собвственно вот Как и каким способом настроить грамотную балансировку траффика ?
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
-
- лейтенант
- Сообщения: 693
- Зарегистрирован: 2009-06-14 7:02:26
Re: объединение 2х каналов
насколько я знаю - в такой постановке никак.
-
- проходил мимо
- Сообщения: 4
- Зарегистрирован: 2009-08-09 0:45:25
Re: объединение 2х каналов
ну почему же, ведь при скачке торентов, идет куча отдельных сессий к каждому из пиров, и ничего не мешает пустить половину запросов через одного провайдера а вторую через другого ...Burner писал(а):насколько я знаю - в такой постановке никак.
-
- лейтенант
- Сообщения: 966
- Зарегистрирован: 2007-12-05 9:45:18
- Откуда: Mytischi
Re: объединение 2х каналов
можно, я знаю лишь в теории, на практике не проверял.
делаете 2 правила nat один на 1ый канал и второй на 2ой.
Потом все пакеты кандидаты пропускаете с 50% вероятностью до второго ната.
Вот пример из гугла:
route add default $ext_gw1
ipfw add allow ip from any to any via $int_if
ipfw add divert natd1 ip from any to $ext_ip1 in
ipfw add divert natd2 ip from any to $ext_ip2 in
ipfw add skipto 8000 ip from $lan to any out
ipfw add allow ip from any to $lan in
ipfw add 8000 prob 0.5 skipto 8500 ip from any to any out ###### это ключевой момент, в манах всё описано
ipfw add 8100 divert natd1 ip from any to any out
ipfw add 8200 allow ip from $ext_ip1 to any out
ipfw add 8500 divert natd2 ip from any to any out
ipfw add 8600 fwd $ext_gw2 ip from $ext_ip2 to any out
ipfw add deny ip from any to any out
делаете 2 правила nat один на 1ый канал и второй на 2ой.
Потом все пакеты кандидаты пропускаете с 50% вероятностью до второго ната.
Вот пример из гугла:
route add default $ext_gw1
ipfw add allow ip from any to any via $int_if
ipfw add divert natd1 ip from any to $ext_ip1 in
ipfw add divert natd2 ip from any to $ext_ip2 in
ipfw add skipto 8000 ip from $lan to any out
ipfw add allow ip from any to $lan in
ipfw add 8000 prob 0.5 skipto 8500 ip from any to any out ###### это ключевой момент, в манах всё описано
ipfw add 8100 divert natd1 ip from any to any out
ipfw add 8200 allow ip from $ext_ip1 to any out
ipfw add 8500 divert natd2 ip from any to any out
ipfw add 8600 fwd $ext_gw2 ip from $ext_ip2 to any out
ipfw add deny ip from any to any out
-
- проходил мимо
- Сообщения: 4
- Зарегистрирован: 2009-08-09 0:45:25
Re: объединение 2х каналов
Большое спасибо за идею ) Все бы ничего, только боюсь в линуксе нет ipfw . Надеюсь все же подобный алгоритм можно как то реализовать с помощью iptables.opt1k писал(а):можно, я знаю лишь в теории, на практике не проверял.
делаете 2 правила nat один на 1ый канал и второй на 2ой.
Потом все пакеты кандидаты пропускаете с 50% вероятностью до второго ната.
Вот пример из гугла:
route add default $ext_gw1
ipfw add allow ip from any to any via $int_if
ipfw add divert natd1 ip from any to $ext_ip1 in
ipfw add divert natd2 ip from any to $ext_ip2 in
ipfw add skipto 8000 ip from $lan to any out
ipfw add allow ip from any to $lan in
ipfw add 8000 prob 0.5 skipto 8500 ip from any to any out ###### это ключевой момент, в манах всё описано
ipfw add 8100 divert natd1 ip from any to any out
ipfw add 8200 allow ip from $ext_ip1 to any out
ipfw add 8500 divert natd2 ip from any to any out
ipfw add 8600 fwd $ext_gw2 ip from $ext_ip2 to any out
ipfw add deny ip from any to any out
-
- лейтенант
- Сообщения: 966
- Зарегистрирован: 2007-12-05 9:45:18
- Откуда: Mytischi
Re: объединение 2х каналов
точно Тогда уж извини, уважаемый, но с конкретным примером помочь тебе не могу. Скажу лишь то что возможности современных фаерволов почти одинаковы, по той причине, что все модные фишки они подсматривают друг у друга и быстренько их доделывают
Могу вам дать верное направление для гуглинга: http://yandex.ru/yandsearch?text=баланс ... stpar4=/s1 первые пара ссылок 100% решают вашу проблему с использованием iptables и линукса
Могу вам дать верное направление для гуглинга: http://yandex.ru/yandsearch?text=баланс ... stpar4=/s1 первые пара ссылок 100% решают вашу проблему с использованием iptables и линукса
-
- лейтенант
- Сообщения: 755
- Зарегистрирован: 2005-11-06 18:25:26
- Контактная информация:
Re: объединение 2х каналов
это называется bondinghippieua писал(а):Привет, если может кто подсказать ....
Дано: домашний сервер CentOS 5.3, 2х100мбит канала от разных провайдеров,
Задача: получить результирующий траффик при скачивании инфы торрент сетями 2х100 ну или около того.
Собвственно вот Как и каким способом настроить грамотную балансировку траффика ?
Загружаем модуль:# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
# cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
# cat /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=none
ONBOOT=yes
NETWORK=10.10.70.0
IPADDR=10.10.70.77
NETMASK=255.255.255.0
USERCTL=NO
Перезапускаем сеть# cat /etc/modprobe.conf | grep bond
alias bond0 bonding
options bond0 mode=1 miimon=100
Смотрим статус# service network restart
# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.2.4 (January 28, 2008)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth0
MII Status: up
Link Failure Count: 2
Permanent HW addr: 00:1b:11:50:7a:01
Slave Interface: eth1
MII Status: up
Link Failure Count: 1
Permanent HW addr: 00:18:fe:8c:a1:96
- Adekamer
- пингвин
- Сообщения: 694
- Зарегистрирован: 2007-10-09 18:36:48
- Откуда: 127.0.0.1
- Контактная информация:
Re: объединение 2х каналов
алексу про боундинг - молодца - нифигушки не разбираешся в технологиях
боундинг - это технология агрегирование каналов
а тут идет разговор про более высокий уровень - нежели банальный эзернет
как вариант если использовать иптаблес - то настраивать нат по более сложному условию
например если исходящий порт от 1024 до 35000 - это нат на канал 1
а исходящий порт 35001-65000 то нат канал 2
ну понятно разбивку имеет смысл усложнить не 2 правилами а например правил 8 более ровно перемешав диапазон портов
но это первое что лезет в голову
боундинг - это технология агрегирование каналов
а тут идет разговор про более высокий уровень - нежели банальный эзернет
как вариант если использовать иптаблес - то настраивать нат по более сложному условию
например если исходящий порт от 1024 до 35000 - это нат на канал 1
а исходящий порт 35001-65000 то нат канал 2
ну понятно разбивку имеет смысл усложнить не 2 правилами а например правил 8 более ровно перемешав диапазон портов
но это первое что лезет в голову
- Adekamer
- пингвин
- Сообщения: 694
- Зарегистрирован: 2007-10-09 18:36:48
- Откуда: 127.0.0.1
- Контактная информация:
Re: объединение 2х каналов
и да - я вернулся
- zingel
- beastie
- Сообщения: 6204
- Зарегистрирован: 2007-10-30 3:56:49
- Откуда: Moscow
- Контактная информация:
-
- проходил мимо
Re: объединение 2х каналов
Где был? Как дела? У нас тут темы, понимаешь, идут интересныеAdekamer писал(а):и да - я вернулся
-
- проходил мимо
- Сообщения: 4
- Зарегистрирован: 2009-08-09 0:45:25
Re: объединение 2х каналов
Помогло следующее
вот скрин для затравки
вот решение
Создать в /etc/iproute2/rt_tables 2 таблицы для каждого из провайдеров
Создать файлик /etc/routing/FreeNet.list в него можно дописывать адреса путь к которым будет идти четко через основного провайдера.
Взять и запустить мой скрипт предварительно отредактировав переменные
вот скрин для затравки
вот решение
Создать в /etc/iproute2/rt_tables 2 таблицы для каждого из провайдеров
Код: Выделить всё
255<--->local
254<--->main
253<--->default
0<----->unspec
101 FreeNet
102 Nline
Взять и запустить мой скрипт предварительно отредактировав переменные
Код: Выделить всё
Описания переменных
FreeNet=путь к текстовому файлу где указаны адреса и сети которые нужно пускать только через основного провайдера в формате:
x.x.x.x
или
x.x.x.x/y
l_eth=интерфейс локальный
l_ip=локальный IP линукс шлюза
l_net=домашняя сеть
li_net=локалка провайдера ( для доступа к внутресетевым ресурсам)
i1_eth=интерфейс провайдера 1
i1_ip=IP провайдера 1
i1_net=сеть провайдера 1
i1_gw=шлюз провайдера 1
i2_eth=интерфейс провайдера 2
i2_ip=IP провайдера 2
i2_net=сеть провайдера 2
i2_gw=шлюз провайдера 2
t1=номер первого провайдера в таблице rt_tables ( /etc/iproute2/rt_tables)
t2=номер второго провайдера в таблице rt_tables ( /etc/iproute2/rt_tables)
Код: Выделить всё
#!/bin/sh
################### CONFIG ############
FreeNet="/etc/routing/FreeNet.list"
### Home Network
l_eth=eth2
l_ip=192.168.5.1
l_net=192.168.5.0/24
########### Local ISP Network #########
li_net=10.0.0.0/8
########### ISP1 ######################
i1_eth=eth0
i1_ip=89.252.20.173
i1_net=89.252.20.0/24
i1_gw=89.252.20.1
########### ISP2 ######################
i2_eth=eth1
i2_ip=10.1.2.161
i2_net=10.0.0.0/16
i2_gw=10.1.0.1
#########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
ip route flush table $t2
ip rule del table $t2
ip route flush table $t1
ip rule del table $t1
ip route flush cache
#######################################
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
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
iptables -t mangle -A PREROUTING -d $l_net -j RETURN
iptables -t mangle -A PREROUTING -d $li_net -j RETURN
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
iptables -t mangle -A OUTPUT -d $l_net -j RETURN
iptables -t mangle -A OUTPUT -d $li_net -j RETURN
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
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
ip rule add prio 51 fwmark 1 table $t1
ip rule add from $i1_ip table $t1
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
ip rule add prio 52 fwmark 2 table $t2
ip rule add from $i2_ip table $t2
ip route flush cache
-
- лейтенант
- Сообщения: 755
- Зарегистрирован: 2005-11-06 18:25:26
- Контактная информация:
Re: объединение 2х каналов
еще раз читаем постановку задачи -"Задача: получить результирующий траффик при скачивании инфы торрент сетями 2х100 ну или около того." Речь явно идет об агрегированиибоундинг - это технология агрегирование каналов
а тут идет разговор про более высокий уровень - нежели банальный эзернет
а это называется балансировка. Разницу чувствуешь?как вариант если использовать иптаблес - то настраивать нат по более сложному условию
например если исходящий порт от 1024 до 35000 - это нат на канал 1
- Adekamer
- пингвин
- Сообщения: 694
- Зарегистрирован: 2007-10-09 18:36:48
- Откуда: 127.0.0.1
- Контактная информация:
Re: объединение 2х каналов
2 Алекс карашо
при боундинге у тебя один ИП - а здесь у тебя 2 ИПа действующих
мой ответ позволяет решить эту задачу
твой - впринципе нерабочий
айдестенд ?2х100мбит канала от разных провайдеров
при боундинге у тебя один ИП - а здесь у тебя 2 ИПа действующих
и заметь - никаких слов про балансировку или агрегированиеДано: домашний сервер CentOS 5.3, 2х100мбит канала от разных провайдеров,
Задача: получить результирующий траффик при скачивании инфы торрент сетями 2х100 ну или около того.
мой ответ позволяет решить эту задачу
твой - впринципе нерабочий
-
- лейтенант
- Сообщения: 755
- Зарегистрирован: 2005-11-06 18:25:26
- Контактная информация:
Re: объединение 2х каналов
если это не агрегирование (читать как суммирование), то я пЫонерполучить результирующий траффик
в задаче ничего не было про то, что надо чтобы два и осталосьпри боундинге у тебя один ИП - а здесь у тебя 2 ИПа действующих
промолчим про такое решение (написанное на коленке, ну да ладно)мой ответ позволяет решить эту задачу
Автор в любом случае уже решил проблему, так что ...
-
- мл. сержант
- Сообщения: 109
- Зарегистрирован: 2008-08-29 0:05:24
Re: объединение 2х каналов
Имел небольшой опыт (причем - даже не на своей машине) объединения 2х каналов. Решал простым маршрутом на оба шлюза, ip route add default nexthop via GW1 nexthop via GW2. Ессно - на каждом интерфейсе нат.
Из наблюдений - балансировка не идеальная, но при большом кол-ве сессий - каналы примерно поровну нагружены. Для новой сессии маршрут выбирается случайным образом, после чего - все пакеты на данный ИП ходят по тому же маршруту. Маршруты кешируются, гугл говорит - кешируются навсегда (до следующего пересоздания дефолтного маршрута), потому периодически стоит маршрут килять и создавать по новой.
И еще одно - для торрента решение с 2мя внешними ИП адресами, думается, не прокатит в полной мере - т.к. на треккере региться будет всего 1 адрес из 2х - соответственно, траффик (вернее, запросы на соединение) будет идти на него. Как это обойти без серьезного допиливания клиента - я не представляю. Хотя - это касается только раздачи, для приема - препятствий быть не должно.
Из наблюдений - балансировка не идеальная, но при большом кол-ве сессий - каналы примерно поровну нагружены. Для новой сессии маршрут выбирается случайным образом, после чего - все пакеты на данный ИП ходят по тому же маршруту. Маршруты кешируются, гугл говорит - кешируются навсегда (до следующего пересоздания дефолтного маршрута), потому периодически стоит маршрут килять и создавать по новой.
И еще одно - для торрента решение с 2мя внешними ИП адресами, думается, не прокатит в полной мере - т.к. на треккере региться будет всего 1 адрес из 2х - соответственно, траффик (вернее, запросы на соединение) будет идти на него. Как это обойти без серьезного допиливания клиента - я не представляю. Хотя - это касается только раздачи, для приема - препятствий быть не должно.
-
- проходил мимо
Re: объединение 2х каналов
я пробовал через nexthop основная проблема клиенты icq и skype вылетьают каждые 5 минут
скорость на трекере плавает то 20 то 3 .. хз с чем связано ....
а так работает ставильно
скорость загрузки постояннно выше 20 аска не реконектиццо
скорость на трекере плавает то 20 то 3 .. хз с чем связано ....
а так работает ставильно
скорость загрузки постояннно выше 20 аска не реконектиццо
-
- мл. сержант
- Сообщения: 109
- Зарегистрирован: 2008-08-29 0:05:24
Re: объединение 2х каналов
Так запустить mtr на какой-то узел, и помедитировать на маршрут - если он изменится, то источник реконнектов выяснен
P.S. Надеюсь при этом не указывали опцию equalize?
P.S. Надеюсь при этом не указывали опцию equalize?
-
- проходил мимо
- Сообщения: 3
- Зарегистрирован: 2009-11-14 21:49:41
Re: объединение 2х каналов
День Добрый !!!
Интересный скрипт, попробовал, столкнулся с двумя проблемами:
1. Проблемы с маской (invalid mask '17), задано 82.200.128.0/17.
2. RTNETLINK answers: Invalid argument.
В чем проблема!!!?
Интересный скрипт, попробовал, столкнулся с двумя проблемами:
1. Проблемы с маской (invalid mask '17), задано 82.200.128.0/17.
2. RTNETLINK answers: Invalid argument.
В чем проблема!!!?
-
- проходил мимо
- Сообщения: 3
- Зарегистрирован: 2009-11-14 21:49:41
Re: объединение 2х каналов
Первый вопрос снимается разобрался.
А вот второй!!!
А вот второй!!!
-
- проходил мимо
- Сообщения: 3
- Зарегистрирован: 2009-11-14 21:49:41
Re: объединение 2х каналов
Разобрался Всем спасибо !!!