Linux
如何從我的 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 數據包?
ASUSWRT-Merlin git 儲存庫的簡短瀏覽會話告訴我 ASUSWRT-Merlin 使用Busybox 版本 1.25.1來實現
nc
.在撰寫本文時,BusyBox 的目前上游版本是 1.34.1。
更具體地說,ASUSWRT-Merlin 似乎使用了舊版本的 BusyBox ,沒有配置
ENABLE_NC_110_COMPAT
option,這將在其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 還包括socat。嘗試:
echo -n "hello world" | socat - UDP:serverip:15243
socat
有多種使用UDP的模式。如果使用 justUDP:
對您不起作用,您可以嘗試UDP-DATAGRAM:
或UDP-SENDTO:
代替,例如。