Что-то туплю уже второй день с if_bridge, разъясните пожалуйста что к чему.
Есть примерно такая топология сети:
Код: Выделить всё
/internet/
| ae0
+---------+ +--------+
| |---wlan0 - - - - - - - - - - - - | Host2 |
| Host1 | +--------+ +--------+
| |---bge0 - - - - | Host3 |
+---------+ +--------+
На 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
Таблицы 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 параметры которые можно подкрутить, но что-то ничего не получается.
Подскажите как правильно сделать, вроде конфигурация типовая, наверняка кто-то с таким сталкивался уже.
Спасибо заранее...