The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Раздел полезных советов: Балансировка двух каналов средствам..."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Разговоры, обсуждение новостей (Public)
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Балансировка двух каналов средствам..."  +/
Сообщение от auto_tips (??) on 24-Апр-06, 16:26 
natd -p 8668 -a ip1
natd -p 8669 -a ip2

ipfw add divert 8668 ip from any to ip1 recv if1
ipfw add divert 8669 ip from any to ip2 recv if2
ipfw add check-state
ipfw add prob 0.5 divert 8668 ip from 192.168.0.0/16 to any xmit if1 keep-state
ipfw add divert 8669 ip from 192.168.0.0/16 to any xmit if1 keep-state
ipfw add fwd gw1 ip from ip1 to any out xmit if1 (если default на if1)
ipfw add fwd gw2 ip from ip2 to any out xmit if1

URL:
Обсуждается: http://www.opennet.me/tips/info/1009.shtml

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по ответам | RSS]

1. "Балансировка двух каналов средствами ipfw под FreeBSD"  +/
Сообщение от vorakl email(??) on 24-Апр-06, 16:26 
В строке
ipfw add fwd gw2 ip from ip2 to any out xmit if1
необходимо заменить имя интерфейса if1 на if2
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

3. "Балансировка двух каналов средствами ipfw под FreeBSD"  +/
Сообщение от hmd (??) on 26-Апр-06, 03:14 
вопрос Профи
как себя поведет этот метод в том сдкек когда хост назначения привязытся к ip  искточника...
  был печальный обыт с баланчировкой в PF но мне не  понарвиось как вели себя мние сайты с авторизацией... которые повидимому запоминали ip источнка но приследующем обращении он сенялся на ip  другго канала который не равен ip  при логине ... как следстивие меня просто выбразывало со многих серверов ....

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

4. "Балансировка двух каналов средствами ipfw под FreeBSD"  +/
Сообщение от hmd (??) on 26-Апр-06, 03:15 
простите за кривые руки .... нечем не выровнить
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

5. "Балансировка двух каналов средствами ipfw под FreeBSD"  +/
Сообщение от volos on 02-Май-06, 00:58 
А что будет, если 1 из каналов ляжет? 50% потерь?
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

6. "Балансировка двух каналов средствами ipfw под FreeBSD"  +/
Сообщение от bmc (??) on 03-Май-06, 12:28 
Хреново ведёт, только у меня вопрос - что это за поделки такие, которые с ип-а авторизацию делают? А если я, как юзер провайдера поменял? Или с другого источника инет юзаю? Вобщем если понаделали поделок - пусть сами с ними и ибу*а.
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

7. "Балансировка двух каналов средствами ipfw под FreeBSD"  +/
Сообщение от eGuru email on 10-Май-06, 21:45 
В описанном виде работать не будет.
Объясню. Допустим, клиент соединяется с хостом foo по протоколу tcp. Высылает запрос, его запрос транслируется через ip1, получает ответ, tcp-сессия установлена, хост foo запоминает комбинацию ip1:src-port1 для этой сессии. Теперь, следующий пакет, от клиента, оттранслированный уже через ip2 придет на хост foo с ip2:src-port2 и, есс-но не будет связан с этой сессией и будет отброшен. Соответсвенно, получим 50% потерь для этой сессии.
Автору. Внимательно учим RFC793.
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

8. "Балансировка двух каналов средствами ipfw под FreeBSD"  +/
Сообщение от mexanik on 15-Май-06, 14:03 
Не вникая в суть написанных правил и проблемы смею предположить что гейт, который делает балансировку, пакеты, идущие с одного ИП, будет слать в один и тот же канал. так что никаких потерь не будет. балансировки для одного tcp-соединения не будет.
Работать должно.
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

9. "Балансировка двух каналов средствами ipfw под FreeBSD"  +/
Сообщение от napTu on 15-Май-06, 14:18 
>В описанном виде работать не будет.
...
интересно, а для чего используется связка keep-state, check-state???
По моему имеено для сохранения сессий.
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

10. "Балансировка двух каналов средствами ipfw под FreeBSD"  +/
Сообщение от napTu on 15-Май-06, 14:21 
>А что будет, если 1 из каналов ляжет? 50% потерь?

в данном случае да, но никто не запрещает написать скрипт проверки канала и исправление правил в зависимости от ситуации.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

11. "Балансировка двух каналов средствами ipfw под FreeBSD"  +/
Сообщение от eGuru email on 15-Май-06, 14:51 
Дело тут не в канале, а в том, что пакеты одной и той же сессии приходят на узел назначения с разных адресов. Механизм мультиплексирования TCP протокола предполагает определение принадлежности пакетов к определенному TCP-соединению по комбинации пар IP:port источника и получателя. Разные адреса и/или порты источника - разные сессии с точки зрения получателя.
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

12. "Балансировка двух каналов средствами ipfw под FreeBSD"  +/
Сообщение от eGuru email on 15-Май-06, 14:55 
>>В описанном виде работать не будет.
>...
>интересно, а для чего используется связка keep-state, check-state???
>По моему имеено для сохранения сессий.
Внимательно читаем man ipfw.
Вкратце, данные команды предназначены для генерации динамических правил в ipfw. Никаих данных о TCP соединении они не сохраняют.
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

13. "Балансировка двух каналов средствами ipfw под FreeBSD"  +/
Сообщение от napTu on 17-Май-06, 15:11 
ну хорошо, пусть будет "динамические правила", которые запоминают связку адреса источника, назначения, протокол и интерфейс. Т.о. при повторении адресов повторяется и правило ipfw.
check-state:
"Checks the packet against the dynamic ruleset.  If a match is
found, execute the action associated with the rule which gener-
ated this dynamic rule, otherwise move to the next rule."
keep-state:
"Upon a match, the firewall will create a dynamic rule, whose
             default behaviour is to match bidirectional traffic between
             source and destination IP/port using the same protocol."

Возможно немного нужно будет подправить:

ipfw add check-state
ipfw add prob 0.5 divert 8668 ip from 192.168.0.0/16 to any xmit if1 keep-state
ipfw add divert 8669 ip from 192.168.0.0/16 to any xmit if1 keep-state

на:

ipfw add check-state
ipfw add prob 0.5 skip to xxx
ipfw add divert 8668 ip from 192.168.0.0/16 to any xmit if1 keep-state
ipfw add xxx divert 8669 ip from 192.168.0.0/16 to any xmit if1 keep-state

но в общем, пример очень даже рабочий.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

14. "Балансировка двух каналов средствами ipfw под FreeBSD"  +/
Сообщение от napTu on 17-Май-06, 15:22 
>пакеты, идущие с одного ИП, будет слать в
>один и тот же канал. так что никаких потерь не будет.

>>>балансировки для одного tcp-соединения не будет. <<<

>Работать должно.

Абсолютно верно.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

17. "Балансировка двух каналов средствами ipfw под FreeBSD"  +/
Сообщение от hmd (ok) on 19-Май-06, 05:21 
и какой будет окончательный вердикт, все это ухищрения и заклинанья у кого нить работают однозначно хорошо или все хорошо то лько в теории
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

19. "Балансировка двух каналов средствами ipfw под FreeBSD"  +/
Сообщение от eGuru email(ok) on 20-Июл-06, 21:31 
>и какой будет окончательный вердикт, все это ухищрения и заклинанья у кого
>нить работают однозначно хорошо или все хорошо то лько в теории
>
Балансировать трафик средствами ipfw во freebsd можно. Только немного иначе.

Вкратце, идея: имеем ОДИН natd, адреса транслируем им на какой-либо свой. Собственно балансировка выполняется правилом fwd.
Идеально, если у вас есть собственная независимая от провайдера сеть и автономная система. Второй вариант, договориться с одним из провайдеров, чтобы он пускал к себе и выпускал из своей АС пакеты с обратным адресом другого.
Далее такая конфигурация файрволла.

1. дефолтный маршрут через интерфейс ext0 (первый провайдер)

2. переменная ядра net.inet.ip.fw.one_pass=0

3. правила касающиеся балансировки:

# здесь x.x.x.x адрес маршрутизатора по умолчанию второго провайдера.
10 divert 8868 ip from any to any out via ext0
20 prob 0.5 fwd x.x.x.x ip from any to any out via ext0

4. natd должен иметь базовый адрес отвечающий описанным ранее условиям.

И будет вам счастье. Правда только для исходящего трафика. Балансировка входящего трафика от разных провайдеров задача очень трудно решаемая.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

20. "Балансировка двух каналов средствами ipfw под FreeBSD"  +/
Сообщение от Ivan Voytas on 13-Дек-06, 11:45 
Внимательно смотрим, что я написал :-) И man ipfw на предмет keep-state. Случайным образом выбирается исходящий адрес только для первого пакета tcp/udp соединения. Все последующие пакеты этого соединения идут тем же интерфейсом, тем же шлюзом и от того же ip, как и первый.
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

21. "Балансировка двух каналов средствами ipfw под FreeBSD"  +/
Сообщение от eGuru email(??) on 04-Янв-07, 11:47 
>Внимательно смотрим, что я написал :-) И man ipfw на предмет keep-state.
>Случайным образом выбирается исходящий адрес только для первого пакета tcp/udp соединения.
>Все последующие пакеты этого соединения идут тем же интерфейсом, тем же
>шлюзом и от того же ip, как и первый.
Если динамические правила создаются для пакетов в обе стороны, а не только для ответных входящих, то работать будет. Надо еще проследить за значением переменных ядра касающихся динамических правил, чтобы время жизни правил соответсвовало времени жизни сессий и максимальное количество правил было достаточно.
Данное решение позволит равномерно распределить между каналами TCP/UDP сессии, но не трафик. Зато действовать будет как для исхода так и для входа.
Трудно предсказать, как это решение будет работать для протоколов кроме TCP/UDP. Лучше всего такие протоколы пустить через один из каналов статически.
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

22. "Раздел полезных советов: Балансировка двух каналов средствам..."  +/
Сообщение от Васька (??) on 26-Янв-07, 10:40 
Как-то криво работает keep-state в freebsd 5.4
как только проходит какой-то трафик через правило 8000
начинают сильно валить пакеты даже если на маршрутизатор их никто не шлет,
какбудь-то гоняет пакеты покругу. Через маршрутизатор трафик не проходит.
если убрать из правил keep-state инет начинает работать, трафик идет по обоим каналам
но естетсвенно tcp работает криво. Что не так с keep-state ?

# ipfw show
06100       20       900 divert 8668 ip from any to 192.168.181.1 recv rl1
06200       84      5280 divert 8669 ip from any to 192.168.182.1 recv rl1
06500        0         0 check-state
08000 12239324 601865712 prob 0.500000 divert 8668 ip from 172.18.0.0/22 to any out keep-state
08600      462    105157 divert 8669 ip from 172.18.0.0/22 to any out keep-state
08700       20      4228 fwd 192.168.181.2 ip from 192.168.181.1 to any out
08800       53      6901 fwd 192.168.182.2 ip from 192.168.182.1 to any out
65010        0         0 allow ip from any to any via lo0
65020      984    167457 allow ip from any to any via rl0
65030      295     61321 allow ip from any to any via rl1
65535      308     29275 deny ip from any to any


Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

23. "Раздел полезных советов: Балансировка двух каналов средствам..."  +/
Сообщение от vano (??) on 05-Янв-08, 15:24 
>Как-то криво работает keep-state в freebsd 5.4
>как только проходит какой-то трафик через правило 8000
>начинают сильно валить пакеты даже если на маршрутизатор их никто не шлет,
>
>какбудь-то гоняет пакеты покругу.

тоже самое freebsd 6,2

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

24. "Раздел полезных советов: Балансировка двух каналов средствам..."  +/
Сообщение от mihmih (ok) on 23-Дек-08, 14:10 
Господа, позвольте обратить Ваше внимание на девайс
Dlink DI-LB-604-
заявлена балансировка нагрузки между 2 WAN портами по IP,СЕССИЯМ и БАЙТАМ В СЕКУНДУ.

Может и не мудрить тогда? Посавить железяку?

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

25. "Раздел полезных советов: Балансировка двух каналов средствам..."  +/
Сообщение от Aintmod (??) on 20-Окт-09, 03:24 
>Господа, позвольте обратить Ваше внимание на девайс
>Dlink DI-LB-604-
>заявлена балансировка нагрузки между 2 WAN портами по IP,СЕССИЯМ и БАЙТАМ В
>СЕКУНДУ.
>
>Может и не мудрить тогда? Посавить железяку?

в таком случае может обращать внимания на продукты от мелкомягких и не париться с BSD и GNU?

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру