Tengo un sistema propietario que transmite una transmisión de video udp desde la unidad n. ° 1 (192.168.1.1) a la unidad n. ° 2 (.1.2). No puedo hacer cambios en este sistema, y estoy tratando de clonar este flujo de udp para poder acceder a él en un programa diferente. Este programa hará cosas con el video y lo enviará nuevamente como una transmisión de multidifusión.
Espero hacer esto usando una máquina Linux (ejecutando Ubuntu Server 12.04 ahora) con tres tarjetas de red. Al conectar la unidad n. ° 1 y n. ° 2 a dos de las tarjetas de red (eth0 y eth1) en la máquina Linux y usar bridge, las tengo comunicando. Mi / etc / network / interfaces se ve así:
# 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
Esto funciona, y al usar tcpdump, he confirmado que los paquetes udp están llegando desde el # 1 y se dirigen hacia el # 2 en el puerto 6000.
El siguiente paso que espero que funcione es usar iptables para clonar todos los paquetes udp que vienen desde 192.168.1.1 que van al puerto 6000 en el n. ° 2. No estoy muy familiarizado con iptables, pero después de leer en línea y el manual pensé que esto funcionaría:
iptables -A PREROUTING -t mangle -p udp -s 192.168.1.1/32 --dport 6000 -j TEE --gateway 192.168.10.2
La regla se aplica con éxito, pero no funciona. Si uso tcpdump para monitorear eth3, no veo los paquetes allí.
Me gustaría tomar esta secuencia, trabajar en ella y enviarla como multidifusión en la interfaz .10.2.
¿Qué estoy haciendo mal? ¿Hay algo que haya entendido mal?
fuente
Tuve un problema similar y lo resolví con un pequeño programa que usaba libpcap para leer el contenido de los paquetes UDP. Envió copias de estos paquetes a otro destino. (Que podría estar en la misma máquina).
fuente