我正在尝试在Vagrant中设置最基本的networking桥接演示。 我有两台机器在同一个子网中,但在不同的局域网上,还有一台有两个接口的网桥和一个在configuration脚本中设置的网桥。
这是我的Vagrantfile :
$bridge_script = <<SCRIPT sudo apt-get update sudo apt-get install -y bridge-utils sudo brctl addbr br0 sudo brctl addif br0 eth1 eth2 sudo ifconfig br0 up SCRIPT Vagrant.configure(2) do |config| config.vm.define "machine1" do |machine1| machine1.vm.box = "hashicorp/precise64" machine1.vm.network "private_network", ip: "192.168.1.2", virtualbox__intnet: "lan1" end config.vm.define "bridge" do |bridge| bridge.vm.box = "hashicorp/precise64" bridge.vm.network "private_network", ip: "0.0.0.0", virtualbox__intnet: "lan1" bridge.vm.network "private_network", ip: "0.0.0.0", virtualbox__intnet: "lan2" bridge.vm.provision :shell, inline: $bridge_script end config.vm.define "machine2" do |machine2| machine2.vm.box = "hashicorp/precise64" machine2.vm.network "private_network", ip: "192.168.1.3", virtualbox__intnet: "lan2" end end
我无法让任何一台机器成功ping通其他机器。 使用tcpdump我发现一个ARP请求从machine1一直传递到machine2 ,但是当machine2响应时,响应甚至不会到达bridge上的eth2 。 (我只能在machine2上侦听eth1时看到ARP响应。
我怎样才能使这个工作?
事实certificate,默认情况下VirtualBox不会让你有混乱的网卡,你必须明确地启用它。
我将以下几行添加到bridge定义中,并开始工作:
bridge.vm.provider :virtualbox do |vb| vb.customize ["modifyvm", :id, "--nicpromisc2", "allow-all"] vb.customize ["modifyvm", :id, "--nicpromisc3", "allow-all"] end