2015-02-02 2 views
4

문제 : 동일한 네트워크에있는 각 컴퓨터는 자체를 포함하여 모든 구성원에게 브로드 캐스팅 할 수 있어야합니다.Vagrant & VirtualBox에서 'socat'을 사용하여 멀티 캐스팅 Env

이것은 Vagrant & VirtualBox Envrionment에서 만든 VM을 사용하여 socat의 작동중인 멀티 캐스트를 얻으려고합니다. 상황이 다르게 작동하는 것 같아서 먼저 물리적 컴퓨터에서 작동하는 멀티 캐스트를 확인하려고했습니다.

우분투 12.04 서버가 설치된 물리적 시스템이 3 개 있으며 pc0, pc1pc2으로 명명되었습니다. 각 시스템에서

내가 실행 socat STDIO UDP-DATAGRAM:224.0.0.1:2200,bind=:2200

... 내가 pc0에서 hi from pc0를 입력 할 때, 그것은 자신과 다른 2 기계로 방송하고 이것이 내가 원하는 것을 (그리고 내가 희망이 얼마나 멀티 캐스트입니다) 작업을하기로 :이 모든 시스템에서 멀티 캐스트를 위해 기본적으로 사용되는 것과 IP 224.0.0.1을 사용하고

[email protected]:~$ socat STDIO UDP-DATAGRAM:224.0.0.1:2200,bind=:2200 
hi from pc0 
hi from pc0 

[email protected]:~$ socat STDIO UDP-DATAGRAM:224.0.0.1:2200,bind=:2200 
hi from pc0 

[email protected]:~$ socat STDIO UDP-DATAGRAM:224.0.0.1:2200,bind=:2200 
hi from pc0 

.

다음은 3 개의 VM (, vb1vb2)을 사용하여 동일한 항목을 구현하려고했습니다. Github 레포는 here입니다.

[email protected]:~$ socat STDIO UDP-DATAGRAM:224.0.0.1:2200,bind=:2200 
hello from vb0 
hello from vb0 

을 ... 그리고 그것은 그 자체를 제외하고 (위의 실제 머신의 경우와 같이) 다른 회원들에게 브로드 캐스트하지 않습니다

는 지금은 vb0에서 방송했습니다. 것 같다

Vagrantfile ... 추가 설정이 작업을하기 전에 수행해야합니다 있습니다 :

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 

답변

3

각 장치 (예 : vb01, vb1vb2)에서 실행 :

sudo ip route add 224.0.0.0/4 dev eth1

이 문제를 해결했습니다.

실제 환경에서는이 작업을 수행하지 않고 작동합니다. 가상 환경에서 이와 같이 실행해야하는 이유가 없습니다.

[email protected]:~$ 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 

는 IP 라우팅 명령이 필요한 이유를 http://troglobit.github.io/multicast-howto.html

+0

는 당신이 밖으로 찾을 수 있습니까 도움 참조? –

관련 문제