iptables multicast IP korlátozás

Fórumok

Üdv mindenki!

Apró problémával fordulnék hozzátok. Arról lenne szó, hogy megy egy Stream Multicast módon kifelé az eth0 interfacen. Ezt a streamet szeretném úgy korlátozni, hogy csak bizonyos IP címek kapcsolódhassanak a Stream folyamhoz.

Stream szeró adatai és 1-2 parancs ami kell:

Multicast route hozzáadása:
route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0

Ezek után a routing tábla:

route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
89.186.101.0 0.0.0.0 255.255.255.128 U 0 0 0 eth1
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
224.0.0.0 0.0.0.0 240.0.0.0 U 0 0 0 eth0
0.0.0.0 89.186.101.1 0.0.0.0 UG 100 0 0 eth1

Ahol az ETH1 az internet ( most lényegtelen ), az ETH0 pedig a LAN, amerre a Stream csorog. :)

Még 2 parancs a tűzfalba:
iptables -A INPUT -p udp --dst 224.0.0.0/4 --dport 1025: -j ACCEPT
iptables -A INPUT -p igmp -j ACCEPT

Alapból ez nem szükséges, maradjunk abban hogy mind a 3 Policy ( INPUT, FORWARD, OUTPUT ) ACCEPT.

A Stream pontos forrása:
Server IP: 192.168.0.1
Multicast csoport cím és port: 224.0.0.40 : 10999

Még annyit, hogy ha az OUTPUT Policy DROP, akkor a következő 2 parancs engedi ki a Streamet:
iptables -A OUTPUT -m addrtype --dst-type MULTICAST -j ACCEPT
VAGY
iptables -A OUTPUT -p udp -m state --state NEW,ESTABLISHED -o eth0 -d 224.0.0.40 --dport 10999 -j ACCEPT

Na már most én ezt próbáltam módosítgatni 1-2 kapcsolóval, de nem vezetett eredményre.

Tehát a cél az, hogy csak azoknak az IP-knek mehessen a Stream akiket én megadok.

Ha ez sikerül célegyenesben vagyok a projekttel amin dolgozom, ha minden kész lesz, megosztom veletek!

Pls help!

Gorkhaan

Hozzászólások

ha az utolsó két szabály illeszkedése engedi ki, akkor ezeket kell szűrni.
ezt 2 módon tenném
az egyik, hogy minden ip-re felveszed ezt a két sort, de ez elég melós
a másik hogy nem ACCEPT felé jumpolsz, hanem egy saját szabály felé. azoknál az IP-knél amiket ki akarsz engedni adott protokollon, és maga a saját szabályod lesz ez a két sor.


iptables -A OUTPUT -d IP1 -j steam_enged
iptables -A OUTPUT -d IP2 -j steam_enged
...

iptables -A stream_enged -m addrtype --dst-type MULTICAST -j ACCEPT
iptables -A stream_enged -p udp -m state --state NEW,ESTABLISHED -o eth0 -d 224.0.0.40 --dport 10999 -j ACCEPT

hát valami ilyesmi

Köszi, meg fogom nézni! :)

Update: Most jutottam el oda, hogy ki tudjam próbálni. Sajna nem sok szerencsével. Biztos, hogy én baltázok el valamit.

Szóval van ez az IP: 192.168.0.200. Azt szeretném, hogy csak ennek mehessen a Stream kifelé. A Stream helyileg jön létre az eth0 interface felé távozik.

Amivel eddig próbálkoztam:
http://pastebin.com/m51f0701a

Na mármost itt az OUTPUT ha ACCEPT, akkor természetesen működik, de mindenkinek, Ha DROP, akkor mintha figyelembe sem venné a saját láncot ( stream ).

Ha:
$IPTABLES -A OUTPUT -d 224.0.0.40 -j stream

Szabályt beírom újra működik, persze megint mindenkinek!

Plz help, pofon egyszerű lehet, de nem jövök rá!

Update:

IRC-n azt írják nem megoldható iptables-sel. Esetleg valami más mód van rá?

Meg persze, de felejtős a dolog. Felkerestem az iptables IRC csatornát. Csávó leírta, hogy Multicast streaminget nem lehet korlátozni iptablesban. Igaza van. Viszont sikerült igába hajtani a dolgot OpenVPN segítségével! :)

Teljes megoldással később jelentkezem!

Nos, ahogy vl is alul leírta, multicast forgalmat tényleg nem lehet IP-kre szabályozni. Találtam egy jobb megoldást a streaming "problémámra". A neve Tribler, P2P, torrent alapokon képes Online streamelést folytatni.

Ha ez a Streaming mód érdekelne, le tudom írni mi hogy van.

Üdv, G

|| "Software is like sex: it's better when it's free." Linus Torvalds || Visit Gorkhaan's Homepage

khm. a kimenő stream forgalomnak egy darab ip multicast címre kell mennie a hostból kifele. szerintem ezen nem tudsz mit szűrni a hoston!
maga a multicast stream a host oldalán nem tudja, hogy őt éppen ki fogadja. layer 2 szinten tolja ki a packetokat egy multicast mac address felé, layer 3 szinten pedig egy vagy több multicast router továbbítja más subnetekre.

amit lehet játszani, hogy a hálózati rétegben (switch/multicast router) próbálsz valami access-list segítségével szűrni, hogy melyik fizikai switch port vagy melyik subnet irányába mehet a forgalom tovább.