socatはsourceportオプションをサポートしていません

socatはsourceportオプションをサポートしていません

特定のポートで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パケットを送信(ブロードキャスト)する方法は?

また、ユニキャストUDPパケットを送信するためにsocatを使用してみましたが、sourceportそれも認識されませんでした。

答え1

bind代わりにこのオプションを使用してくださいsourceport

$ echo hello | socat - UDP-DATAGRAM:192.168.1.255:11111,broadcast,bind=:22222

sourceportたとえば、....では明らかに動作するので、この場合は動作しない理由はわかりません。しかし、同じ作業がすでに完了しているのに、UDP-CONNECTなぜ別のオプションがあるのか​​は不明です。sourceportbind

関連情報