UDP outgoing multicast atiranyitasa

Fórumok

iptables guruk!

rtmpdump egy  udp://239.0.1.23:1234   multicast cimre kuldi a csomagokat.

Cel az lenne, hogy ideiglenesen ezt "atiranyitsuk" mondjuk ugyanezen IP "5678" portjara. Majd bizonyos ido utan vissza.

Az rtmpdump folyamat nem szakadhat meg!

az atiranyitas utan letiltanam a hoston a kimeno 1234 udp portot bizonyos okokbol, remelem az rtmpdump nem szall el igy "permission denied" hgibaval, peldaul igy:

"av_interleaved_write_frame(): Operation not permitted
Error writing trailer of udp://239.0.1.23:1234: Operation not permitted"
 

iptables-re gondoltam, de elkelne itt segitseg.

kosz

 

(ui.: az is egy kerdes, hogy multicast traffic-ot hogy lehet mirrorozni egy masik portra legegyszerubben?)

Hozzászólások

Szerkesztve: 2022. 01. 07., p – 08:50

Sajna ez nem megy a legujabb Ubuntun (allitplag CentOS-on megy):

 

iptables -t mangle -A PREROUTING -p UDP --dport 1234 -j TEE --gateway 127.0.0.2
iptables -t nat -A PREROUTING -d 127.0.0.2 -p UDP --dport 1234 -j DNAT  --to 239.0.1.23:5678

 Mintha muticastra nemmukodne.

 

Esely a ROUTE target eseteben? 

Ezt dobja:

admin@master:~$ iptables -A PREROUTING -t mangle -p udp -m udp --dport 7 -j ROUTE --gw 1.2.3.4 --tee
iptables v1.8.7 (nf_tables): unknown option "--gw"
 

A multicast nem arról szól, hogy UDP bombázást csinálunk target unicast cím helyett multicast címre. Mi a helyzet az IGMP csomagokkal?

Kerdesek en (is) tettem fel :)

Nezzuk akkor maskeppen. A vegso targetnek mindenkeppen multicastnak kell lennie, ugyanis tobb kliens veszi a csomagokat egyidoben.

Ha az rtmpdump mondjuk localhostra kuld, majd valahogy iptables ruleokkal multicast a vegallapot, az is udvozito...(ha itt igmp-t is meg kell oldani, hat probaljuk meg..)

Vagy valami mas otlet....

Az iptables szabály ugyanazon gépen lenne kiadva, mint  aki küldi az rtmp-t? Ha igen akkor PREROUTING helyett az OUTPUT láncban kellene editálni a portot. Ha nem így van, akkor hogy néz ki a topológia?

Azt lehet tudni mi a cél az ilyen multicastos "port" átírányításnak ?

Fedora 42, Thinkpad x280

A klienesek ket "multicast" porton figyelnek a "tuloldalon", egyszer az egyik kliens csoportnak kell a csomagokat megkapni, utana a masik kliens csoportnak, majd ujra az elsonek. De kozben az eredeti stream nem szakadhat meg - es sajna az rtmpdump egyszerre csak egy targetre tud tudomasom szerint irni!

Melyik lovon ? :D

A multicast a lovon :D 

Tudtommal a multicast arra lett kitalálva, hogy vannak egy IP:port akit ez érdekel erre feliratkozik és kész, ha más érdekli másik IP:portra iratkozik. 

Viszont az, hogy ungyanaz a stream más más portokon, ip-n elérhető nem a multicast gondja.

Ezért mondtam, hogy amennyiben van egy multicast streamed és te azt másik ip-n porton is akarod akkor a remuxolás lehet egy megoldás.

Fedora 42, Thinkpad x280

Figyelj, az alapkerdes nagyon egszeru. Egy stream-et kell ket kulonbozo multicast IP, portra kuldeni. Ennyi! (Sajna ugy, hogy nem indithatsz ket kulonbozo stream kuldot..)

A source stream lehet unicast is egy interface-n, nekem mindegy. A lenyeg a target site, magyarul kulonbozo multicast portok.

ha remux, akkor remux, de adj konkret  peldat, mire gondolsz itt?

Mindig így indul, hogy egyszerű a probléma, viszont olyannal akarod megoldani, ami nem erre az egyszerű problémára lett kitalálva ...

Hát ha a source megvan, akkor ugyanazt egyből 2 portra küldöd ki oszt jónapot, persze ez függ a remuxertől, VLC vel simán megy a duplicate ...

Fedora 42, Thinkpad x280

En olyannal akarom megoldani, ami adott! Itt az rtmpdump rogzitett, "elvileg" nem hasznalhatsz mas stream kuldot.

Persze ha nagyon muszaj, es iptables-szel, vagy barmi egyeb kiegeszito tool-lal nem megoldhato, akkor majd atragom a vlc-t, de elotte korul szeretnem jarni a temat!

Egyebkent VLC-nel valami ilyenre gondolasz?

cvlc INPUT_RTMP_STREAM --sout '#duplicate{dst=rtp{dst=224.0.0.1,port=5004},dst=rtp{dst=224.0.0.1,port=5005}}'

Már 2 kiküldés nem értem.

Innden indult: 

rtmpdump egy  udp://239.0.1.23:1234   multicast cimre kuldi a csomagokat.

Cel az lenne, hogy ideiglenesen ezt "atiranyitsuk" mondjuk ugyanezen IP "5678" portjara. Majd bizonyos ido utan vissza.

Aztán:

Ket porton nezik, ugyanis a kliensek ugyanazon a hoston vannak, csak ket kulonbozo progi.

 

Nekem eddig úgy tűnt, hogy 1 stream elindul és ezt 2 különbözö porton kéne "látni" ... 

 

Akkor ki van kivel hogyan és miért ?

Fedora 42, Thinkpad x280

"Nekem eddig úgy tűnt, hogy 1 stream elindul és ezt 2 különbözö porton kéne "látni" ... "

 

Igy van, errol beszelek en is. Csakhogy ezeknek meg szinkronban is kel llennie. (meghozza min. tizedmasodpercre)

Nyilvanvalo, ha a csomagokat duplikalod/redirektalod valahogyan, akkor szinkronban lesznek, ugyanis ezt a multicast garantalja. Ha a sender-ekre (2 db) bizod a streamet, akkor sajna z egyik/masika sender pufferelesenek kulonbsege miatt a csomagok mas idoben kerulnek ki a ket multicast cimre...sajna...ezt teszteltem...

Hát öö, egy kliens program pl egy lejátszó (VLC), attól hogy 1234 es portron bejövő zenét lejátsza még nem kell foglalnia, lejátszatja más is. Viszont akkor a lényeg, hogy nem lehet.

Szerintem maradj a remuxnál, rtmpdump helyett akár VLC vagy ffmpeg stb, duplicalja a streamet, én nagy elcsúszásra nem számítanék.

Fedora 42, Thinkpad x280