if_bridge + shaper

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
void*
ефрейтор
Сообщения: 52
Зарегистрирован: 2008-01-03 13:25:13
Контактная информация:

if_bridge + shaper

Непрочитанное сообщение void* » 2008-09-17 0:41:13

Доброго времени суток.
Столкнулся с проблемой - необходимо затянуть в шейпер часть локального трафа, заходящего на сервер через отдельную сетевую карту и медленный канал. На сервере есть еще одна сетевая с которой она сбриджована - все компы в одной подсети. И тут проблема - шейпить траф на интерфейсе который сбриджован не получается никак. Через правила фаервола пакетики бегают далеко не все, скажем так 1% от реального их количества. Гугл дал пару ссылок где говорится что фаервол и в частности дамминет вообще не работают на бридже. Посмотрел статью тут на сайте - шейпера там нету. Прошу совета, может кто сталкивался... Юзаю ядерный if_bridge, может стоит с ng_bridge повозится?
Заранее спасибо :)

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.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/

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: if_bridge + shaper

Непрочитанное сообщение hizel » 2008-09-17 8:56:32

вы как бридж фильтруете, и фильтруете ли вобще?
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

void*
ефрейтор
Сообщения: 52
Зарегистрирован: 2008-01-03 13:25:13
Контактная информация:

Re: if_bridge + shaper

Непрочитанное сообщение void* » 2008-09-17 10:34:53

Бридж не фильтрую, раньше тот "медленный" (там WiFi) канал просто был воткнут в свич. Реально канал тянет около 15-16МБит но обладает одним неприятным свойством. Когда он его загрузка максимальна реско растет потеря пакетов, задержка и вообще линк начинает вести себя нестабильно. Решил пустить канал через сервер, ограничить средствами ipfw скорость, распределить трафик по приоритетам. Пропарился вчера весь вечер. Даже если первым правилом ставлю

Код: Выделить всё

allow all from any to any via rl0 in 
allow all from any to any via rl0 out
(в rl0 воткнут тот самый WiFi)
и начинаю усиленно качать с ftp по WiFi то видно что во второе правило попало скажем сотня кб, хотя я скачал еже 10МБ. В первое итого меньше.
Пробовал включать в разных комбинациях три сисконтрола (уже сейчас не вспомню но два отвечают за фильтрацию на членах бриджа и на самом bridge0, третий net.link.bridge.ipfw кажется) не помагает :(
Фряха стоит обновленная недавно до 7.1-PRERELEASE
Делал все вроде стандартно:

Код: Выделить всё

device if_bridge в ядре
потом

Код: Выделить всё

ifconfig bridge0 create
ifconfig bridge0 addm rl0 addm dc0 up
ifconfig dc0 10.0.20.200/24 polling up
ifconfig rl0 polling up
сам бридж работает, но через фаєр траф не ходит :)
Последний раз редактировалось Alex Keda 2008-09-17 11:09:56, всего редактировалось 1 раз.
Причина: Товарищщи, юзайте кнопочку [code], цените чужое время...

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: if_bridge + shaper

Непрочитанное сообщение hizel » 2008-09-17 12:34:46

man if_bridge
раздел PACKET FILTERING смотрели? :)
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

void*
ефрейтор
Сообщения: 52
Зарегистрирован: 2008-01-03 13:25:13
Контактная информация:

Re: if_bridge + shaper

Непрочитанное сообщение void* » 2008-09-17 12:55:21

Смотрел, вот там есть такой интересный момент:
When filtering is enabled, bridged packets will pass through the filter inbound on the originating interface, on the bridge interface and outbound on the appropriate interfaces.
Исходя из написанного пробовал делать так:

Код: Выделить всё

add 10 count all from any to any recv rl0 xmit dc0
add 20 count all from any to any recv dc0 xmit rl0
sysctl net.link.bridge.pfil_member=1
тоже не работает :(

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: if_bridge + shaper

Непрочитанное сообщение hizel » 2008-09-17 13:20:00

раздел PACKET FLOW в man ipfw смотрели?
на предмет net.link.ether.bridge_ipfw
а также
(yes, at the moment there is no way to differentiate between ether_demux and bdg_forward).
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

void*
ефрейтор
Сообщения: 52
Зарегистрирован: 2008-01-03 13:25:13
Контактная информация:

Re: if_bridge + shaper

Непрочитанное сообщение void* » 2008-09-17 13:36:07

т.е. если говорить проще нифига из етой затеи не выйдет? :unknown:
других методов я просто не знаю, как такое еще можно реализовать без бриджа?

void*
ефрейтор
Сообщения: 52
Зарегистрирован: 2008-01-03 13:25:13
Контактная информация:

Re: if_bridge + shaper

Непрочитанное сообщение void* » 2008-09-17 13:57:19

Я просто не уверен понимаю ли я правильно приведенную схемму

Код: Выделить всё

                  ^    to upper layers    V
                  |                       |
                  +----------->-----------+
                  ^                       V
            [ip(6)_input]           [ip(6)_output]     net.inet(6).ip(6).fw.enable=1
                  |                       |
                  ^                       V
            [ether_demux]        [ether_output_frame]  net.link.ether.ipfw=1
                  |                       |
                  +-->--[bdg_forward]-->--+            net.link.bridge.ipfw=1
                  ^                       V
                  |      to devices       |
Внизу есть физические сетевые карточки. Входящий пакет допустим попадает в левый нижний "конец" и если он bridged то по пути [bdg_forward] сразу уходит на исходящий интерфейс и привет. тогда net.link.bridge.ipfw=1 должен включать фильтрование на бридже но я такого не наблюдаю

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: if_bridge + shaper

Непрочитанное сообщение hizel » 2008-09-17 14:38:19

ок попробуйте

Код: Выделить всё

sysctl net.link.bridge.pfil_bridge=1
systl net.link.bridge.ipfw=1
ipfw add count ip from any to any via bridge0
все должно работать
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

void*
ефрейтор
Сообщения: 52
Зарегистрирован: 2008-01-03 13:25:13
Контактная информация:

Re: if_bridge + shaper

Непрочитанное сообщение void* » 2008-09-17 20:13:44

Вобщем победил, раскажу как победил )

Код: Выделить всё

net.link.bridge.ipfw=1
net.link.bridge.pfil_local_phys=1
net.link.bridge.pfil_member=0
net.link.bridge.pfil_bridge=1
WiFi линк полудуплекс, пайп и очередь одна.

Код: Выделить всё

pipe 3 config queue 50 bw 10Mbit/s
queue 5 config pipe 3 queue 50 mask src-ip 0xffffffff dst-ip 0xffffffff
add 5300 allow all from any to 10.0.20.255 via bridge0
add 5310 queue 5 all from table(2) to table(2) via bridge0
Вот так работает все нормально только если ІР сервера назначен на bridge0. Если назначить любой сетевой в бридже - не работает. Если фильтровать на rl0 то ІР нужно назначать именно ей, а не bridge0 или dc0 - иначе траф от юзера до сервера или обратно не попадает в фаер. Проходящий траф юзер1-сервер-юзер2 попадает нормально.

maradona
сержант
Сообщения: 188
Зарегистрирован: 2007-12-13 1:06:44
Откуда: г. Ровно
Контактная информация:

Re: if_bridge + shaper

Непрочитанное сообщение maradona » 2008-09-17 23:06:10

Код: Выделить всё

И тут проблема - шейпить траф на интерфейсе который сбриджован не получается никак
у меня вот такие переменные все прекрасно фильтруется на member интерфейсах моста:

Код: Выделить всё

net.link.bridge.pfil_onlyip: 0
net.link.bridge.ipfw_arp: 0
net.link.bridge.pfil_bridge: 0
net.link.bridge.pfil_member: 0
net.link.bridge.pfil_local_phys: 0
net.link.bridge.log_stp: 0
net.link.bridge.ipfw: 1

Код: Выделить всё

ІР сервера назначен на bridge0
а так, не правильно наверно..

void*
ефрейтор
Сообщения: 52
Зарегистрирован: 2008-01-03 13:25:13
Контактная информация:

Re: if_bridge + shaper

Непрочитанное сообщение void* » 2008-09-18 0:11:45

Предыдущий мой пост - отбой, нифига не работает. Тоесть работает но естественно режет траф на обеих интерфейсах. Фильтроватся то оно фильтруется, только мне нужно шейпить траф именно тот который пришел с rl0 и идет на любой комп локалки в том числе и на сам сервер (либо в обратную сторону) . Выловить его полностью не получается. Транзитный трафик проходящий сквозь бридж получается ловить вот так

Код: Выделить всё

count all from any to any via dc0 out bridged  # траф в направлении rl0 -> dc0
count all from any to any via rl0 out bridged  # траф в направлении dc0 -> rl0
А вот ловить траф проходящий от компов на rl0 к самому серверу не выходит. В правила типа from any to me via rl0 in траф вообще не попадает если на rl0 нет ІР адреса. Пример:

Код: Выделить всё

05300      0         0 count ip from me to any via rl0 out
05310      0         0 count ip from any to me via rl0 in
05320   5434   4805939 count ip from any to any via dc0 out layer2
05330   5601   4823381 count ip from any to any via rl0 out layer2
вот тут я переписал файлик 4МБ на сервер, потом скачал его с сервера (верхних 2 правила). Потом ради интереса проделал то же только на машину находящуюся по ту сторону бриджа (нижних два правила). Результат налицо. Картина поменяется если ІР сервера назначить на rl0 а не dc0 - но тогда верхние два правила сцитают траф который реально ходит через dc0, вот такой вот бардак получается с бриджами :)