Страница 1 из 1

if_bridge + ipfw

Добавлено: 2009-04-08 12:33:18
Aidaho
Добрый день.
Не могу разобраться со следующей проблемой:
Есть бридж и пара каталистов: <--trunk--><--bridge--><--trunk-->.
На бридже поднят бридж ) с помощью if_bridge:

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

fxp0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
        options=8<VLAN_MTU>
        ether 00:a0:c9:65:c1:35
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
fxp1: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
        options=8<VLAN_MTU>
        ether 00:90:27:85:b7:95
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
rl0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
        options=8<VLAN_MTU>
        ether 4c:00:10:60:67:ca
        media: Ethernet autoselect
        status: no carrier
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=1b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING>
        inet 192.168.5.28 netmask 0xffffff00 broadcast 192.168.5.255
        ether 00:0f:ea:f9:a6:ff
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x6 
        inet6 ::1 prefixlen 128 
        inet 127.0.0.1 netmask 0xff000000 
bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        ether b6:c3:a2:cc:06:65
        id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
        maxage 20 holdcnt 6 proto stp maxaddr 100 timeout 1200
        root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
        member: fxp1 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
        member: fxp0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
так вот, проблема в том, что трафик проходящий через bridge0 или интерфейсы мемберы не фильтруется...

переменные sysctl:

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

net.link.ether.bridge_cfg: 
net.link.ether.bridge_ipfw: 1
net.link.ether.bridge_ipf: 0
net.link.ether.bridge.config: 
net.link.ether.bridge.enable: 0
net.link.ether.bridge.predict: 0
net.link.ether.bridge.dropped: 0
net.link.ether.bridge.packets: 0
net.link.ether.bridge.ipfw_collisions: 0
net.link.ether.bridge.ipfw_drop: 0
net.link.ether.bridge.copy: 0
net.link.ether.bridge.ipfw: 1
net.link.ether.bridge.ipf: 0
net.link.ether.bridge.debug: 0
net.link.ether.bridge.version: 031224
net.link.bridge.pfil_onlyip: 0
net.link.bridge.ipfw_arp: 0
net.link.bridge.pfil_bridge: 1
net.link.bridge.pfil_member: 1
net.link.bridge.pfil_local_phys: 1
net.link.bridge.log_stp: 0
net.link.bridge.ipfw: 1

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

00100        0          0 allow ip from 192.168.5.20 to any layer2 via bridge0
00200        0          0 allow ip from 192.168.5.20 to any  via bridge0
00100        0          0 allow ip from 192.168.5.20 to any fxp1
65535 12581672 4426371331 allow ip from any to any
но при этом если вместо, какой нибудь циски я втыкаю например ноут бук, то правила срабатывают...
версия freebsd 6.3
в чем может быть проблема?

Re: if_bridge + ipfw

Добавлено: 2009-04-08 13:20:22
hizel
о вы изучаете этот леденящий душу писец под названием фильтрование layer2 !
попробуйте

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

allow ip from 192.168.5.20 to any layer2 via bridge0 mac-type vlan 

Re: if_bridge + ipfw

Добавлено: 2009-04-08 13:42:04
Aidaho
hizel писал(а):о вы изучаете этот леденящий душу писец под названием фильтрование layer2 !
попробуйте

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

allow ip from 192.168.5.20 to any layer2 via bridge0 mac-type vlan 
да вообще хотелось бы фильтровать по ip. А, так как ничего не фильтруется, то пытаюсь и Л-2 и Л-3...

Re: if_bridge + ipfw

Добавлено: 2009-04-08 14:02:06
hizel
ну и фильтруйте на уровне layer2

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

allow ip from <ip> to any via bridge0 layer2 mac any any mac-type vlan
allow ip from any to <ip> via bridge0 layer2 mac any any mac-type vlan
только учтите, что кроме vlan,ipv4,ipv6 существуют еще и другие, например arp запросы и т.п.
все секется в tcpdump -i <interface> -npe

ethertype 802.1Q (0x8100) - vlan
тоесть можно напейсать вместо mac-type vlan - mac-type 0x8100

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

allow ip from <ip> to any via bridge0 layer2 mac any any mac-type 0x8100
allow ip from any to <ip> via bridge0 layer2 mac any any mac-type 0x8100
соответственно ipv4 - ethertype IPv4 (0x0800) и т.д.

Re: if_bridge + ipfw

Добавлено: 2009-04-08 14:13:53
Aidaho
да по поводу этого я знаю
hizel писал(а):
ethertype 802.1Q (0x8100) - vlan
тоесть можно напейсать вместо mac-type vlan - mac-type 0x8100

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

allow ip from <ip> to any via bridge0 layer2 mac any any mac-type 0x8100
allow ip from any to <ip> via bridge0 layer2 mac any any mac-type 0x8100
соответственно ipv4 - ethertype IPv4 (0x0800) и т.д.
не фильтруется даже на layer2:

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

00600        0          0 allow ip from 192.168.5.20 to any layer2 via bridge0 mac-type 0x8100
00700        0          0 allow ip from 192.168.5.20 to any via bridge0 mac-type 0x8100
00800        0          0 allow ip from 192.168.5.20 to any via fxp0 mac-type 0x8100
00900        0          0 allow ip from 192.168.5.20 to any via fxp1 mac-type 0x8100
01000        0          0 allow ip from 192.168.5.20 to any via bridge0 layer2 MAC any any mac-type 0x8100
65535 20495620 7225043144 allow ip from any to any
как я выше писал, если убрать из схемы 1 каталист с транковым портом и поставить например бук или хаб тупенький, то все фильтруется на L-3.

Re: if_bridge + ipfw

Добавлено: 2009-04-08 14:44:47
hizel
тоесть на уровне layer2 у вас никогда не фильтровалось?
может net.link.ether.ipfw включить
или добавить mac-type vlan в правила без layer2

Re: if_bridge + ipfw

Добавлено: 2009-04-08 14:53:41
Aidaho
не фильтровал.
net.link.ether.ipfw стоит в 1
тоже не помогает:

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

01100        0          0 allow ip from 192.168.5.20 to any via bridge0 MAC any any mac-type 0x8100
01200        0          0 allow ip from 192.168.5.20 to any via bridge0 mac-type 0x8100

Re: if_bridge + ipfw

Добавлено: 2009-04-08 15:00:37
hizel
идем от по нарастающей

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

count ip from any to any layer2 via bridge0
count ip from any to any not layer2 via bridge0
count ip from any to any layer2 via bridge0 mac-type vlan
count ip from any to any layer2 via bridge0 mac-type ipv4
count ip from any to any not layer2 via bridge0 mac-type vlan
count ip from any to any not layer2 via bridge0 mac-type ipv4
count ip from any to any not layer2 via bridge0 mac-type vlan
count ip from <ip> to any layer2 via bridge0 mac-type vlan
count ip from <ip> to any layer2 via bridge0 mac-type ipv4
count ip from <ip> to any not layer2 via bridge0 mac-type vlan
count ip from <ip> to any not layer2 via bridge0 mac-type ipv4
интересно, хоть что то будет работать

Re: if_bridge + ipfw

Добавлено: 2009-04-08 15:07:32
Aidaho
ну как видно ани ани он видит, а вот по ip ничего:

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

01300    15026     940355 count ip from any to any layer2 via bridge0
01400       89       6153 count ip from any to any not layer2 via bridge0
01500    13044     818299 count ip from any to any layer2 via bridge0 mac-type 0x8100
01600       81       5530 count ip from any to any layer2 via bridge0 mac-type 0x0800
01700        0          0 count ip from any to any not layer2 via bridge0 mac-type 0x8100
01800        0          0 count ip from any to any not layer2 via bridge0 mac-type 0x0800
01900        0          0 count ip from any to any not layer2 via bridge0 mac-type 0x8100
02000        0          0 count ip from 192.168.5.20 to any layer2 via bridge0 mac-type 0x8100
02100        0          0 count ip from 192.168.5.20 to any layer2 via bridge0 mac-type 0x0800
02200        0          0 count ip from 192.168.5.20 to any not layer2 via bridge0 mac-type 0x8100
02300        0          0 count ip from 192.168.5.20 to any not layer2 via bridge0 mac-type 0x0800

Re: if_bridge + ipfw

Добавлено: 2009-04-08 15:14:00
hizel
судя по

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

01300    15026     940355 count ip from any to any layer2 via bridge0
01400       89       6153 count ip from any to any not layer2 via bridge0
большая часть пакетов до layer3 не доползает :shock: и в layer2 нет информации об ip
эм у вас включена net.link.bridge.pfil_member, попробуйте пофильтровать на интерфейсах емберах а не на bridge0

Re: if_bridge + ipfw

Добавлено: 2009-04-10 6:21:20
Aidaho
включил фильтрацию на интерфейсах и вот, что выдает:

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

02400     40209    24880638 count ip from any to any layer2 via fxp0
02500       930      107544 count ip from any to any not layer2 via fxp0
02600     24393    13277709 count ip from any to any layer2 via fxp0 mac-type 0x8100
02700       134       30203 count ip from any to any layer2 via fxp0 mac-type 0x0800
02800         0           0 count ip from any to any not layer2 via fxp0 mac-type 0x8100
02900         0           0 count ip from any to any not layer2 via fxp0 mac-type 0x0800

Re: if_bridge + ipfw

Добавлено: 2009-04-13 7:44:44
Aidaho
Может, кто-нибудь может что то еще подсказать?