Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

How do you redirect (one way only) udp packets to another host using netcat?

nc -l -u 0.0.0.0 12345 | nc -u 192.168.1.128 12345

stops after successfully redirecting the first packet.

(Note: an iptables solution would also be useful.)

Thanks,

Chris.

share|improve this question
add comment

3 Answers 3

For the iptables solution, you'll basically be doing an destination NAT on the packets. Something like:

iptables -t nat -I PREROUTING -p udp --dport 12345 -j DNAT --to 192.168.1.128:12345

With netcat, hmm. You can use the -k option to keep the listen side up after you process the packets, but you'll need to do something to keep sending. Named pipes, maybe?

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

Untested, clearly.

share|improve this answer
add comment

I don think you can do that w/ UDP, that can be done w/ TCP only.

share|improve this answer
add comment
up vote 0 down vote accepted

So long as you don't receive more than one message per second, this will forward 99%+ of them.

(It's a really horrible fudge.)

#!/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
share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.