Ho un sistema proprietario che trasmette un flusso video udp dall'unità n. 1 (192.168.1.1) all'unità n. 2 (.1.2). Non riesco ad apportare modifiche a questo sistema e sto provando a clonare questo flusso udp in modo da poterlo accedere in un altro programma. Questo programma farà cose con il video e lo invierà nuovamente come flusso multicast.
Spero di farlo usando una macchina Linux (che esegue Ubuntu Server 12.04 ora) con tre schede di rete. Collegando l'unità n. 1 e n. 2 a due delle schede di rete (eth0 ed eth1) nella macchina Linux e usando bridge, le faccio comunicare. La mia / etc / network / interfaces assomiglia a:
# The loopback network interface
auto lo
iface lo inet loopback
# The external interface
auto eth3
iface eth3 inet static
address 192.168.10.2
netmask 255.255.255.0
# The bridge interface
auto br0
iface br0 inet manual
bridge_ports eth0 eth1
Funziona e usando tcpdump ho confermato che i pacchetti udp arrivano dal n. 1 e si dirigono verso il n. 2 alla porta 6000.
Il prossimo passo che spero funzionerà è usare iptables per clonare tutti i pacchetti udp che vanno dalla 192.168.1.1 alla porta 6000 al numero 2. Non ho molta familiarità con iptables, ma dopo aver letto on line e il manuale ho pensato che avrebbe funzionato:
iptables -A PREROUTING -t mangle -p udp -s 192.168.1.1/32 --dport 6000 -j TEE --gateway 192.168.10.2
La regola viene applicata correttamente, ma non funziona. Se uso tcpdump per monitorare eth3 non vedo i pacchetti lì.
Vorrei prendere questo stream, lavorarci su e inviarlo come multicast sull'interfaccia .10.2.
Che cosa sto facendo di sbagliato? C'è qualcosa che ho frainteso?