Есть связка 3-х компов. Назовем их ПК1, ПК2, ПК3. Соединены напрямую патчкордами. ПК1-ПК2-ПК3. На ПК2 соответственно 2 сетевых интерфейса. Все карты rl. На ПК1 поднято два влана (скажем влан0 и влан1). На ПК3 тоже поднято 2 влана(влан0 и влан1). ПК2 должен выполнять роль бриджа. Если поднять бридж между интерфейсами(rl0 и rl1) на ПК2, то все работает, но это не нужно... Если создать на ПК2 четыре влана (по два - влан0, влан1 на каждый из интерфейсов - rl0,rl1) и настроить бридж для пар влан0 (для интерфейсов rl0,rl1) и влан1 (для интерфейсов rl0,rl1) т.е. пытаемся бриджевать идентичные вланы на разных интерфейсах, а не интерфейсы целиком, то нифига не пашет.... :( Наблюдается такая картина: назовем интерфейс на ПК2 смотрящий на ПК1 - rl0, а на ПК3 - rl1. При попытке пинга с влан0 на ПК1 - влан0 на ПК3 видим ARP запросы проходящие через бридж между вланами0. Т.е. ARP запрос уходит с влан0 ПК1 и пройдя через бридж приходит на влан0 ПК3. ПК3 отвечает во влан0 ПК1 на этот запрос, но с интерфейса rl0 этот ответ не уходит, т.е. не бриджуется... :(
Кто нибудь знает как это побороть? Или вообще кто-нибудь настраивал бридж между вланами а не интерфейсами?P.S. Если сумбурно написал - скажите. Нарисую картинку с комментамриями и выложу в нете. Ну и ifconfig могу привести для всех 3-х компов...
По-моему man 4 bridge (EXAMPLES) снимает всё вопросы
> По-моему man 4 bridge (EXAMPLES) снимает всё вопросы
Очень ценный совет. Хорошо... будем рисовать, приводить конфиги и переменные...
> По-моему man 4 bridge (EXAMPLES) снимает всё вопросы
Выложено. Глядеть здесь: http://gray.ru/vlan0.gif
ПК1-vlan0vlanid1--vlan0vlanid1-ПК2-vlan2vlanid1--vlan0vlanid1-ПК3
\--vlan1vlanid2--vlan1vlanid2-/ \-vlan3vlanid2--vlan1vlanid2/
Как я представляю, это выглядит так. Тогда переменная на ПК2
net.link.ether.bridge_cfg=vlan0:3,vlan1:4,vlan2:3,vlan3:4
Кстати, вопрос с картинкой сильно отличаются - Вы же писали, что на
ПК1 и ПК2 по два вилана ?
Извиняюсь. В результате опытов и RTFM выявлена рабочая конфигурация :
ПК2 : rl0 на ПК1, rl1 на ПК2
net.link.ether.bridge_cfg=vlan0:3,vlan1:4,vlan2:5,vlan3:6,rl0:5,rl0:6,rl1:3,rl0:4
проще но не так красиво vlan0:1,vlan1:1,rl1:1,vlan2:2,vlan3:2,rl0:2
Для вашей картинки(если на ПК1 и ПК3 по одному вилану и на ПК2 два)
на ПК2:
ifconfig vlan0 vlan 1 vlandev rl0
ifconfig vlan1 vlan 1 vlandev rl1
net.link........=vlan0:1,vlan1:2,rl0:2,rl1:1
> Извиняюсь. В результате опытов и RTFM выявлена рабочая конфигурация :
>ПК2 : rl0 на ПК1, rl1 на ПК2
>net.link.ether.bridge_cfg=vlan0:3,vlan1:4,vlan2:5,vlan3:6,rl0:5,rl0:6,rl1:3,rl0:4
>проще но не так красиво vlan0:1,vlan1:1,rl1:1,vlan2:2,vlan3:2,rl0:2
>Для вашей картинки(если на ПК1 и ПК3 по одному вилану и на
>ПК2 два)
>на ПК2:
>ifconfig vlan0 vlan 1 vlandev rl0
>ifconfig vlan1 vlan 1 vlandev rl1
>net.link........=vlan0:1,vlan1:2,rl0:2,rl1:1
На схеме я все упростил. То что вы предлагаете несколько не то. В такой конфигурации получается что пакет дублируется, т.е. с интерфейса вылетает два одинаковых пакета, только один инкапсулированый во влан, а второй нет.В идеале, хотелось бы получить бридж именно на уровне вланов, а не чистого эзернета. Нужен он, для того, чтобы под сети клиентов создавать отдельные вланы и шейпить их типа:
ipfw add pipe 1 ip from any to any via vlan0Пока же, что я вижу из всего этого, что как только включается бридж - на вланы перестают попадать юникастовые пакеты. Т.е. на интерфейсе они видны в инкапсулированном виде, а если смотреть tcpdump на влане привязанном к этому интерфейсу, то из этих инкапсулированных пакетов - туда попадают только мультикасты и бродкасты... Если бридж выключить, то сразу становиться все нормально и на влане появляются все пакеты... :(
Неужели никто не сталкивался с подобной проблемой? Люди - не молчите плиз!!!
>Неужели никто не сталкивался с подобной проблемой? Люди - не молчите плиз!!!
>
Упрости задачу или разбей ее на части. Очень лень читать весь рисунок.
>>Неужели никто не сталкивался с подобной проблемой? Люди - не молчите плиз!!!
>>
>Упрости задачу или разбей ее на части. Очень лень читать весь рисунок.
>
Ок. Упрощаем... смотреть только третью часть рисунка. На центральном компе имеем с одной сетевухи(rl0) влан(vlan0), другая(rl1) чистая... tcpdump'ом видим все пакеты и там(vlan0) и там(rl1). Как только включаем бридж между вланом(vlan0) и сетевухой(rl1), то на влан перестают попадать все пакеты, кроме бродкастов и мультикастов. Причем если смотреть на интерфейс(rl0) то видны все пакеты этого(vlan0) влана в нормальном, то бишь инкапсулированном виде. Как только брид выключается, то на вслане мы снова видим все пакеты... Куда копать?
А для чего такой наворот нужне то вообще?
>А для чего такой наворот нужне то вообще?
В сообщении 6 собственно говоря об этом написано. Впринципе смысл в том, что схема построения сети такая: клиенты(в разных вланах)-свич-роутер(в режиме бриджа)-канал_2Мбит-роутер(в режиме бриджа)-свич-клиенты(в разных вланах). Таким образом имеем на каждого клиента (имеющего несколько точек) отдельный влан и в случае если все заработает, то мы можем его шейпить, чтоб клиент не загружал весь (2Мбит) канал...
Для тех кому интересно: проблема была решена благодаря Максиму Коновалову. Вот здесь http://lists.freebsd.org/pipermail/freebsd-net/2003-June/000... было найдено обсуждение аналогичной проблемы и ее решения под FreeBSD 5.1. После комментирования соответствующего куска кода в файле /sys/net/if_ethersubr.c и пересборки ядра все заработало как положено.
>все заработало как положено.
Немного поторопился. После ряда экспериментов было выяснено, что "все работает как положено" только когда физический интерфейс в промискоус моде... а так как для решения задачи необходимо объединять в бридж vlan'ы, то все работает когда слушаешь tcpdump'ом rl0 и rl1, и не работает если перестаешь их слушать... :(