if_bridge и ipfw - не ходят пакеты между сетевухами

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
erley
проходил мимо
Сообщения: 2
Зарегистрирован: 2020-01-25 22:51:32

if_bridge и ipfw - не ходят пакеты между сетевухами

Непрочитанное сообщение erley » 2020-01-27 1:26:39

Привет!
Что-то туплю уже второй день с if_bridge, разъясните пожалуйста что к чему.
Есть примерно такая топология сети:

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

/internet/
    | ae0
+---------+                                 +--------+
|         |---wlan0 - - - - - - - - - - - - | Host2  |
|  Host1  |                +--------+       +--------+
|         |---bge0 - - - - | Host3  |
+---------+                +--------+
Интерфейсы wlan0 (это wifi hostap карточка) и bge0 (обычная гигабитная сетевуха) помещены в bridge0 (if_bridge свитч).
На Host1 есть IPFW с такими правилами (упрощено чтобы откинуть лишнее для тестов):

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

# ipfw -a list
00100   4676    445652 allow ip from any to any via lo0
00200  54842  29145407 allow ip from any to any via bridge0
00300    745    152046 deny log logamount 5 ip from any to any
65535      0         0 allow ip from any to any
Так вот, Host2 и Host3 нормально пингуют/коннектятся к Host1, а вот друг друга не видят.
Таблицы arp везде очистил, стал смотреть tcpdump на Host1 что приходит на wlan0 и bge0.
Оказалось, что правило 200 у ipfw недостаточно чтобы разрешить прохождение пакетов между карточками объединёнными в bridge0.
Пришлось явно это разрешить, добавив пару правил чтобы получилось вот так:

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

# ipfw -a list
00100   4676    445652 allow ip from any to any via lo0
00200  54842  29145407 allow ip from any to any via bridge0
00300    7962    1490024 allow ip from any to any via wlan0
00400    3682     665786 allow ip from any to any via bge0
00500    745    152046 deny log logamount 5 ip from any to any
65535      0         0 allow ip from any to any
Теперь все друг с другом коннектятся нормально.
Но мне как-то кажется это некрасиво - мало ли какие сетевухи добавлены в bridge, должен быть способ разрешить весь трафик между ними без перечисления каждой карточки по имени.
Стал читать man 4 if_bridge, там есть раздел про sysctl параметры которые можно подкрутить, но что-то ничего не получается.
Подскажите как правильно сделать, вроде конфигурация типовая, наверняка кто-то с таким сталкивался уже.
Спасибо заранее...

Хостинговая компания 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/

erley
проходил мимо
Сообщения: 2
Зарегистрирован: 2020-01-25 22:51:32

if_bridge и ipfw - не ходят пакеты между сетевухами

Непрочитанное сообщение erley » 2020-01-27 22:19:18

Сам спросил, сам отвечаю :)
Чтобы не повторять разрешающее правило для каждого интерфейса в bridge0, достаточно оставить его только для него самого и прописать такие sysctl:

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

# sysctl net.link.bridge
net.link.bridge.ipfw: 1
net.link.bridge.allow_llz_overlap: 0
net.link.bridge.inherit_mac: 0
net.link.bridge.log_stp: 0
net.link.bridge.pfil_local_phys: 0
net.link.bridge.pfil_member: 0
net.link.bridge.ipfw_arp: 0
net.link.bridge.pfil_bridge: 0
net.link.bridge.pfil_onlyip: 0
И тогда всё работает как надо - пакеты ходят между интерфейсами и все компы в локалке друг друга видят.