cwd*_*cwd 6 osx networking port-forwarding udp socat
在Mac OS X 10.9.5
我正在运行boot2docker
并想临时将非特权 UDP 端口 69 转发到boot2docker
虚拟机的端口 69 。Virtualbox 只支持转发特权端口。
我试过socat
像这样运行:
socat UDP-LISTEN:69,fork,reuseaddr UDP:192.168.59.101:69
Run Code Online (Sandbox Code Playgroud)
它工作得很好,直到我尝试建立tftp
连接然后它崩溃:
socat[32232] E bind(5, {LEN=16 AF=2 0.0.0.0:69}, 16): Address already in use
Run Code Online (Sandbox Code Playgroud)
netstat -an
就UDP而言,检查并没有显示多少开放:
udp6 0 0 *.58669 *.*
udp4 0 0 *.58669 *.*
Run Code Online (Sandbox Code Playgroud)
我在网上能找到的唯一相关的东西并没有多大帮助。
在 Mac OS X 上,将 UDP 流量从一个端口“镜像”到另一个端口的好方法是什么?
我尝试了以下步骤,应该有效,但不起作用(将端口 20 UDP 文本消息转发到端口 29),但您可能想尝试一下:
\ncd /tmp
mkfifo backpipe
sudo nc -ulk 20 0<backpipe |sudo nc -ulk 29 | tee backpipe
echo -n \xe2\x80\x9cthis is a test\xe2\x80\x9d | sudo nc -4u -w1 localhost 20
可能是使用被破坏或者 fifo 特殊文件无法工作。
\n然而,我找到了一种“更简单”的方法。
\ngcc -w udp_redirect.c -o udp_redirect
sudo ./udp_redirect 127.0.0.1 20 127.0.0.1 29 &
sudo nc -ul 29
echo \xe2\x80\x9cthis is a test\xe2\x80\x9d | sudo nc -4u -w1 localhost 20
此测试将 UDP 文本消息发送到端口 20,并观察第一个终端中端口 29 上的侦听器打印消息。您还可以在端口 20 上设置侦听器,然后查看没有可用消息,它们全部转发(不重复)到端口 29。
\n我说它“更容易”是因为udp_redirect
二进制文件的使用更容易,不需要特殊的 fifo 文件,不需要管道,不需要nc
,最重要的是,它可以工作!
归档时间: |
|
查看次数: |
9281 次 |
最近记录: |