Назад | Перейти на главную страницу

Как вы перенаправляете (только в одну сторону) пакеты udp на другой хост с помощью netcat?

Как вы перенаправляете (только в одну сторону) пакеты 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