Udp 在Vagrant&;虚拟箱环境

Udp 在Vagrant&;虚拟箱环境,udp,vagrant,virtualbox,multicast,socat,Udp,Vagrant,Virtualbox,Multicast,Socat,问题:同一网络中的每台机器都应该能够向所有成员广播,包括它自己 这是一次尝试,使用在Vagrant&VirtualBox环境中创建的虚拟机,通过socat获得可工作的多播。这里的情况似乎有所不同,所以我首先尝试了解多播是如何在物理机器上工作的 我有3台安装了Ubuntu12.04服务器的物理机器,命名为pc0、pc1和pc2 在我运行的每台机器上: socat stdioudp-DATAGRAM:224.0.0.1:2200,bind=:2200 …当我从pc0从pc0键入hi时,它已经向自身和

问题:同一网络中的每台机器都应该能够向所有成员广播,包括它自己

这是一次尝试,使用在Vagrant&VirtualBox环境中创建的虚拟机,通过
socat
获得可工作的多播。这里的情况似乎有所不同,所以我首先尝试了解多播是如何在物理机器上工作的

我有3台安装了Ubuntu12.04服务器的物理机器,命名为
pc0
pc1
pc2

在我运行的每台机器上:
socat stdioudp-DATAGRAM:224.0.0.1:2200,bind=:2200

…当我从pc0从pc0键入
hi时,它已经向自身和其他两台机器广播,这就是我想要的(我希望这就是多播应该如何工作):

我正在使用IP
224.0.0.1
,因为默认情况下,它用于每台机器上的多播

接下来,我尝试用3个虚拟机实现相同的东西,
vb0
vb1
vb2
。Github回购是一种新的融资方式

现在我尝试从
vb0
进行广播:

vagrant@vb0:~$ socat STDIO UDP-DATAGRAM:224.0.0.1:2200,bind=:2200
hello from vb0
hello from vb0
…并且它不会向其他成员广播(就像上面的物理机器一样),除了它自己

看起来,在进行此操作之前,应该进行其他设置

vagrant文件

Vagrant.configure(2) do |config|

    config.vm.box = "ubuntu-12.04-x64"
    config.vm.synced_folder ".", "/vagrant", disabled: true

    config.vm.provider "virtualbox" do |vb|
        vb.cpus    = "2"
        vb.memory = "4096"
    end

    config.vm.provision "chef_apply" do |chef|
        chef.recipe = File.read("recipe.rb")
    end

    config.vm.define "vb0" do |vb0|
        vb0.vm.hostname = "vb0"
        vb0.vm.network "private_network", ip: "10.20.30.100"
    end

    config.vm.define "vb1" do |vb1|
        vb1.vm.hostname = "vb1"
        vb1.vm.network "private_network", ip: "10.20.30.101"
    end

    config.vm.define "vb2" do |vb2|
        vb2.vm.hostname = "vb2"
        vb2.vm.network "private_network", ip: "10.20.30.102"
    end

end
在每个设备上运行(即
vb01
vb1
vb2
):

sudo ip路由添加224.0.0.0/4 dev eth1

解决了这个问题

在物理环境中,它不需要这样做就可以工作。 不知道为什么我们要在这样的虚拟环境中运行它

vagrant@vb0:~$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.0.2.2        0.0.0.0         UG    100    0        0 eth0
10.0.2.0        *               255.255.255.0   U     0      0        0 eth0
10.20.30.0      *               255.255.255.0   U     0      0        0 eth1
224.0.0.0       *               240.0.0.0       U     0      0        0 eth1
有用的参考资料

vagrant@vb0:~$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.0.2.2        0.0.0.0         UG    100    0        0 eth0
10.0.2.0        *               255.255.255.0   U     0      0        0 eth0
10.20.30.0      *               255.255.255.0   U     0      0        0 eth1
224.0.0.0       *               240.0.0.0       U     0      0        0 eth1