如何从我的 Linux ASUS 路由器发送 UDP 数据包?

如何从我的 Linux ASUS 路由器发送 UDP 数据包?

我已经更改了路由器上的固件,unanme -a结果:

Linux RT-AC86U-8458 4.1.27 #2 SMP PREEMPT Fri Aug 6 18:32:35 EDT 2021 aarch64 ASUSWRT-Merlin

我已经通过 ssh 登录到该路由器,并且正在尝试弄清楚如何将 UDP 数据包从该主机发送到网络上的另一台主机。

这是我尝试过的(全部失败):

echo -n "hello world" | /dev/udp/serverip/15243
# /dev/udp/ doesnt exist

# or

echo -n "hello world" | nc -4u -w0 serverip 15243
# fails with 4 being an invalid option

# or

echo -n "hello world" | nc -u -c serverip 15243
# fails with u being an invalid option

我如何从该主机发送 UDP 数据包?

答案1

简短的浏览会话ASUSWRT-Merlin git 存储库告诉我 ASUSWRT-Merlin 使用Busybox版本1.25.1到 实施nc.

BusyBox当前的上游版本是1.34.1截至撰写本文时。

更具体地说,ASUSWRT-Merlin 似乎使用旧版本的 BusyBox配置时不带该ENABLE_NC_110_COMPAT选项nc,这将在其命令中添加 UDP 支持和其他一些内容:

CONFIG_NC=y
# CONFIG_NC_SERVER is not set
CONFIG_NC_EXTRA=y
# CONFIG_NC_110_COMPAT is not set

通过将上面代码片段中的最后一行更改为CONFIG_NC_110_COMPAT=y并重建 BusyBox 组件或整个 ASUSWRT-Merlin 固件,您将获得您想要的功能。

但正如 Steffen Ullrich 评论的那样,ASUSWRT-Merlin 还包括索卡特。尝试:

echo -n "hello world" | socat - UDP:serverip:15243

socat有多种使用UDP的模式。例如,如果使用 justUDP:不适合您,您可以尝试使用UDP-DATAGRAM:or代替。UDP-SENDTO:

相关内容