我正在尝试使用 ncat(来自 Windows 的 nmap 发行版)来简单地转发 UDP 流。
示例:可以在端口 5444 上接收视频流。我想将该流转发到端口 5555 上的另一台机器(例如 192.168.10.10)。
我发现对于 TCP 连接来说,这一点很容易实现(即
netsh 接口 portproxy 添加 v4tov4 监听端口 = 5444 监听地址 = 192.168.10.9 连接端口 = 80 连接地址 = 192.168.10.10
),但我不知道如何对 UDP 执行此操作。
Socat 是 Linux 中明显的解决方案,但我必须使用 Windows。
我尝试了这个:
ncat -l -u 5444 | ncat -u 192.168.10.10 5555
但性能太差,根本没法用。我觉得我选错了 ncat 的用途。
这应该很容易,但是对于 iptables 之类的东西,我还是新手(我怀疑答案就在这里)。任何指点我都感激不尽。
答案1
我找到了一个“简单”的基于 Windows 的解决方案,没有第三方依赖项。它是在 Windows Server OS 上启用 RRAS NAT。然后,
netsh 路由 ip nat 添加端口映射“以太网”udp 0.0.0.0 5444 192.168.10.10 5555
其中“以太网”是在路由和远程协助中启用了 NAT 的“公共接口”NIC 的名称。
正确配置后,以下命令将产生以下输出:
>netsh routing ip nat show interface
NAT Ethernet Configuration
---------------------------
Mode : Private Interface
NAT Static Port Mapping Configuration
-------------------------------------
Protocol : UDP
Public address : 0.0.0.0
Public port : 5444
Private address : 192.168.10.10
Private port : 5555
harrymc 提出的 sudpproxy 建议也是一个很好的答案,但是对于我的应用程序而言,本机 Windows 方法的额外开销不如对第三方工具的依赖那么糟糕。