On 01/30/13 15:19, Zbyněk Burget:
Misto toho, aby se packet v tichosti
ztratil, protoze na siti uz neni prijemce, ozve se domaci routrik uplne
jineho zakaznika, ktery vyhodnoti, ze ten packet k nemu proste prisel
spatne a je potreba to napravit. A proto ho odesle zpet routeru (s
originalni zdrojovou i cilovou IP adresou). No a router se packet opet
snazi dorucit... Co mam povidat, sit to zaplavi tak, ze je nepouzitelna.
Do doby, nez vyexpiruje (nebo je smazan) arp zaznam v routeru one
puvodne vypnute stanice.

Problem vznikne jen v kombinaci nekolika okolnosti.

Na te fyzicke siti jsou je nakonfigurovana vic nez jedna logicka IP sit. Tim se k routriku klienta muze dostat paket, jehoz IP adresa nepatri do zadne site, kterou tento router zna.

S takovymi mix-sitemi je vzdycky trochu potiz, prinejmensim v oblasti IP broadcastu (obzvlast s nespecifickym 255.255.255.255) ale vetsinou to samo o sobe jeste neznamena katastrofu.

Teprve kdyz se to spoji s dalsimi okolnostmi.

Paket o kterem je rec a ktery na routrik dorazi, nema jeho cilovou MAC. Za normalnich okolnosti by karta v nepromiskuitnim modu takovy paket ani neprijala a vsechno by bylo naprosto v pohode. Problemem jsou ruzne podivne router-bridge s takovymi featurami jako je klonovani vnitrni MAC ven a tak - tam je casto karta trvale prepnuta v promiskuitnim modu a softwarovy filtr, ktery by kontrolu cilove MAC implementoval je vadny nebo zcela chybi. Tim se paket, ktery nemel byt vubec prijat dostane do vyssich vrstev - a ty, uz legitimne a korektne, reaguji forwardovanim (a pripadnym ICMP_REDIRECT). Takovy routrik lze povazovat za vadny neb za rutinniho provozu by se nemelo na hodnotu cilove MAC kaslat a ignorovat ji.

No, a kdyz se spoji mixovana sit (tvoje chyba) se zarizenim s touto vadou (problem nekvalitniho zarizeni vyrobce), vznikne katastrofa.


Resenim bude fyzicke oddeleni a odroutovani jednotlivych subnetu

Ano. Dostatecnym "fyzickym" oddelenim muze byt i zavedeni VLANu.

Workarround by byl zkratit dobu platnosti zaznamu v arp tabulce (nevim,
jak dalece je to rozumne - a taky jsem zatim napatral po tom, jako toho
na FBSD dosahnout).

Castejsi ARP dotazy budou vytezovat sit, vcetne vsech zakaznickych linek (ARP je broadcast). Nastaveni je trivialni ukon:

sysctl net.link.ether.inet.max_age=(cas v sekundach)

No a samozrejme nejlepsi resenei je pochopit proc se to deje a tem
zarizenim vysvetlit, ze se tak nemaji chovat.

A to ja si celkem myslim, ze vim co se tam deje. Potiz je v tom, ze ten zarizenim to budes tezko vysvetlovat. Mozna se ti podari najit takovou kombinaci (de)aktovovanych featur kdy vnejsi karta v promiskuitnim modu nepojede, nebo treba pojede, ale nejaky kod dal bude spravne zahazovat pakety, ktere na routrik prijit nemely.

Ale mozna se ti takovou kombinaci najit nepodari - nebo ano, ale vypnes tim uzivateli neco, co bude chtit. A taky to na kazdem zarizeni bude jinak. A i kdy to zvladnes, uzivatel by uz nesmel do konfigurace nijak zasahovat (protoze i mala nevinna zmena muze zpusobit navrat puvodniho chovani).


 ----------------

Zkraceni ARP muze problem castecne resit. Presneji zkrati dobu po kterou je v cele siti kvuli problemu akutni pretizeni.

Dalsi moznost je zkratit TTL u paketu, ktere do tohoto segmentu posilas. Omezis tam delku "kolovani" a tudiz i mnozstvi paketu, ktere v konkretnim okamziku sit pretezuji. Myslim, ze na tohle neni ve FreeBSD nastroj, ale mohlo by byt pomerne jednoduche to jako "hack" dodelat.

Dalsi potencialni reseni je nahradit chybejici/vadny filtr konfiguraci na koncovem portu tveho switche (ktery vede do takoveho vadneho routriku) a routriku zadne pakety s MAC adresou, ktera neni jeho, nepredavat (broadcasty a multicasty nepocitam). To neni bezna schopnost switchu, takze si nejsem jisty, jestli to neni cista teorie.

Nicmene, jedinym "nehackovym" resenim je skutecne "de-mixovat" tu sit. Tedy - nemit na jedne L2 siti vic ruznych L3 siti kdy koncova zarizeni vzdy znaji jen nektere z nich.

Dan

P.S.
Mila Sos wrote:
maximálně dát ICMP redirect a ne poslat packet zpět

Pokud vim, tak ne - vyznam ICMP_REDIRECT neni "paket jsem zahodil" ale "tentokrat jsem to preposlal, ale priste to posilej primo". Takze preposlani paketu je korektni (kdyby slo o paket, ktery byl routeru adresovan, coz v nasem pripade neni).



--
FreeBSD mailing list ([email protected])
http://www.freebsd.cz/listserv/listinfo/users-l

Odpovedet emailem