Portál AbcLinuxu, 14. května 2024 19:32


Dotaz: Multicast routing (ACL)

18.5.2017 15:07 MaraCh
Multicast routing (ACL)
Přečteno: 515×
Odpovědět | Admin
Ahoj.

Mám PC router s Linuxem, který má čtyři síťové rozhraní: l0, w0, f0 a a0. Jedním z úkolů tohoto PC je routování multicast provozu mezi síťovými rozhraními, ale s poměrně úzkými omezeními. Například: Tedy nesmí například být routováno vysílání 239.255.0.0/16 z w0 do l0, nebo jakýkoliv multicast provoz z f0 do w0.

Výše uvedené mám zatím realizováno pomocí pimd v2.3.2 a firewall pravidel, které zakazují především forwardování toku, který nevyhovuje.

Problémy a nedostatky zjištěné v rámci testů: Například pokud bude nějaké zařízení za w0 přihlášeno k odběru 239.255.0.1 a v síti za f0 bude nějaké vysílací zařízení poskytující stream na 239.255.0.1, tak sice tento zakázaný tok (f0->w0) přes router díky firewall pravidlům neprojde, ale:
  1. na routeru vznikne routovací pravidlo zobrazitelné přes "ip mroute" a tento zbytečný multicast tok bude muset na příkaz iptables router zahazovat
  2. přestože neexistuje žádný povolený odběratel tak vysílací zařízení musí tento tok generovat (což by pokud se nepletu, kdyby opravdu nikdo přihlášen nebyl nedělalo)
Existuje nějaká možnost jak to řešit elegantněji?

Je to vůbec v silách síťové vrstvi na linuxu? Udivuje mne totiž, že i když jsem v rámci testů kompletně začal zahazovat pakety směřující do f0 jak v INPUT tak v FORWARD, tak ten router se nějak prostě dozvěděl, že tam za f0 někdo vysílá (nechápu jak) a při zahájení jeho vysílání vytvořil routovací pravidlo (viditelné přes: ip mroute).
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

18.5.2017 15:48 NN
Rozbalit Rozbalit vše Re: Multicast routing (ACL)
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nevyplatilo by se pouzit statcky multicast routing pomoci smcroute doporucovany v odkazu misto dynamickeho? Mimojine umoznuje specifikovat rozsahy, rozhrani i smery.
18.5.2017 16:11 MaraCh
Rozbalit Rozbalit vše Re: Multicast routing (ACL)
Nevidím, že by tam šlo definovat rozsahy u multicast adres - dívám se špatně?
18.5.2017 17:27 NN
Rozbalit Rozbalit vše Re: Multicast routing (ACL)
Lze to definovat per vysilac, default limit je 20. Kolik jich mas, ze to potrebujes na cely subnet? Imho u milticastu se nevysila tam, kde neni alespon jeden prijemce u z principu protokolu, nebo se pletu?
19.5.2017 08:11 MaraCh
Rozbalit Rozbalit vše Re: Multicast routing (ACL)
Těch potenciálních vysílačů bude v reálu přibližně kolem 20. Problém je v tom, že se rekrutují ze skupiny zařízení, kterých budou až stovky. Těch routerů budou v síti desítky. Desítky routerů není možné před každou akcí předefinovávat na ~20 potencionálně možných vysílačů, které asi zrovna budou v akci připadat v úvahu. Bylo by to administrativně neúnosné. Proto jsou definovány velké multicast prostory u kterých je však zřejmé kudy mohou téci. Teoreticky také hrozí nebezpečí špatného zapojení do nechtěného segmentu sítě (nebo průtoky do nechtěných segmentů sítě) a to je jeden z důvodů proč některé toky nesmí vznikat, protože by mohly zahltit část sítě, která má omezenou přenosovou kapacitu (je rádiová).

Hledám tedy dynamický multicast routing se slušnou možností definovat možné toky. Ten statický vypadá na slušné možnosti, ale nemožnost definovat obecně velké multicast rozsahy ho dělají pro můj účel nepoužitelný.

Multicast je v celku pěknej prevít - třeba zařízení s úplně jinou IPv4 konfigurací než je síť v které se nachází, nemá problém vysílat či přijímat multicasty...

Čemu zatím také nemohu přijít na kloub (nerozumím tomu) je ten jeden z testů co jsem provedl. Přestože jsem zavřel přes iptables v INPUT i ve FORWARD komunikaci přicházející z jedné ze sítí na jedné straně routeru a potencionální posluchač byl aktivován na jiné straně routeru, tak v okamžiku zahájení vysílání zařízení na té zavřené straně routeru se v routeru vytvořila routa pro tento multicast (ukázal to ip mroute). Nechápu jak je to možné - jak se ten router dozvěděl, že tam je nějaký vysílač multicastu, příchozí tok k routeru z té strany je zcela zahazován. Budu ten test muset zopakovat - hlava mi to nebere (snad nějaké komunikace na L2 mimo L3?).
19.5.2017 09:00 NN
Rozbalit Rozbalit vše Re: Multicast routing (ACL)
Blokujes cely IGMP ptotokol Query/Membership pakety, nebo jen multicast skupinu? Muzes to oddelit na L2, nebo je zadouci i jina L3 komunikace na rozhranich?
19.5.2017 14:53 MaraCh
Rozbalit Rozbalit vše Nemožnost odfiltrovat některé multicast dohody přes iptables - TEST
Odpovědět | | Sbalit | Link | Blokovat | Admin
Uvedu nyní přesně "výzkumný test", který zmiňuji v závěru své otázky a jehož výsledky nechápu.

Mám router, kde běží pimd. Router má síťová rozhraní w0 a f0.

Schema zapojení:
PC_before_w0 <---> [w0]-router-[f0] <----> PC_before_f0
1. Zákaz veškerého toku na router přícházejícího z rozhraní f0 (povoleno jen ssh):
router#
iptables -t filter -F
iptables -t nat -F
iptables -A INPUT -i f0 -p TCP --source-port 22 -j ACCEPT
iptables -A INPUT -i f0 -j DROP
iptables -A FORWARD -i f0 -j DROP
2. Zahájení naslouchání (příjmu) multicast:
PC_before_w0$ iperf -s -u -B 239.255.0.1
3. Kontrola routovacích pravidel:
router# ip mroute
(nic nevypýše - žádná pravidla nejsou)
4. Zahájení multicast vysílání:
PC_before_f0$ iperf -u -c 239.255.0.1 -T 3 -t 30
5. Kontrola routovacích pravidel:
router# ip mroute
(ip_adresa_PC_before_f0, 239.255.0.1)       Iif: f0       Oifs: w0
Z výpisu routovacích pravidel je vidět, že vznikla multicast routa. K samotnému toku dat přes router nedojde. Jak je však možné, že vznikla ta routovací pravidla? Jak se router dozvěděl o existenci nějakého multicast vysílání před rozhraním f0, když v iptables je vše příchozí zahazováno? Může to prosím někdo vysvětlit?
19.5.2017 15:09 MaraCh
Rozbalit Rozbalit vše Re: Nemožnost odfiltrovat některé multicast dohody přes iptables - TEST
Ještě dodám, že situace se nezmění ani když ještě k 1. bodu přidám následující pravidla:
iptables -A OUTPUT -o f0 -p TCP --destination-port 22 -j ACCEPT
iptables -A OUTPUT -o f0 -j DROP
iptables -A FORWARD -o f0 -j DROP
Kromě ssh nemohou IP data tam ni zpět, ale přesto se to nějak domluví. Jo kdyby to tak bylo i u lidí:-)
19.5.2017 21:12 martinvolf
Rozbalit Rozbalit vše Re: Nemožnost odfiltrovat některé multicast dohody přes iptables - TEST
Nepomohlo by zahazovat to v tabulce raw?
iptables -t raw -A PREROUTING -i f0 -j DROP
21.5.2017 20:11 Ondrej Santiago Zajicek
Rozbalit Rozbalit vše Re: Nemožnost odfiltrovat některé multicast dohody přes iptables - TEST
Jak je však možné, že vznikla ta routovací pravidla? Jak se router dozvěděl o existenci nějakého multicast vysílání před rozhraním f0, když v iptables je vše příchozí zahazováno?
AFAIK prichozi paket se nejdriv paket prozene routovanim, aby se zjistilo, co s nim, a pak teprve se aplikuji prislusna pravidla z filter tabulky (INPUT ci FORWARD chainy). Pri multicast routingu pak pri nepritomnosti routy kernel preda paket specialnim kanalem routovacimu demonu (tedy jeste pred aplikaci pravidel z filter tabulky) a ten prida routu do routovaci tabulky. Jak pise martinvolf nize, mohlo by pomoci filtrovat to v PREROUTING chainu tabulky raw.
22.5.2017 12:14 MaraCh
Rozbalit Rozbalit vše Re: Nemožnost odfiltrovat některé multicast dohody přes iptables - TEST
Děkuji za odpověď i za odpověď předřečníkovi.

V uvedeném konkrétním případě stačí pravidlo:
iptables -t raw -A PREROUTING -i f0 -d 239.255.0.1/32 -j DROP
A routa pak nevznikne. Trochu mi to bourá představu, že mcast tok vzniká jen když jsou odběratelé - zde je routa asi vytvořena až vznikne mcast tok (a jen pokud ho zamlčím tak routa nevnikne) (nebo snad vysílací strana ví o tom posluchači i když tam mám výše uvedené iptables pravidlo?).

Uvedená pravidla v tabulce raw mohou zajistit nevznikání mcast routovacích pravidel na konkrétní rozsahy mcast cílů. Žel nelze s nimi zajistit, že cíl je povolen, ale jen k forwardování na konkrétní síťové rozhraní a na jiné ne.

Jinými slovy hledám daemona na mcast routování, který bude umožňovat definovat přesnější pravidla. pimd to asi neumí. Zná někdo takového daemona?

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.