У меня есть патентованная система, которая передает видеопоток udp с устройства № 1 (192.168.1.1) на устройство № 2 (.1.2). Я не могу внести изменения в эту систему, и я пытаюсь клонировать этот поток udp, чтобы получить доступ к нему в другой программе. Эта программа будет делать материал с видео и отправлять его снова как многоадресный поток.
Я надеюсь сделать это с помощью Linux-машины (сейчас работает Ubuntu Server 12.04) с тремя сетевыми картами. Подключив модуль № 1 и № 2 к двум сетевым картам (eth0 и eth1) на компьютере с Linux и используя мост, я получил их связь. Мой / etc / network / interfaces выглядит так:
# 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
Это работает, и с помощью tcpdump я подтвердил, что пакеты udp прибывают из # 1 и направляются в # 2 на порт 6000.
Следующим шагом, который, я надеюсь, будет работать, является использование iptables для клонирования всех пакетов udp, поступающих с 192.168.1.1, идущих на порт 6000 в # 2. Я не очень знаком с iptables, но после прочтения и руководства я подумал, что это сработает:
iptables -A PREROUTING -t mangle -p udp -s 192.168.1.1/32 --dport 6000 -j TEE --gateway 192.168.10.2
Правило применяется успешно, но оно не работает. Если я использую tcpdump для мониторинга eth3, я не вижу там пакетов.
Я хотел бы захватить этот поток, поработать над ним и отправить его как многоадресную рассылку по интерфейсу .10.2.
Что я делаю неправильно? Есть что-то, что я неправильно понял?
источник
У меня была похожая проблема, и я решил ее с помощью небольшой программы, которая использовала libpcap для чтения содержимого пакетов UDP. Он отправил копии этих пакетов в другое место назначения. (Который может быть на той же машине.)
источник