Как вы перенаправляете (только в одну сторону) пакеты udp на другой хост с помощью netcat?
nc -l -u 0.0.0.0 12345 | nc -u 192.168.1.128 12345
останавливается после успешного перенаправления первого пакета.
(Примечание: также было бы полезно решение iptables.)
Спасибо,
Крис.
Для решения iptables вы в основном будете выполнять NAT назначения для пакетов. Что-то вроде:
iptables -t nat -I PREROUTING -p udp --dport 12345 -j DNAT --to 192.168.1.128:12345
С netcat, хм. Вы можете использовать -k
возможность сохранить сторону прослушивания после обработки пакетов, но вам нужно будет что-то сделать, чтобы продолжить отправку. Именованные каналы, может быть?
mknod /tmp/nc.pipe p
nc -l -k -u 0.0.0.0 12345 > /tmp/nc.pipe &
while [1]
do
nc -u 192.168.1.128 12345 < /tmp/nc.pipe
done
Непроверенный, ясно.
Пока вы не получаете более одного сообщения в секунду, 99% + из них пересылаются.
(Это действительно ужасная выдумка.)
#!/bin/bash
while :
do
bash -c "nc -l -u 0.0.0.0 12345 | nc -u 192.168.1.128 12345" &
sleep 1
kill $!
done