![socat 不支持 sourceport 选项](https://linux22.com/image/207279/socat%20%E4%B8%8D%E6%94%AF%E6%8C%81%20sourceport%20%E9%80%89%E9%A1%B9.png)
我正在尝试从特定端口发送 udp 数据包:
$ echo hello | socat - UDP-DATAGRAM:192.168.1.255:11111,broadcast,sourceport=22222
但使用随机端口代替:
# tcpdump -vvvv -ttttt -nienp0s31f6 udp
tcpdump: listening on enp0s31f6, link-type EN10MB (Ethernet), snapshot length 262144 bytes
00:00:00.000000 IP (tos 0x0, ttl 64, id 40649, offset 0, flags [DF], proto UDP (17), length 34)
192.168.1.17.35829 > 192.168.1.255.11111: [udp sum ok] UDP, length 6
如何从特定端口发送(广播)udp 数据包?
注意,我还尝试使用 socat 发送单播 udp 数据包,但sourceport
也没有得到认可。
答案1
使用该bind
选项而不是sourceport
:
$ echo hello | socat - UDP-DATAGRAM:192.168.1.255:11111,broadcast,bind=:22222
我不确定为什么sourceport
在这种情况下不起作用,因为它显然适用于例如UDP-CONNECT
……但也不清楚为什么在已经做了同样的事情时还有一个单独的sourceport
选项。bind