The OpenNET Project / Index page

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

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

"FreeBSD балансировка 2 каналов с 1 шлюзом"  +/
Сообщение от masters (ok) on 19-Окт-12, 12:30 
Есть FreeBSD 8.2 и 2 канала на одного провайдера. Как сделать round-robin балансировку при помощи ipfw и probe - тут все понятно.
Только что делать, если шлюз один у обоих каналов? Возможно-ли в ipfw делать fwd на шлюз, только через определенную сетевую?
Ответить | Правка | Cообщить модератору

Оглавление

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


1. "FreeBSD балансировка 2 каналов с 1 шлюзом"  +/
Сообщение от михалыч (ok) on 19-Окт-12, 15:27 
> Есть FreeBSD 8.2 и 2 канала на одного провайдера. Как сделать round-robin
> балансировку при помощи ipfw и probe - тут все понятно.
> Только что делать, если шлюз один у обоих каналов? Возможно-ли в ipfw
> делать fwd на шлюз, только через определенную сетевую?

Вот с помощью pf точно возможно "через определенную сетевую".
А с fwd я думаю у вас не получится.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "FreeBSD балансировка 2 каналов с 1 шлюзом"  +/
Сообщение от Serjant (??) on 19-Окт-12, 15:57 
> Есть FreeBSD 8.2 и 2 канала на одного провайдера. Как сделать round-robin
> балансировку при помощи ipfw и probe - тут все понятно.
> Только что делать, если шлюз один у обоих каналов? Возможно-ли в ipfw
> делать fwd на шлюз, только через определенную сетевую?

А как у Вас получился один шлюз для разных сетей? Ну мне так, для общего развития :)

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "FreeBSD балансировка 2 каналов с 1 шлюзом"  +/
Сообщение от Pahanivo (ok) on 19-Окт-12, 16:51 
> А как у Вас получился один шлюз для разных сетей? Ну мне
> так, для общего развития :)

где написано что они разные? :)

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "FreeBSD балансировка 2 каналов с 1 шлюзом"  +/
Сообщение от Serjant (??) on 19-Окт-12, 16:56 
> где написано что они разные? :)

Два канала из одной сети??? Я даже уже и не знаю :))

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "FreeBSD балансировка 2 каналов с 1 шлюзом"  +/
Сообщение от sirius (??) on 19-Окт-12, 17:27 
>> где написано что они разные? :)
> Два канала из одной сети??? Я даже уже и не знаю :))

Даа бывает и такое))
По сабжу, делаете две таблицы маршрутизации, прописываете в них роут по умолжанию с параметрами ifp, каждый через свою сетевую, и через ipfw делаете setfib в свою таблицу маршрутизации.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "FreeBSD балансировка 2 каналов с 1 шлюзом"  +/
Сообщение от михалыч (ok) on 19-Окт-12, 18:04 
>>> где написано что они разные? :)
>> Два канала из одной сети??? Я даже уже и не знаю :))
> Даа бывает и такое))
> По сабжу, делаете две таблицы маршрутизации, прописываете в них роут по умолжанию
> с параметрами ifp, каждый через свою сетевую, и через ipfw делаете
> setfib в свою таблицу маршрутизации.

Да, бывает.

Через setfib можно попробовать так:
В ядро добавить
options ROUTETABLES=2 (ну или столько, сколько надо ))
берем две таблицы (не путаем с таблицами маршрутизации ))
пусть это будут 10 и 11 таблицы
набиваем в них IP
ipfw -q table 10 add 192.168.10.2
ipfw -q table 10 add 192.168.10.3
ipfw -q table 10 add 192.168.10.4

ipfw -q table 11 add 192.168.11.2
ipfw -q table 11 add 192.168.11.3
ipfw -q table 11 add 192.168.11.4

указываем для каждой таблицы маршрутизации дефолт
setfib 0 route -q add default 192.168.12.1
setfib 1 route -q add default 192.168.12.1

и в правилах ipfw добавляем что-то вроде
add 10 setfib 0 all from table(10) to any out xmit em1
add 11 setfib 1 all from table(11) to any out xmit em2

с pf это решается и вовсе без указания дефолтов
с помощью route-to

вот примерный кусок
int_if="em0"
ext_if1="em1"
ext_if2="em2"
ext_gw1="192.168.12.1"
ext_gw2="192.168.12.1"

pass in on $int_if route-to { ($ext_if1 $ext_gw1) } from <table10> to any
pass in on $int_if route-to { ($ext_if2 $ext_gw2) } from <table11> to any

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "FreeBSD балансировка 2 каналов с 1 шлюзом"  +/
Сообщение от user (??) on 19-Окт-12, 20:28 

Э-э-э, ребята, в ipfw уже есть расширенные таблицы, nat global и еще другие вкусности.
И все прекрасно балансируется без фибов.


Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "FreeBSD балансировка 2 каналов с 1 шлюзом"  +/
Сообщение от universite email(ok) on 20-Окт-12, 19:59 
>  Э-э-э, ребята, в ipfw уже есть расширенные таблицы, nat global и
> еще другие вкусности.
>  И все прекрасно балансируется без фибов.

Покажи пример "nat global"

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "FreeBSD балансировка 2 каналов с 1 шлюзом"  +/
Сообщение от user (??) on 20-Окт-12, 21:29 
>>  Э-э-э, ребята, в ipfw уже есть расширенные таблицы, nat global и
>> еще другие вкусности.
>>  И все прекрасно балансируется без фибов.
> Покажи пример "nat global"

Ну у меня 4 направления в Инет, реализованы per-interface acl, per-session load balancing

вот кусок рулесета с внешних ифейсов . Трафик от самого роутера равномерно распределяется по направлениям, но можно тоже реализовать с вероятностями, но тада нужно еще один нат вводить. 4 инстанса ната для каждого направления.

$cmd 2010 nat global ip4 from not me to any recv vlan\*
$cmd 2020 fwd tablearg ip4 from me to any recv vlan\* xmit "table(100)"

$cmd 2041 prob 0.25 skipto 2061 ip4 from not me to any
$cmd 2042 prob 0.50 skipto 2062 ip4 from not me to any
.....

$cmd 2061 nat 1 ip4 from any to any xmit em0
$cmd 2062 nat 2 ip4 from any to any xmit em1
.....
$cmd 2090 fwd tablearg log ip4 from me to any xmit "table(100)"

Используем расширенные таблицы aaa.bbb.ccc.ddd - соотв. default gw

ipfw table 100 add em0 aaa.bbb.ccc.ddd
ipfw table 100 add em1 eee.fff.ggg.hhh
.....

Суть в том, что первый пакет из лок. сети устанавливает соединение -> стейт в нате (2061-2064) и форвардинг, следующие пакеты уже не обрабатываются этими правилами, а только нат глобал ( имеется уже стейт) и далее форвардинг (2010-2020)
Пакеты самого роутера обрабатываются только правилами 2061-...
Ядро скомпилено с опцией RADIX_MPATH, добавлено 4 default gw. Можно еще добавить к каждому default gw вес, но у меня роутер с этим вылетает в корку...
Я все так настраивал, что бы не заморачиваться с IP, используя имена ифейсов.

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

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

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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