J'ai un système propriétaire qui transmet un flux vidéo udp de l'unité n ° 1 (192.168.1.1) à l'unité n ° 2 (.1.2). Je ne peux pas apporter de modifications à ce système et j'essaie de cloner ce flux udp afin de pouvoir y accéder dans un autre programme. Ce programme fera des trucs avec la vidéo et la renverra sous forme de flux multicast.
J'espère faire cela en utilisant une machine Linux (exécutant maintenant Ubuntu Server 12.04) avec trois cartes réseau. En connectant les unités # 1 et # 2 à deux des cartes réseau (eth0 et eth1) dans la machine Linux et en utilisant bridge, je les fais communiquer. Mon / etc / network / interfaces ressemble à:
# 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
Cela fonctionne, et en utilisant tcpdump, j'ai confirmé que les paquets udp arrivent de # 1 et se dirigent vers # 2 au port 6000.
La prochaine étape, je l'espère, fonctionnera consiste à utiliser iptables pour cloner tous les paquets udp provenant de 192.168.1.1 vers le port 6000 au # 2. Je ne suis pas très familier avec iptables, mais après avoir lu en ligne et le manuel, j'ai pensé que cela fonctionnerait:
iptables -A PREROUTING -t mangle -p udp -s 192.168.1.1/32 --dport 6000 -j TEE --gateway 192.168.10.2
La règle est appliquée avec succès, mais cela ne fonctionne pas. Si j'utilise tcpdump pour surveiller eth3, je n'y vois pas les paquets.
Je voudrais saisir ce flux, travailler dessus et l'envoyer en multidiffusion sur l'interface .10.2.
Qu'est-ce que je fais mal? Y a-t-il quelque chose que j'ai mal compris?
la source
J'ai eu un problème similaire et l'ai résolu avec un petit programme qui utilisait libpcap pour lire le contenu des paquets UDP. Il a envoyé des copies de ces paquets à une autre destination. (Qui pourrait être sur la même machine.)
la source