如何使用 netcat 将 udp 数据包重定向(仅单向)到另一台主机?
nc -l -u 0.0.0.0 12345 | nc -u 192.168.1.128 12345
成功重定向第一个数据包后停止。
(注意:iptables 解决方案也很有用。)
谢谢,
克里斯。
答案1
对于 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
显然,未经测试。
答案2
只要您每秒收到的消息不超过一条,它就会转发其中的 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