如何在一台机器上使用 socat 测试多播

如何在一台机器上使用 socat 测试多播

我是一名 Linux 初学者,正在尝试在 Ubuntu 上使用 socat 测试多播是否有效。
实际上有点“太好了”(或者我误解了一些基本的东西)

我的网络看起来是这样的(ifconfig,缩写)

ens33 - 192.168.2.10
lo - 127.0.0.1
vboxnet0 - 5 - 192.168.56.1 and up to 192.168.1.1
vboxnet6 - 192.168.1.1
vboxnet7 - 10.0.1.1
vboxnet8 - 192.88.99.1

我在两个像
接收器一样的控制台中启动 socat
socat -d -d UDP-RECVFROM:6666,ip-add-membership=233.168.0.100:192.68.56.1:ens33,fork EXEC:hostname

发件人
socat -d -d STDIO UDP4-DATAGRAM:233.18.0.100:6666,range=192.168.56.100/30

我选择什么作为多播地址并不重要,只要它们匹配即可。
我必须指定接收方的接口才能使其工作。

就像我一开始所说的那样,接收者接收消息,这就是问题所在。

如果我没记错的话,它不应该,因为它不是我定义的范围,192.168.56.100/30这意味着192.168.56.101 - 192.168.56.103
接收者总是接收包,无论IP是什么。

我是否误解了range实际作用?
我缺少什么?

我怀疑这与位于同一设备(路由)上有关。

答案1

多播正在按其预期的方式运行。

事实上,当您向接口发出信号以侦听多播地址时,您是将底层接口与该地址相关联,而不是与该接口的 IP 地址相关联。

因此,只要您共享相同的物理/虚拟介质/网络,与多播地址关联的所有接口都将收到多播传输。

相关内容