BRIDGE u karty

Petr Rehor prehor at gmail.com
Tue Jan 10 01:23:22 CET 2006


2006/1/1, Cizek Milan <cizek.milan at seznam.cz>:
> Ahoj,
> mam takovy problem. Abych mohl kontrolovat a sledovat prutok na jedne
> karte (wi), tak pouzivam ifconfig wi0 -apbridge, který uz ve verzi 6.0
> funguje celkem dobře. Problem je, ze po tomto nastaveni se vzajemne
> prestanou videt klienti komunikujici prave přes tuto kartu. Nevim, proc
> tomu tak je, karta sice tim padem nefunguje jako bridge, ale router jako
> takovy ma gateway_enable. V routovaci tabulce mam
>
> 10.0.1/24          link#5             UC          0        0    wi0
>
> Tak jsem si myslel, ze i když bridge neudela samotna karta, udela to systém
> a data posle zpet na ni. Ale bohuzel to tak není. Muzete mi někdo objasnit,
> co se tam vlastne deje? Je to tak, ze pokud na karte vypnu bridge,
> automaticky se vyradi ze seznamu, na ktery je uplatnovano
> gateway_enable?

Dival jsem se jak je to udelane a funguje to nasledovne:

Paket z driveru wifikarty jde do ieee80211_deliver_data
http://fxr.watson.org/fxr/source/net80211/ieee80211_input.c?v=RELENG6#L664
kde se zjisti jestli se maji pakety bridgovat a pokud ano, tak se zase timtez
interfejsem odesle ven. Toto ovlivnuje ifconfig -apbridge.

Dale paket pokracuje do bridge_in
http://fxr.watson.org/fxr/source//net/bridge.c?v=RELENG6#L389

Tady se rozhoduje, jestli se bude paket normalne bridgovat.
http://fxr.watson.org/fxr/source/net/if_ethersubr.c?v=RELENG6#L628
Pokud ne pokracuje do ether_demux
Pokud ano, jde do bdg_forward ktery ho odesle se do vystupniho interfejsu.
Pokud je ale vystupni interfejs bridgovaneho paketu shodny se vstupnim,
tak se paket zahodi
http://fxr.watson.org/fxr/source/net/bridge.c?v=RELENG6#L854

V ether_demux se zjisti jestli je paket lokalni (paket je urcen pro MAC adresu
interfejsu pres ktery prisel). Pokud ne, je zahozen.
http://fxr.watson.org/fxr/source/net/if_ethersubr.c?v=RELENG6#L667


Z toho vyplyva:

Pokud se pouzije ifconfig -apbridge tak net80211 vrstva prestane bridgovat
pakety zpatky do interfejsu kterym prisly dovnitr. Pakety pokracuji do vrstvy
net. Pokud je zapmuty promiskuitni mod, jsou to vsechny pakety ktere se na
wifikarte objevily.

I kdyz se zapne promiskuitni mod, nelokalni paket nikdy nedoputuje do IP
vrstvy a nemuze byt routovan, takze pro vase potreby nastaveni
gateway_enable nema zadny vliv.

Bridge vrstva zahazuje pakety, ktere by se mely bridgovat zpatky do tehoz
interfejsu, tak vam taky nepomuze.


Pokud by se to melo nejak dotesat, tak by se musel apbridge prenest z vrstvy
net80211 do http://fxr.watson.org/fxr/source/net/bridge.c?v=RELENG6#L854
Netroufne si na to nekdo ?

> Existuje nejake reseni, jak mit kontrou nad pruchozimi daty a zaroven
> umoznit komunikaci mezi klienty na zminene karte?

Neco podobneho (bez wifi karty - je tam nekolik AP pripojenych na switch,
kteremu se rika ktery port s kterym smi komunikovat takze kazde AP smi
komunikovat s routerem, ale mezi AP komunikace nejde) oprasuju mistnimu
wifistovi na vodarne ;-)

Nabindujte na wifi kartu pro kazdeho klienta samostatny IP subnet, aby si ani
nahodou nemysleli, ze by mohli mezi sebou komunikovat naprimo na linkove
vrstve. Pak budou vsechny pakety prichazet s MAC adresou wifi karty a
normalne projdou az do IP vrstvy, kde se zaroutuji a odejdou zase wifi kartou
ven. Bridge se kvuli tomu zapinat nemusi, jde o cisty routing na IP vrstve
(a je kvuli tomu potreba gateway_enable=YES).

Prisel jsem u tohoto reseni jenom na jeden problem - kdyz je vice subnetu s
maskou 255.255.255.252 na jednom interfejsu a klient posle do sveho rozsahu
net broadcast, tak FreeBSD 5.3 nepozna do ktereho subnetu to spravne patri
a posila zpatky zmatene ICMP Redirect pakety. Zatim jsem to vyresil
vystupnim IPFW filtrem, ktery ty ICMP Redirect pakety zahazuje.

P.




More information about the Users-l mailing list