Приветствую, коллеги!Существует следующая схема, простая донельзя:
роутер ---- мост на freebsd 9 ---- кастомеры
Мост:
bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
ether 02:9b:ce:33:b9:00
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
maxage 20 holdcnt 6 proto rstp maxaddr 1000 timeout 1200
root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
member: em2 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
ifmaxaddr 0 port 3 priority 128 path cost 20000
member: em1 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
ifmaxaddr 0 port 2 priority 128 path cost 20000IPFW:
00001 allow ip from 192.168.5.0/24 to 192.168.5.0/24 via em0
00002 allow log logamount 10000 ip from any to any layer2
00003 allow log logamount 10000 ip from any to any out layer2
00004 allow log logamount 10000 ip from any to any layer2 mac-type 0x0806
00050 count log logamount 1000 ip from any to any mac-type 0x0806
00060 allow log logamount 10000 ip from any to any layer2
00100 allow log logamount 10000 ip from any to any layer2 not mac-type 0x0800
00120 allow log logamount 10000 ip from any to any mac-type 0x0806
00200 allow log logamount 10000 ip from any to any
Проблема в следующей, пытаюсь пинговать роутьер, на нём вижу свой мак адрес (за мостом разумеется), но ответ не получаю...Интерфйейс em2 это клиентская сеть:
15:30:05.293575 ARP, Request who-has 192.168.4.1 tell 192.168.4.6, length 46
15:30:10.793650 ARP, Request who-has 192.168.4.1 tell 192.168.4.6, length 46bridge0:
15:30:38.293975 ARP, Request who-has 192.168.4.1 tell 192.168.4.6, length 46
15:30:43.794049 ARP, Request who-has 192.168.4.1 tell 192.168.4.6, length 46em1 это на роутер:
15:31:11.294425 ARP, Request who-has 192.168.4.1 tell 192.168.4.6, length 46
15:31:16.794445 ARP, Request who-has 192.168.4.1 tell 192.168.4.6, length 46Впечатление, что именно роутер 192.168.4.1 и не отвечает... Но! На нем виден мак адрес 192.168.4.6...
в дебагах файрвола:Feb 22 15:32:47 kernel: ipfw: 2 Accept MAC in via bridge0
Feb 22 15:32:47 kernel: ipfw: 2 Accept MAC in via em2
Feb 22 15:32:48 kernel: ipfw: 2 Accept MAC in via em1
Подскажите, где может быть засада?
> Подскажите, где может быть засада?Еще в восьмой ветке ИПФВ должен был быть статически вкомпилен в ядро с опцией
options IPFIREWALL_DEFAULT_TO_ACCEPT
для того, чтобы получить ARP-прозрачный бридж. Штатный кернел-модуль, подгружаемый по случаю, для этого не годился. Единственно, нужно самому дописывать в конфиг ипфв строчку 65535 deny all from any to any.
Возможно, в девятке все уже иначе, но вот на этих граблях в бридже я в свое время потоптался изрядно.
Да, это сделано, строчки deny нет :-) Вместо неё allow. Самое обидное, что вижу arp пакет выстреливающий через мост в сторону роутера... (( А обратного нет... при этом если мост исключить из схемы, то конечно же все хорошо
Да, в ядре if_bridge тоже вкомпилен!
> Да, в ядре if_bridge тоже вкомпилен!А ман бриджа читан?
net.link.bridge.ipfw
Set to 1 to enable layer2 filtering with
ipfirewall(4), set to 0 to disable it. This
needs to be enabled for dummynet(4) support.
When ipfw is enabled, pfil_bridge and
pfil_member will be disabled so that IPFW is
not run twice; these can be re-enabled if
desired.net.link.bridge.ipfw_arp
Set to 1 to enable layer2 ARP filtering with
ipfirewall(4), set to 0 to disable it.
Requires ipfw to be enabled.
bridge# sysctl -a | grep bridge.ipfw
net.link.bridge.ipfw: 1
net.link.bridge.ipfw_arp: 1
читан... читан...
> Да, в ядре if_bridge тоже вкомпилен!К слову сказать, неплохо бы для начала просто вырубить ипфв на бридже, и добиться нормальной работы от просто бриджа, нефильтрующего. Чтобы, значить, методом исключения...
Опять же, к слову сказать, проблемы с интефейсов нумерацией вижу я:00001 allow ip from 192.168.5.0/24 to 192.168.5.0/24 via em0
Тогда, как мемберы бриджа - ем1 и ем2. Либо, что тоже не исключено, бридж немного более сложен, чем показано на схеме.
em0 интерфейс управления, там ничего кроме ай-пи управления нет... Фильтрацию отрубал - не помогает зараза. Пакеты то все равно бегают... хоть с ipfw хоть без него :( но не все
> em0 интерфейс управления, там ничего кроме ай-пи управления нет...И смотрит этот ифейс туда же, куда и бридж? Попробуйте повесить ИП для управления на сам бридж, а ем0 либо отключить, либо туда же, в бридж.
Попробывал.. результат один... Подебажил на пиксе (роутере) там только на 192,168,4,255 пакеты от 4,6 идут... фидимо где то фильтрует по пути, буду разбираться. Спасибо!
>> Подскажите, где может быть засада?
> Еще в восьмой ветке ИПФВ должен был быть статически вкомпилен в ядро
> с опцией
> options IPFIREWALL_DEFAULT_TO_ACCEPT
> для того, чтобы получить ARP-прозрачный бридж. Штатный кернел-модуль, подгружаемый по
> случаю, для этого не годился. Единственно, нужно самому дописывать в конфиг
> ипфв строчку 65535 deny all from any to any.
> Возможно, в девятке все уже иначе, но вот на этих граблях в
> бридже я в свое время потоптался изрядно.в 9'ке by default GENERIC без ipfirewall, бридж подгружал модульно и проблем
не наблюдал, но без IPFIREWALL_DEFAULT_TO_ACCEPT в JAIL+VNET сходу получил
единственное правило:65535 deny all from any to any
пришлось воткнуть:
jail_www_exec_afterstart4="/etc/rc.d/ipfw start"ps. все же логично иметь в firewall'ах acccept by default
Привет, Андрей! Как там Дубна поживает? :-)Да он default to accept! Ё-мое... :-)
bridge# ipfw show
00001 16138 1674738 allow ip from 192.168.5.0/24 to 192.168.5.0/24 via em0
00002 12982 675001 allow log logamount 10000 ip from any to any layer2
00003 0 0 allow log logamount 10000 ip from any to any out layer2
00004 0 0 allow log logamount 10000 ip from any to any layer2 mac-type 0x0806
00050 525 24150 count log logamount 1000 ip from any to any mac-type 0x0806
00060 2055 111596 allow log logamount 10000 ip from any to any layer2
00100 0 0 allow log logamount 10000 ip from any to any layer2 not mac-type 0x0800
00120 0 0 allow log logamount 10000 ip from any to any mac-type 0x0806
00200 2257 247577 allow log logamount 10000 ip from any to any
65535 49 3753 allow ip from any to any
Мас адресов я тоже с em1 почему то не наблюдаю...bridge# ifconfig bridge0 addr
00:18:74:2f:c2:80 Vlan1 em2 668 flags=0<>
00:08:21:2b:78:85 Vlan1 em2 1198 flags=0<>
00:26:55:b3:7e:59 Vlan1 em2 1197 flags=0<>:-\
Hi,> Привет, Андрей! Как там Дубна поживает? :-)
стоит пока...
> Да он default to accept! Ё-мое... :-)
как уже посоветовали, попробуй ip от em0 навесить на bridge