URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 41991
[ Назад ]

Исходное сообщение
"Advanced Routing для FreeBSD"

Отправлено Sergey_Krasnikov , 23-Мрт-04 01:40 
Для Linux существует "Linux Advanced Routing & Traffic Control"

Что есть такого же только для FreeBSD?

Задача достаточно распространенна, на провайдера есть 8 подключений по 115200 каждый на каждый порт, провайдер выдает 1 ip. Как бы в системе написать 8 default шлюзов?


Содержание

Сообщения в этом обсуждении
"Advanced Routing для FreeBSD"
Отправлено Sergey_Krasnikov , 23-Мрт-04 09:47 
>Для Linux существует "Linux Advanced Routing & Traffic Control"
>
>Что есть такого же только для FreeBSD?
>
>Задача достаточно распространенна, на провайдера есть 8 подключений по 115200 каждый на
>каждый порт, провайдер выдает 1 ip. Как бы в системе написать
>8 default шлюзов?

Неужели, никто не может ничего подсказать?


"Advanced Routing для FreeBSD"
Отправлено A Clockwork Orange , 23-Мрт-04 10:00 
Расскажи о смысле такого чуда

"Advanced Routing для FreeBSD"
Отправлено jamper , 23-Мрт-04 10:30 
>>Для Linux существует "Linux Advanced Routing & Traffic Control"
>>
>>Что есть такого же только для FreeBSD?
>>
>>Задача достаточно распространенна, на провайдера есть 8 подключений по 115200 каждый на
>>каждый порт, провайдер выдает 1 ip. Как бы в системе написать

А это как 1 ип ... а остальные как работают ????


"Advanced Routing для FreeBSD"
Отправлено Sergey_krasnikov , 23-Мрт-04 14:41 
>>>Для Linux существует "Linux Advanced Routing & Traffic Control"
>>>
>>>Что есть такого же только для FreeBSD?
>>>
>>>Задача достаточно распространенна, на провайдера есть 8 подключений по 115200 каждый на
>>>каждый порт, провайдер выдает 1 ip. Как бы в системе написать
>
>А это как 1 ип ... а остальные как работают ????


Есть компьютер с FreeBSD 4.9 у него есть 1 езернет и 1 мультипортовка с 8 com портами, к каждому com порту прицеплен чудо модем НЕ вражеского производства скоростью в 115200 каждый, тобиш общая пропускная способность около 1 мегобита. Каждый модем завязан с провайдером. У FreeBSD есть 8 ppp сессий, каждая имеет по 1 (отличьному друг от друга) ip адресу с моей стороны, и каждая имеет по 1 (одному и тому же ) ip адресу с другой стороны ;-(

Если я говорю:
route add default _ip_адрес_ppp_соединения_со_стороны_провайдера_

то появляется 1 дефолтовый роут в первый ppp: ppp0

Как зделать так, чтобы появилось 8 дефолтовых роутов?

ЗЫ: к вопросу зачем. Трафик очень дешевый.


"Advanced Routing dlya FreeBSD"
Отправлено Brainbug , 23-Мрт-04 14:52 
>>>>Dlya Linux suschestvuet "Linux Advanced Routing & Traffic Control"
>>>>
>>>>CHto est' takogo zhe tol'ko dlya FreeBSD?
>>>>
>>>>Zadacha dostatochno rasprostranenna, na provajdera est' 8 podklyuchenij po 115200 kazhdyj na
>>>>kazhdyj port, provajder vydaet 1 ip. Kak by v sisteme napisat'
>>
>>A `eto kak 1 ip ... a ostal'nye kak rabotayut ????
>
>
>Est' komp'yuter s FreeBSD 4.9 u nego est' 1 ezernet i 1
>mul'tiportovka s 8 com portami, k kazhdomu com portu priceplen chudo
>modem NE vrazheskogo proizvodstva skorost'yu v 115200 kazhdyj, tobish obschaya propusknaya
>sposobnost' okolo 1 megobita. Kazhdyj modem zavyazan s provajderom. U FreeBSD
>est' 8 ppp sessij, kazhdaya imeet po 1 (otlich'nomu drug ot
>druga) ip adresu s moej storony, i kazhdaya imeet po 1
>(odnomu i tomu zhe ) ip adresu s drugoj storony ;-(
>
>
>Esli ya govoryu:
>route add default _ip_adres_ppp_soedineniya_so_storony_provajdera_
>
>to poyavlyaetsya 1 defoltovyj rout v pervyj ppp: ppp0
>
>Kak zdelat' tak, chtoby poyavilos' 8 defoltovyh routov?
>
>ZY: k voprosu zachem. Trafik ochen' deshevyj.

multipath routing patch dla FreeBSD poi6i. Dumaju pomozhet.
Na toj zhe opennet proskalzivaja novost po povodu etogo patch'a.


"Advanced Routing dlya FreeBSD"
Отправлено Sergey_Krasnikov , 23-Мрт-04 15:02 
>>
>>ZY: k voprosu zachem. Trafik ochen' deshevyj.
>
>multipath routing patch dla FreeBSD poi6i. Dumaju pomozhet.
>Na toj zhe opennet proskalzivaja novost po povodu etogo patch'a.

В том то и дело, что провайдер упирается ногами и не хочет делть multi-ppp.


"Advanced Routing для FreeBSD"
Отправлено A Clockwork Orange , 23-Мрт-04 14:54 
Дальше то что, в чем суть будешь иметь 8 марштрутов по умолчанию...
В тайне приходится догадываться, типа ты хочешь что бы трафик весь равномерно распределялся по всем ppp соединениям. Если так, то тебе надо копать с сторону мультилинка а не маршрута по умолчанию, к тому же это дело надо с провайдером согласовать, без него не как не полуится

А 8 маршрутов по умолчанию..... может есть еще тайный смысл в этом так поведай не таи


"Advanced Routing для FreeBSD"
Отправлено Nikolaev D. , 23-Мрт-04 15:02 
to Brainbug
Ты достал своей латиницей !

По теме - дешево и сердито можно сделать ТАК
http://is.nnz.ru/html/recipe/2-channel.html



"Advanced Routing для FreeBSD"
Отправлено Sergey_Krasnikov , 23-Мрт-04 15:05 
>to Brainbug
>Ты достал своей латиницей !
>
>По теме - дешево и сердито можно сделать ТАК
>http://is.nnz.ru/html/recipe/2-channel.html

У меня все 8 шлюзов имеют один и тотже ip адрес. ;-(


"Advanced Routing для FreeBSD"
Отправлено A Clockwork Orange , 23-Мрт-04 15:13 
А что тогда паришься, один адрес одно правило маршрутизации... получите

"Advanced Routing для FreeBSD"
Отправлено Sergey_Krasnikov , 23-Мрт-04 15:25 
>А что тогда паришься, один адрес одно правило маршрутизации... получите

И что мне с этим правилом делать?

И если не сектрет, как мне это правило написать

у меня 8 интерфейсов ppp

ppp0
10.1.12.3 - 10.15.0.1
ppp1
10.1.12.4 - 10.15.0.1
ppp2
10.1.12.5 - 10.15.0.1
ppp3
10.1.12.6 - 10.15.0.1
ppp4
10.1.12.7 - 10.15.0.1
ppp5
10.1.12.7 - 10.15.0.1
ppp6
10.1.12.8 - 10.15.0.1
ppp7
10.1.12.9 - 10.15.0.1
ppp8
10.1.12.10 - 10.15.0.1

и как ты после этого представляеш правила фаервола?


"Advanced Routing для FreeBSD"
Отправлено A Clockwork Orange , 23-Мрт-04 15:28 
>>А что тогда паришься, один адрес одно правило маршрутизации... получите
>
>И что мне с этим правилом делать?
>
>И если не сектрет, как мне это правило написать
>
>у меня 8 интерфейсов ppp
>
>ppp0
>10.1.12.3 - 10.15.0.1
>ppp1
>10.1.12.4 - 10.15.0.1
>ppp2
>10.1.12.5 - 10.15.0.1
>ppp3
>10.1.12.6 - 10.15.0.1
>ppp4
>10.1.12.7 - 10.15.0.1
>ppp5
>10.1.12.7 - 10.15.0.1
>ppp6
>10.1.12.8 - 10.15.0.1
>ppp7
>10.1.12.9 - 10.15.0.1
>ppp8
>10.1.12.10 - 10.15.0.1
>
>и как ты после этого представляеш правила фаервола?
route add default 10.15.0.1

не катит?


"Advanced Routing для FreeBSD"
Отправлено Sergey_Krasnikov , 23-Мрт-04 15:49 
>>>А что тогда паришься, один адрес одно правило маршрутизации... получите
>>
>>И что мне с этим правилом делать?
>>
>>И если не сектрет, как мне это правило написать
>>
>>у меня 8 интерфейсов ppp
>>
>>ppp0
>>10.1.12.3 - 10.15.0.1
>>ppp1
>>10.1.12.4 - 10.15.0.1
>>ppp2
>>10.1.12.5 - 10.15.0.1
>>ppp3
>>10.1.12.6 - 10.15.0.1
>>ppp4
>>10.1.12.7 - 10.15.0.1
>>ppp5
>>10.1.12.7 - 10.15.0.1
>>ppp6
>>10.1.12.8 - 10.15.0.1
>>ppp7
>>10.1.12.9 - 10.15.0.1
>>ppp8
>>10.1.12.10 - 10.15.0.1
>>
>>и как ты после этого представляеш правила фаервола?
>route add default 10.15.0.1
>
>не катит?


Катит. Только все идет через ppp0


"Advanced Routing dlya FreeBSD"
Отправлено Brainbug , 23-Мрт-04 15:10 
>to Brainbug
>Ty dostal svoej latinicej !
>
>Po teme - deshevo i serdito mozhno sdelat' TAK
>http://is.nnz.ru/html/recipe/2-channel.html

Ti 4to-to imeje6 protiv ?


"Advanced Routing dlya FreeBSD"
Отправлено A Clockwork Orange , 23-Мрт-04 15:53 
http://lists.freebsd.org/pipermail/freebsd-net/2003-October/...

НЕ СОВСЕМ ТО НО МОЖЕТ ЧТО НИБУДЬ ПОЧЕРПНЕШЬ


"Advanced Routing dlya FreeBSD"
Отправлено Sergey_Krasnikov , 23-Мрт-04 16:00 
>http://lists.freebsd.org/pipermail/freebsd-net/2003-October/...
>
>НЕ СОВСЕМ ТО НО МОЖЕТ ЧТО НИБУДЬ ПОЧЕРПНЕШЬ

Нет, в данном случае описывается как поднять мультилинк, мне же он закрыт ;-(


"Advanced Routing dlya FreeBSD"
Отправлено A Clockwork Orange , 23-Мрт-04 16:02 
Кстати , вообще о чем беседа, что бы все потекло к тебе по всем линкам , это настройки провайдера, а твой исходящий так велик, что нужен 1М?

"Advanced Routing dlya FreeBSD"
Отправлено Sergey_Krasnikov , 23-Мрт-04 16:15 
>Кстати , вообще о чем беседа, что бы все потекло к тебе
>по всем линкам , это настройки провайдера, а твой исходящий так
>велик, что нужен 1М?

Беседа о том, чтобы от меня уходили пакеты по 8 линкам, соответственно я каждый пакет маскаражу под тот ip через который этот пакет уходит.

У меня сейчас есть 1.5 мегобит нормального синхрона, но там трафик достаточно дорогой. Появилась альтернатива, туда например можно откидывать smtp, pop3 и всякую другую лабуду.


"Advanced Routing dlya FreeBSD"
Отправлено Sergey_Krasnikov , 23-Мрт-04 16:02 
>>to Brainbug
>>Ty dostal svoej latinicej !
>>
>>Po teme - deshevo i serdito mozhno sdelat' TAK
>>http://is.nnz.ru/html/recipe/2-channel.html
>
>Ti 4to-to imeje6 protiv ?

Имею. У меня ip адрес с _той_ стороны только один.


"Advanced Routing dlya FreeBSD"
Отправлено dawnshade , 23-Мрт-04 20:12 
А что обязательно именно так извращатца???
Нельзя нормальный канал V.35 или Ethernet к примеру взять???

"Advanced Routing dlya FreeBSD"
Отправлено Sergey_Krasnikov , 25-Мрт-04 03:38 
>А что обязательно именно так извращатца???
>Нельзя нормальный канал V.35 или Ethernet к примеру взять???

Нельзя, если беру обычьный xDSL то цена подскакивает примерно к 0.041 цента за метр.

а если вот таким вот извратом, то по прайсу выходит при 10 процентах хагрузки около 0.02-0.019 цента.
;-)

Поставил я вот туд multipath routing.
http://www.opennet.me/opennews/art.shtml?num=2659
Да вот и в этом есть загвоздка. Если исходить из написанного в линке, то роутинг можно организовать, только в том случае если оконечьный ip (дестинейшин) РАЗНЫЕ.

А в моем случае ОЙ.

Может кто, чего присоветует?


"Advanced Routing dlya FreeBSD"
Отправлено dawnshade , 25-Мрт-04 09:57 
>>А что обязательно именно так извращатца???
>>Нельзя нормальный канал V.35 или Ethernet к примеру взять???
>
>Нельзя, если беру обычьный xDSL то цена подскакивает примерно к 0.041 цента
>за метр.

Для DSL вполне нормальная цена.

>а если вот таким вот извратом, то по прайсу выходит при 10
>процентах хагрузки около 0.02-0.019 цента.
>;-)

Ключевое слово - изврат.

>Поставил я вот туд multipath routing.
>http://www.opennet.me/opennews/art.shtml?num=2659
>Да вот и в этом есть загвоздка. Если исходить из написанного в
>линке, то роутинг можно организовать, только в том случае если оконечьный
>ip (дестинейшин) РАЗНЫЕ.
>
>А в моем случае ОЙ.
>
>Может кто, чего присоветует?

Скорее всего ничего.


"Advanced Routing dlya FreeBSD"
Отправлено ifel , 25-Мрт-04 12:17 
Так, сходу есть 3 мысли.
Исходная задача - интерфейсы ppp0, ppp1, pppn;
ips .1 <-> .101, .2 <-> 102, .n <-> .10n (Имеется в виду 2 конца ppp соединения).

Вариант 1.
CISCO (2500 кажись).

Вариант 2.
Модуль ng_fec (объединение несколькиф физ. каналов в один логический).
http://archives.neohapsis.com/archives/sf/ids/2003-q4/0029.html
Требуется поддержка с другой стороны (CISCO, (может FreeBSD с таким же модулем - я не пробовал)).

Вариант 3.
ipfw add yyy prob 0.125 fwd x.x.x.101 ip from loacal_net to any
ipfw add yyy prob 0.125 fwd x.x.x.102 ip from loacal_net to any
ipfw add yyy prob 0.125 fwd x.x.x.(n-1) ip from loacal_net to any
route add -net default x.x.x.n

Если что не понял пиши.


"Advanced Routing dlya FreeBSD"
Отправлено Sergey_Krasnikov , 25-Мрт-04 14:28 
>Так, сходу есть 3 мысли.
>Исходная задача - интерфейсы ppp0, ppp1, pppn;
>ips .1 <-> .101, .2 <-> 102, .n <-> .10n (Имеется в виду 2 конца ppp соединения).
в том то и дело, что со стороны провайдера 'n' не меняется. Оно не 'n' а 'const'.
>
>Вариант 1.
>CISCO (2500 кажись).
дороговасто получается ;-( Но работать будет, уже думали над этим способом.
>
>Вариант 2.
>Модуль ng_fec (объединение несколькиф физ. каналов в один логический).
>http://archives.neohapsis.com/archives/sf/ids/2003-q4/0029.html
>Требуется поддержка с другой стороны (CISCO, (может FreeBSD с таким же модулем
>- я не пробовал)).
Тоже не поможет. Провайдер ногами отпихивается.
>
>Вариант 3.
>ipfw add yyy prob 0.125 fwd x.x.x.101 ip from loacal_net to any
>
>ipfw add yyy prob 0.125 fwd x.x.x.102 ip from loacal_net to any
>
>ipfw add yyy prob 0.125 fwd x.x.x.(n-1) ip from loacal_net to any
>
>route add -net default x.x.x.n

в данном случае x.x.x.101 , x.x.x.102 , x.x.x.(n-1) их нету. Меняются адреса только у меня на ppp интерфейсах, у провайдера он один  и тотже.

>
>Если что не понял пиши.



"Advanced Routing для FreeBSD"
Отправлено loki , 25-Мрт-04 14:29 
Модем - Сириус 128, не так ли ? ;)
Без поддержки Укртелекома ничего не сделаешь.
+мультилинк на них ну очень неустойчив.

"Advanced Routing для FreeBSD"
Отправлено Sergey_Krasnikov , 25-Мрт-04 14:40 
>Модем - Сириус 128, не так ли ? ;)
;-))) угу
>Без поддержки Укртелекома ничего не сделаешь.
поддержка с их стороны полнейшая.
>+мультилинк на них ну очень неустойчив.
очень устойчивый. Все пашет на ура. НО. Они прислали письмо об отключении услуги multi-ppp. ;-(

"Advanced Routing для FreeBSD"
Отправлено Harut , 25-Мрт-04 14:50 
ni znayu kak eto budet viglyadit :) no po poprubuy delay NAT na IP PPP1 , sleduyushuyu sesiyu NAT na IP PPP2 i ...

pomoemu ipvsadm script nazivaetsya (pod linux) dlya pereadresacii kajdoy sesii :)

>>Модем - Сириус 128, не так ли ? ;)
>;-))) угу
>>Без поддержки Укртелекома ничего не сделаешь.
>поддержка с их стороны полнейшая.
>>+мультилинк на них ну очень неустойчив.
>очень устойчивый. Все пашет на ура. НО. Они прислали письмо об отключении
>услуги multi-ppp. ;-(



"Advanced Routing для FreeBSD"
Отправлено qq , 25-Мрт-04 15:47 
>ni znayu kak eto budet viglyadit :) no po poprubuy delay NAT
>na IP PPP1 , sleduyushuyu sesiyu NAT na IP PPP2 i
>...

решение выглядит подходящм, попробуй.

это примерно так получится
natd -interface tun0 -p 8668
natd -interface tun1 -p 8669
...
natd -interface tunN -p 86XX

ipfw add divert 8668 from 192.168.0.0/25 to any out via ed0
ipfw add divert 8668 from any to any in via tun0
ipfw add divert 8669 from 192.168.0.128/25 to any out via ed0
ipfw add divert 8669 from any to any in via tun1
...
ipfw add divert 86XX from 192.168.0.X/MASK to any out via ed0
ipfw add divert 86XX from any to any in via tunN

я естественно не пробовал ;)
может и проканает


"Advanced Routing для FreeBSD"
Отправлено Sergey_Krasnikov , 25-Мрт-04 16:08 
>>ni znayu kak eto budet viglyadit :) no po poprubuy delay NAT
>>na IP PPP1 , sleduyushuyu sesiyu NAT na IP PPP2 i
>>...
>
>решение выглядит подходящм, попробуй.
>
>это примерно так получится
>natd -interface tun0 -p 8668
>natd -interface tun1 -p 8669
>...
>natd -interface tunN -p 86XX
>
>ipfw add divert 8668 from 192.168.0.0/25 to any out via ed0
Откуда вдруг взялся ed0? И почему пакетам нужно вдруг выходить через ed0 а входить через tun0? Это как, я непойму.
>ipfw add divert 8668 from any to any in via tun0
>ipfw add divert 8669 from 192.168.0.128/25 to any out via ed0
>ipfw add divert 8669 from any to any in via tun1
>...
>ipfw add divert 86XX from 192.168.0.X/MASK to any out via ed0
>ipfw add divert 86XX from any to any in via tunN
>
>я естественно не пробовал ;)
>может и проканает



"Advanced Routing для FreeBSD"
Отправлено qq , 25-Мрт-04 16:53 
>Откуда вдруг взялся ed0? И почему пакетам нужно вдруг выходить через ed0
>а входить через tun0? Это как, я непойму.
>

ed0 - для примера, это внутренний ehternet интерфейс...
tun0 - это /usr/bin/ppp создает интерфейс (pppd создает ppp0)

все исходящие пакеты из локалки (то есть out via ed0), из определенного
диапазона адресов идут на первый natd, другой диапазон - на следующий

natd (к примеру, второй) отправляет пакеты через интерфейс tun1 (или ppp1)
используя для трансляции его локальный адрес -
и естественно ответные пакеты идут тоже на tun1.
так что второе правило направляет пришедшие пакеты тому же демону natd (на тот же порт), который отсылал через этот интерфейс, чтобы он их перетранслировал и отдал в локалку.

возможно входящий и исходящий порт natd понадобится разделить (cm. man natd -o -i опции), но я думаю это не понадобится.


"Advanced Routing для FreeBSD"
Отправлено Sergey_Krasnikov , 25-Мрт-04 17:29 
>>Откуда вдруг взялся ed0? И почему пакетам нужно вдруг выходить через ed0
>>а входить через tun0? Это как, я непойму.
>>
>
>ed0 - для примера, это внутренний ehternet интерфейс...
>tun0 - это /usr/bin/ppp создает интерфейс (pppd создает ppp0)
>
>все исходящие пакеты из локалки (то есть out via ed0), из определенного
На мой взгляд "исходящие пакеты из локалки" - будут in via ed0
>
>диапазона адресов идут на первый natd, другой диапазон - на следующий
>
>natd (к примеру, второй) отправляет пакеты через интерфейс tun1 (или ppp1)

Если пакет шел через интерфейс tun0 и вдруг его подвернули под ip адрес интерфейса tun1, то он от этого совсем не решит побежать по интерфейсу tun1. Он всеравно будет выходить через tun0.

В самом начале беседы и ставился вопрос о том как бы зделать так, чтобы все бежало по разным интерфейсам, притом пропорционально. Желательно.

>используя для трансляции его локальный адрес -
>и естественно ответные пакеты идут тоже на tun1.
>так что второе правило направляет пришедшие пакеты тому же демону natd (на
>тот же порт), который отсылал через этот интерфейс, чтобы он их
>перетранслировал и отдал в локалку.
>
>возможно входящий и исходящий порт natd понадобится разделить (cm. man natd -o
>-i опции), но я думаю это не понадобится.


"Advanced Routing для FreeBSD"
Отправлено ifel , 25-Мрт-04 17:57 
>Если пакет шел через интерфейс tun0 и вдруг его подвернули под ip
>адрес интерфейса tun1, то он от этого совсем не решит побежать
>по интерфейсу tun1. Он всеравно будет выходить через tun0.
>
>В самом начале беседы и ставился вопрос о том как бы зделать
>так, чтобы все бежало по разным интерфейсам, притом пропорционально. >Желательно.

А с чего это он уходит по tun0.
Смотри, пакет идет из локали, через router в инет. Договоримся на будущее, что локаль - это fxp0 (192.168.1.254), а каналы в инет - tunX (1.2.3.X).
Итак, пакет идет из локали в инет. Попадает в router: in recv fxp0, прогоняется по firewall, маршрутизируется и уходит например через tun3: out xmit tun3, и как не порадоксально опять прогоняется по firewall.

Читай man ipfw раздел PACKET FLOW и дальше по тексту:
As can be noted from the above picture, the number of times the same packet goes through the firewall can vary between 0 and 4 depending on packet source and destination, and system configuration.

В данном случае от 0 (lo0) до 2 (forward) раз.

А по поводу пропорционально - я уже писал:
ipfw add n prob .125 .........
И таких 8 правил. А .125=1/8, т.е. мы будем пускать трафик по всем каналам с одинаковой вероятностью, т.е. использовать все каналы в равной мере.


"Advanced Routing для FreeBSD"
Отправлено Sergey_Krasnikov , 25-Мрт-04 18:10 
>>Если пакет шел через интерфейс tun0 и вдруг его подвернули под ip
>>адрес интерфейса tun1, то он от этого совсем не решит побежать
>>по интерфейсу tun1. Он всеравно будет выходить через tun0.
>>
>>В самом начале беседы и ставился вопрос о том как бы зделать
>>так, чтобы все бежало по разным интерфейсам, притом пропорционально. >Желательно.
>
>А с чего это он уходит по tun0.
>Смотри, пакет идет из локали, через router в инет. Договоримся на будущее,
>что локаль - это fxp0 (192.168.1.254), а каналы в инет -
>tunX (1.2.3.X).
>Итак, пакет идет из локали в инет. Попадает в router: in recv
>fxp0, прогоняется по firewall, маршрутизируется и уходит например через
Единственное слово смущающее меня ^^^^^^^^ . У меня таблица роутинга выглядит примерно вот так. Маршрутазация заканчивается на tun0. ;-(

su-2.05b# netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            195.5.9.79         UGSc       35  2024121   tun0
195.5.9.79         195.5.10.77        UH          7        0   tun0
127.0.0.1          127.0.0.1          UH          2    15039    lo0
192.168.13.2       lo0                UHS         0        0    lo0
192.168.13.4       192.168.13.2       UH          0   122161    ng0
192.168.13.5       192.168.13.2       UH          1     1167    ng2
192.168.64/26      link#3             UC          1        0   fxp2
192.168.64.4       00:50:22:83:13:d2  UHLW        2    92260   fxp2
10.150.12.195      0.10.dc.1b.68.a8   UHLW        9  3423671    lo0
10.150.12.208/29   link#8             UC          1        0 vlan13
10.150.12.209      link#8             UHLW       36        0 vlan13

>tun3: out
>xmit tun3, и как не порадоксально опять прогоняется по firewall.
>
>Читай man ipfw раздел PACKET FLOW и дальше по тексту:
>As can be noted from the above picture, the number of times
>the same packet goes through the firewall can vary between 0
>and 4 depending on packet source and destination, and system configuration.
>
>
>В данном случае от 0 (lo0) до 2 (forward) раз.
>
>А по поводу пропорционально - я уже писал:
>ipfw add n prob .125 .........
>И таких 8 правил. А .125=1/8, т.е. мы будем пускать трафик по
>всем каналам с одинаковой вероятностью, т.е. использовать все каналы в равной
>мере.



"Advanced Routing для FreeBSD"
Отправлено ifel , 25-Мрт-04 18:33 
>>>Если пакет шел через интерфейс tun0 и вдруг его подвернули под ip
>>>адрес интерфейса tun1, то он от этого совсем не решит побежать
>>>по интерфейсу tun1. Он всеравно будет выходить через tun0.
>>>
>>>В самом начале беседы и ставился вопрос о том как бы зделать
>>>так, чтобы все бежало по разным интерфейсам, притом пропорционально. >Желательно.
>>
>>А с чего это он уходит по tun0.
>>Смотри, пакет идет из локали, через router в инет. Договоримся на будущее,
>>что локаль - это fxp0 (192.168.1.254), а каналы в инет -
>>tunX (1.2.3.X).
>>Итак, пакет идет из локали в инет. Попадает в router: in recv
>>fxp0, прогоняется по firewall, маршрутизируется и уходит например через
>Единственное слово смущающее меня ^^^^^^^^ . У меня таблица роутинга выглядит примерно
>вот так. Маршрутазация заканчивается на tun0. ;-(

Давай смещаться в мыло или icq.
Мой icq 166293327. Сегодня я буду еще пол часа.

А судя по твоей таблице роутинга, у тебя поднято только одно ppp соединение (устройство tun0).
Пришли вывод ifconfig -a.
И давай в icq - быстрее будет.


"Advanced Routing для FreeBSD"
Отправлено ifel , 25-Мрт-04 16:48 
Вставлю свои 5 коп
Как табе и говорили поднимаешь 8 natd на разных портах и соотв на разных интерфейсах:
natd -interface tun0 -p 8660
natd -interface tun1 -p 8661
...
natd -interface tun7 -p 8667

В firewall пишешь:
ipfw add 900 skipto 3000 ip from any to 192.168.0.0/16
ipfw add 1000 prob 0.125 divert 8660 from 192.168.1.0/24 to any
ipfw add 1001 prob 0.125 divert 8661 from 192.168.1.0/24 to any
...
ipfw add 1006 prob 0.125 divert 8666 from 192.168.1.0/24 to any
ipfw add 1007 divert 8666 from 192.168.1.0/24 to any

ipfw add 2000 divert 8660 from any to tun0_ip in recv tun0
ipfw add 2001 divert 8661 from any to tun1_ip in recv tun1
...
ipfw add 2007 divert 8666 from any to tun7_ip in recv tun7

Объяснения:
Правилом 900 ты говоришь, что не надо переписывать заголовки пакетов идущих в твою локалку.
Правила 1000-1006 с вероятность 1/8 заворачивают пакеты идущие из локали (в инет, локальный из-за 900 сюда не поподает) на соответствующие ip, а значит и интерфейсы.
Правило 1007 заворачивает все что идет в инет с локали и еще не завернуто (оставшиеся 1/8 трафика) на последний интерфейс.

Правила 2000-2007 переписывают адреса всех пакетов, полученных через внешние интерфейсы, адресуемых нам).

Попробуешь, напиши как работает.

Этот вариант лучше чем source routing тем, что у тебя пакеты уходят равномерно по всем интерфейсам и ты используешь весь диапазон адресов локалки (это не так актуально, но более красиво и удобно), а не дробишь на подсети (из которых у тебя выпадают по 2 адр - сеть и bcast). Плюс у тебя используется весь канал, а не то, что 5 чел из одной подсети тянут свои 128к, а остальное простаивает.


"Advanced Routing для FreeBSD"
Отправлено qq , 25-Мрт-04 16:58 
>Вставлю свои 5 коп
>Как табе и говорили поднимаешь 8 natd на разных портах и соотв
>на разных интерфейсах:
>natd -interface tun0 -p 8660
>natd -interface tun1 -p 8661
>...
>natd -interface tun7 -p 8667
>
>В firewall пишешь:
>ipfw add 900 skipto 3000 ip from any to 192.168.0.0/16
>ipfw add 1000 prob 0.125 divert 8660 from 192.168.1.0/24 to any
>ipfw add 1001 prob 0.125 divert 8661 from 192.168.1.0/24 to any
>...
>ipfw add 1006 prob 0.125 divert 8666 from 192.168.1.0/24 to any
>ipfw add 1007 divert 8666 from 192.168.1.0/24 to any
>
>ipfw add 2000 divert 8660 from any to tun0_ip in recv tun0
>
>ipfw add 2001 divert 8661 from any to tun1_ip in recv tun1
>
>...
>ipfw add 2007 divert 8666 from any to tun7_ip in recv tun7
>
>
>Объяснения:
>Правилом 900 ты говоришь, что не надо переписывать заголовки пакетов идущих в
>твою локалку.
>Правила 1000-1006 с вероятность 1/8 заворачивают пакеты идущие из локали (в инет,
>локальный из-за 900 сюда не поподает) на соответствующие ip, а значит
>и интерфейсы.
>Правило 1007 заворачивает все что идет в инет с локали и еще
>не завернуто (оставшиеся 1/8 трафика) на последний интерфейс.
>
>Правила 2000-2007 переписывают адреса всех пакетов, полученных через внешние интерфейсы, адресуемых нам).
>
>
>Попробуешь, напиши как работает.
>
>Этот вариант лучше чем source routing тем, что у тебя пакеты уходят
>равномерно по всем интерфейсам и ты используешь весь диапазон адресов локалки
>(это не так актуально, но более красиво и удобно), а не
>дробишь на подсети (из которых у тебя выпадают по 2 адр
>- сеть и bcast). Плюс у тебя используется весь канал, а
>не то, что 5 чел из одной подсети тянут свои 128к,
>а остальное простаивает.

только вот как быть с проблемой когда сайт использует какм-либо образом ip-адрес клиента? ведь каждый запрос может быть сделан с другого ip
хотя насколько я помню в рассматриваемом случае провайдер сам nat-ит, при таком раскладе проблемы нет.


"Advanced Routing для FreeBSD"
Отправлено ifel , 25-Мрт-04 17:18 
>только вот как быть с проблемой когда сайт использует какм-либо образом ip-адрес
>клиента? ведь каждый запрос может быть сделан с другого ip
>хотя насколько я помню в рассматриваемом случае провайдер сам nat-ит, при таком
>раскладе проблемы нет.

Сомневаюсь, что пров сам натит. В 95% пров на выделены дает реальные ip, и смысла их натить.... точнее смысл их тогда давать.

Да, может быть сделан с любого ip. И обойти это никак нельзя - либо твой вариант, либо повесить сквид на один из ip и ходить на такие сайты через него. А вообще - нормальные сайты выдают тебе номер сессии и твой ip им как-то по сараю.

А вообще нельзя и рыбку съесть и ...


"Advanced Routing для FreeBSD"
Отправлено Sergey_Krasnikov , 25-Мрт-04 17:31 
>>Вставлю свои 5 коп
>>Как табе и говорили поднимаешь 8 natd на разных портах и соотв
>>на разных интерфейсах:
>>natd -interface tun0 -p 8660
>>natd -interface tun1 -p 8661
>>...
>>natd -interface tun7 -p 8667
>>
>>В firewall пишешь:
>>ipfw add 900 skipto 3000 ip from any to 192.168.0.0/16
>>ipfw add 1000 prob 0.125 divert 8660 from 192.168.1.0/24 to any
>>ipfw add 1001 prob 0.125 divert 8661 from 192.168.1.0/24 to any
>>...
>>ipfw add 1006 prob 0.125 divert 8666 from 192.168.1.0/24 to any
>>ipfw add 1007 divert 8666 from 192.168.1.0/24 to any
>>
>>ipfw add 2000 divert 8660 from any to tun0_ip in recv tun0
>>
>>ipfw add 2001 divert 8661 from any to tun1_ip in recv tun1
>>
>>...
>>ipfw add 2007 divert 8666 from any to tun7_ip in recv tun7
>>
>>
>>Объяснения:
>>Правилом 900 ты говоришь, что не надо переписывать заголовки пакетов идущих в
>>твою локалку.
>>Правила 1000-1006 с вероятность 1/8 заворачивают пакеты идущие из локали (в инет,
>>локальный из-за 900 сюда не поподает) на соответствующие ip, а значит
>>и интерфейсы.
>>Правило 1007 заворачивает все что идет в инет с локали и еще
>>не завернуто (оставшиеся 1/8 трафика) на последний интерфейс.
>>
>>Правила 2000-2007 переписывают адреса всех пакетов, полученных через внешние интерфейсы, адресуемых нам).
>>
>>
>>Попробуешь, напиши как работает.
>>
>>Этот вариант лучше чем source routing тем, что у тебя пакеты уходят
>>равномерно по всем интерфейсам и ты используешь весь диапазон адресов локалки
>>(это не так актуально, но более красиво и удобно), а не
>>дробишь на подсети (из которых у тебя выпадают по 2 адр
>>- сеть и bcast). Плюс у тебя используется весь канал, а
>>не то, что 5 чел из одной подсети тянут свои 128к,
>>а остальное простаивает.
>
>только вот как быть с проблемой когда сайт использует какм-либо образом ip-адрес
>клиента? ведь каждый запрос может быть сделан с другого ip
У ФрееБСД в ipfw есть еще такая штука как esteblished, вот с ее помощью можно пускать установившуюся сессию по тому же каналу через который она была инициирована.
>хотя насколько я помню в рассматриваемом случае провайдер сам nat-ит, при таком
>раскладе проблемы нет.

"Advanced Routing для FreeBSD"
Отправлено qq , 25-Мрт-04 21:41 

>У ФрееБСД в ipfw есть еще такая штука как esteblished, вот с
>ее помощью можно пускать установившуюся сессию по тому же каналу через
>который она была инициирована.
насколько я помню, established означает пакеты принадлежащие к _любой_ установленной сессии, так что я не знаю как их можно различить.

а я то говорил о проблеме когда новая сессия от того же юзера пойдет с другого ip



"Advanced Routing для FreeBSD"
Отправлено Havoc , 26-Мрт-04 13:32 
А что будет если один или несколько каналов упадут?
Куда будут идти пакеты?


"Advanced Routing для FreeBSD"
Отправлено Sergey_Krasnikov , 25-Мрт-04 17:15 
>>ni znayu kak eto budet viglyadit :) no po poprubuy delay NAT
>>na IP PPP1 , sleduyushuyu sesiyu NAT na IP PPP2 i
>>...
>
>решение выглядит подходящм, попробуй.
>
>это примерно так получится
>natd -interface tun0 -p 8668
>natd -interface tun1 -p 8669
>...
>natd -interface tunN -p 86XX
>
>ipfw add divert 8668 from 192.168.0.0/25 to any out via ed0
Что делает вот ^^^^^ ЭТО ^^^^^^ правило, я так себе и не уяснил. ;-(
я так понимаю это правило должно выглядеть так
ipfw add n allow all from 192.168.0.0/25 to any in recv ed0
ipfw add n+1 divert 8668 from 192.168.0.0/25 to any out xmit tun0
>ipfw add divert 8668 from any to any in via tun0
а это правило как я понял данное решение проблемы на мой взгляд должно выглядеть так
ipfw add n+2 divert 8668 from any to ip_tun0 in recv tun0
ipfw add n+3 allow all from 192.168.0.0/25 to any out xmit ed0

соответсвенно написаны остальные правила.

НО. Вы забыли маленткую мелочь. Пакетики уходят только через tun0.
>ipfw add divert 8669 from 192.168.0.128/25 to any out via ed0
>ipfw add divert 8669 from any to any in via tun1
>...
>ipfw add divert 86XX from 192.168.0.X/MASK to any out via ed0
>ipfw add divert 86XX from any to any in via tunN
>
>я естественно не пробовал ;)
>может и проканает


"Advanced Routing для FreeBSD"
Отправлено qq , 25-Мрт-04 21:27 

>>ipfw add divert 8668 from 192.168.0.0/25 to any out via ed0
>Что делает вот ^^^^^ ЭТО ^^^^^^ правило, я так себе и не
>уяснил. ;-(

сорри, моя ошибка
естественно in via ed0

>НО. Вы забыли маленткую мелочь. Пакетики уходят только через tun0.

идея в том, что при проходе через natd source адрес меняется на адрес соотв. интерфейса, и это происходит _до_ маршрутизации пакета (если я правильно помню man ipfw) и, по идее, пакет после трансляции адреса должен пойти через тот интерфейс, src addres которого ему установлен.


"Advanced Routing для FreeBSD"
Отправлено qq , 25-Мрт-04 21:36 
>идея в том, что при проходе через natd source адрес меняется на
>адрес соотв. интерфейса, и это происходит _до_ маршрутизации пакета (если я
>правильно помню man ipfw)
не.. в man 4 divert про это

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


"Advanced Routing для FreeBSD"
Отправлено Sergey_Krasnikov , 26-Мрт-04 17:26 
>>идея в том, что при проходе через natd source адрес меняется на
>>адрес соотв. интерфейса, и это происходит _до_ маршрутизации пакета (если я
>>правильно помню man ipfw)
>не.. в man 4 divert про это
>
>вообще, интересная задача, к сожалению мне ее не на чем щас смоделировать,
>так что если у вас что-то получится, было бы интересно узнать
>как.

Такое не полцчитСЯ
Был опыт, пакеты при вхождении в интерфейс (in via ed0) не дивертятся под адрес natd на который ты его отслыаеш (divert). При вхождении пакеты могут только редиректится (redirect) на другой интерфейс или на другой ip адрес.

;-( вот такие пироги.



"Advanced Routing для FreeBSD"
Отправлено loki , 26-Мрт-04 11:13 
>>Без поддержки Укртелекома ничего не сделаешь.
>поддержка с их стороны полнейшая.
;-)))))
знаем про поддержку ;-))
сами оттуда ;-))
если тебе с их стороны отключили multilink (а есть такое указание),
то, увы, ничего ты не сделаешь

"Advanced Routing для FreeBSD"
Отправлено Sergey_Krasnikov , 29-Мрт-04 10:24 
>Для Linux существует "Linux Advanced Routing & Traffic Control"
>
>Что есть такого же только для FreeBSD?
>
>Задача достаточно распространенна, на провайдера есть 8 подключений по 115200 каждый на
>каждый порт, провайдер выдает 1 ip. Как бы в системе написать
>8 default шлюзов?


А ктонибуть из ALL вот такую вот штуку себе ставил?
http://www.opennet.me/opennews/art.shtml?num=2659

Очень занятная вещица. Может ктото поделится соображениями как мою задачу осуществить вот на этом патче?


"Advanced Routing для FreeBSD"
Отправлено A Clockwork Orange , 29-Мрт-04 10:33 
Но здесь же разные адреса

"Advanced Routing для FreeBSD"
Отправлено Sergey_Krasnikov , 29-Мрт-04 13:26 
>Но здесь же разные адреса

В том то и дело :-( что если писать конструкцию

route add default -gateway xxx.xxx.xxx.1 -gateway xxx.xxx.xxx.2 ..... -gateway xxx.xxx.xxx.8

то все работает, а если писать

route add default -interface ppp0 -interface ppp1 ... -interface ppp7

то ничего подобного......

Хотя вся разница в том, что именно передается в ядро.

Нужно дописать патч route.c для того чтобы он понимал много "-interface"


"Advanced Routing для FreeBSD"
Отправлено Sergey_Krasnikov , 30-Мрт-04 14:08 
>>Но здесь же разные адреса
>
>В том то и дело :-( что если писать конструкцию
>
>route add default -gateway xxx.xxx.xxx.1 -gateway xxx.xxx.xxx.2 ..... -gateway xxx.xxx.xxx.8
>
>то все работает, а если писать
>
>route add default -interface ppp0 -interface ppp1 ... -interface ppp7
>
>то ничего подобного......
>
>Хотя вся разница в том, что именно передается в ядро.
>
>Нужно дописать патч route.c для того чтобы он понимал много "-interface"

Имел переписку с очень умным человеком. ;-)
Vladimir Grebenschikov <vova@sw.ru>  (SWsoft)
он мне подсказал умную вещ

route add 10.0.0.0 -iface tun0
route add 10.0.0.1 -iface tun1
...
route add 10.0.0.7 -iface tun7

route add default \
        -pathmetric 10 -gateway 10.0.9.0 \
        -pathmetric 10 -gateway 10.0.9.1 \
        ...
        -pathmetric 10 -gateway 10.0.9.7


"Advanced Routing для FreeBSD"
Отправлено A Clockwork Orange , 30-Мрт-04 15:38 
И что заработало?

И где эти адреса расположены?


"Advanced Routing для FreeBSD"
Отправлено Sergey_Krasnikov , 31-Мрт-04 20:56 
>И что заработало?
>
>И где эти адреса расположены?

Да. заработало. А нигде. Нету этих адресо реально. Они выдуманные ;-)))


"Advanced Routing для FreeBSD"
Отправлено A Clockwork Orange , 31-Мрт-04 21:30 
Т.е. эти адреса даже не сетей, просто так, можно было написать все что угодно? и теперь исходящий трафик равномерно идет по всем ппп соединениям?

"Advanced Routing для FreeBSD"
Отправлено bass , 01-Апр-04 05:22 
>>И что заработало?
>>
>>И где эти адреса расположены?
>
>Да. заработало. А нигде. Нету этих адресо реально. Они выдуманные ;-)))


мне кажется вы не в ту сторону пошли. насколько я понял из постановки задачи, необходимо и достаточно было сделать бридж (brctl )всех 8-ми интерфейсов и выдать им 1 айпи и не парить мозг. вам ведь совершенно не нужна балансировка трафика по каналам и тп. так и не зачем городить огород с понтом advanced routing.


"Advanced Routing для FreeBSD"
Отправлено Sergey_Krasnikov , 01-Апр-04 10:20 
>>>И что заработало?
>>>
>>>И где эти адреса расположены?
>>
>>Да. заработало. А нигде. Нету этих адресо реально. Они выдуманные ;-)))
>
>
>мне кажется вы не в ту сторону пошли. насколько я понял из
>постановки задачи, необходимо и достаточно было сделать бридж (brctl )всех 8-ми
>интерфейсов и выдать им 1 айпи и не парить мозг. вам
>ведь совершенно не нужна балансировка трафика по каналам и тп. так
>и не зачем городить огород с понтом advanced routing.

В том то и дело, что нужна балансировка трафика.


"Advanced Routing для FreeBSD"
Отправлено bass , 01-Апр-04 13:40 
>В том то и дело, что нужна балансировка трафика.

раньше вы про это молчали.
вы имеете схему: ваш_роутер==8-каналов на модемах==роутер_прова.
интересно какого вида балансировка, если все 8-м в конечном итоге уходят в один физический девайс (у вашего прова)?

p.s. пожалуйста, если хотите получить точное и быстрое решение вашей проблемы, потрудитесь написать детальную постановку задачи.


"Advanced Routing для FreeBSD"
Отправлено Sergey_Krasnikov , 01-Апр-04 15:43 
>>В том то и дело, что нужна балансировка трафика.
>
>раньше вы про это молчали.
>вы имеете схему: ваш_роутер==8-каналов на модемах==роутер_прова.
Ну вот в общемто Вы правильно написали постановку.
>интересно какого вида балансировка, если все 8-м в конечном итоге уходят в
>один физический девайс (у вашего прова)?
Да. Но. Пропускная способность каждого канала не 100мб, а всего лиш 115200 килобит ;-(
>
>p.s. пожалуйста, если хотите получить точное и быстрое решение вашей проблемы, потрудитесь
>написать детальную постановку задачи.


Вообщемто задача разрешилась уже.
Спасибо многоуважаемому ALL за помощ.


"Advanced Routing для FreeBSD"
Отправлено Havoc , 02-Апр-04 10:07 
Ну и как выглядит решение в конечном (рабочем) варианте?

"Advanced Routing для FreeBSD"
Отправлено Sergey_Krasnikov , 02-Апр-04 21:17 
>Ну и как выглядит решение в конечном (рабочем) варианте?

route add 10.0.0.1 -iface tun0
route add 10.0.0.2 -iface tun1
...
route add 10.0.0.8 -iface tun7

route add default \
        -pathmetric 10 -gateway 10.0.0.1 \
        -pathmetric 10 -gateway 10.0.0.2 \
        ...
        -pathmetric 10 -gateway 10.0.0.8